|
- <?php
-
- namespace Lc\CaracoleBundle\Factory\Order;
-
- use Lc\CaracoleBundle\Container\Order\OrderShopContainer;
- use Lc\CaracoleBundle\Model\Order\OrderShopInterface;
- use Lc\CaracoleBundle\Model\Section\SectionInterface;
- use Lc\CaracoleBundle\Model\User\VisitorInterface;
- use Lc\SovBundle\Factory\AbstractFactory;
- use Lc\SovBundle\Model\User\UserInterface;
-
- class OrderShopFactory extends AbstractFactory
- {
-
- public function create(
- SectionInterface $section,
- UserInterface $user = null,
- VisitorInterface $visitor = null
- ): OrderShopInterface
- {
- $orderShop = $this->createBase($section);
- $orderShopBelongTo = false;
-
- if (!is_null($user)) {
- $orderShopBelongTo = true;
- $orderShop->setUser($user);
- }
-
- if (!is_null($visitor) && !$orderShop->getUser()) {
- $orderShopBelongTo = true;
- $orderShop->setVisitor($visitor);
- }
-
- if (!$orderShopBelongTo) {
- /*
- * @TODO : lors de la première visite, le cookie visitor n'étant pas encore sur le navigateur du visiteur,
- * visitor et user sont à null. Du coup, on ne peut pas déclencher cette exception. Voir s'il n'est pas
- * possible d'avoir directement un visitor lors de la première visite.
- */
- // throw new \ErrorException('La commande doit être liée à un utilisateur ou à un visiteur.');
- }
-
- return $orderShop;
- }
-
- public function createBase(SectionInterface $section): OrderShopInterface
- {
- $class = OrderShopContainer::getEntityFqcn();
- $orderShop = new $class;
- $orderShop->setSection($section);
- return $orderShop;
- }
-
- }
|