Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

59 lines
1.8KB

  1. <?php
  2. namespace Lc\CaracoleBundle\Factory\Order;
  3. use App\Entity\Order\OrderShop;
  4. use Lc\CaracoleBundle\Event\Order\OrderShopChangeStatusEvent;
  5. use Lc\CaracoleBundle\Model\Merchant\MerchantInterface;
  6. use Lc\CaracoleBundle\Model\Order\OrderShopInterface;
  7. use Lc\CaracoleBundle\Model\Order\OrderStatusModel;
  8. use Lc\CaracoleBundle\Model\Section\SectionInterface;
  9. use Lc\CaracoleBundle\Model\User\VisitorInterface;
  10. use Lc\SovBundle\Factory\AbstractFactory;
  11. use Lc\SovBundle\Model\User\UserInterface;
  12. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  13. class OrderShopFactory extends AbstractFactory
  14. {
  15. protected EventDispatcherInterface $eventDispatcher;
  16. protected OrderStatusHistoryFactory $orderStatusHistoryFactory;
  17. public function __construct(
  18. EventDispatcherInterface $eventDispatcher,
  19. OrderStatusHistoryFactory $orderStatusHistoryFactory
  20. ) {
  21. $this->eventDispatcher = $eventDispatcher;
  22. $this->orderStatusHistoryFactory = $orderStatusHistoryFactory;
  23. }
  24. public function create(
  25. SectionInterface $section,
  26. UserInterface $user = null,
  27. VisitorInterface $visitor = null
  28. ): OrderShopInterface {
  29. $orderShop = new OrderShop();
  30. $orderShop->setSection($section);
  31. $orderShopBelongTo = false;
  32. if (!is_null($user)) {
  33. $orderShopBelongTo = true;
  34. $orderShop->setUser($user);
  35. }
  36. if (!is_null($visitor) && !$orderShop->getUser()) {
  37. $orderShopBelongTo = true;
  38. $orderShop->setVisitor($visitor);
  39. }
  40. if (!$orderShopBelongTo) {
  41. throw new \ErrorException('La commande doit être liée à un utilisateur ou à un visiteur.');
  42. }
  43. return $orderShop;
  44. }
  45. }