You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.2KB

  1. <?php
  2. namespace domain\Product\Rotating;
  3. use domain\_\AbstractBuilder;
  4. use domain\_\StatusInterface;
  5. use domain\Producer\Producer\Producer;
  6. use domain\Product\RotatingProduct\RotatingProductRepository;
  7. class RotatingBuilder extends AbstractBuilder
  8. {
  9. protected RotatingProductRepository $rotatingProductRepository;
  10. public function loadDependencies(): void
  11. {
  12. $this->rotatingProductRepository = $this->loadService(RotatingProductRepository::class);
  13. }
  14. public function instanciateRotating(Producer $producer): Rotating
  15. {
  16. $rotating = new Rotating();
  17. $rotating->setProducer($producer);
  18. $rotating->setStatus(StatusInterface::STATUS_ONLINE);
  19. return $rotating;
  20. }
  21. public function initSelectedProductsIds(Rotating $rotating): void
  22. {
  23. $selectedProductsIdsArray = [];
  24. $rotatingProductsArray = $this->rotatingProductRepository->findRotatingProductsByRotating($rotating);
  25. foreach($rotatingProductsArray as $rotatingProduct) {
  26. $selectedProductsIdsArray[] = $rotatingProduct->getProduct()->id;
  27. }
  28. $rotating->setSelectedProductsIds($selectedProductsIdsArray);
  29. }
  30. }