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.

49 lines
1.8KB

  1. <?php
  2. namespace domain\Distribution\DistributionRotating;
  3. use domain\_\AbstractManager;
  4. use domain\Distribution\Distribution\Distribution;
  5. use domain\Product\RotatingProduct\RotatingProduct;
  6. class DistributionRotatingManager extends AbstractManager
  7. {
  8. protected DistributionRotatingBuilder $distributionRotatingBuilder;
  9. protected DistributionRotatingRepository $distributionRotatingRepository;
  10. public function loadDependencies(): void
  11. {
  12. $this->distributionRotatingBuilder = $this->loadService(DistributionRotatingBuilder::class);
  13. $this->distributionRotatingRepository = $this->loadService(DistributionRotatingRepository::class);
  14. }
  15. public function createDistributionRotating(Distribution $distribution, RotatingProduct $rotatingProduct): DistributionRotating
  16. {
  17. $distributionRotating = $this->distributionRotatingBuilder->instanciateDistributionRotating();
  18. $distributionRotating
  19. ->setDistribution($distribution)
  20. ->setRotating($rotatingProduct->getRotating())
  21. ->setRotatingProduct($rotatingProduct);
  22. $distributionRotating->save();
  23. return $distributionRotating;
  24. }
  25. public function createDistributionRotatingIfNotExist(Distribution $distribution, RotatingProduct $rotatingProduct): DistributionRotating
  26. {
  27. $distributionRotating = $this->distributionRotatingRepository->findOneDistributionRotating(
  28. $distribution,
  29. $rotatingProduct->getRotating()
  30. );
  31. if($distributionRotating) {
  32. $distributionRotating->setRotatingProduct($rotatingProduct);
  33. $distributionRotating->save();
  34. return $distributionRotating;
  35. }
  36. else {
  37. return $this->createDistributionRotating($distribution, $rotatingProduct);
  38. }
  39. }
  40. }