Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

58 lines
1.8KB

  1. <?php
  2. namespace common\logic\Feature\FeatureProducer\Service;
  3. use common\logic\AbstractBuilder;
  4. use common\logic\Feature\Feature\Model\Feature;
  5. use common\logic\Feature\FeatureProducer\Model\FeatureProducer;
  6. use common\logic\Feature\FeatureProducer\Repository\FeatureProducerRepository;
  7. use common\logic\Producer\Producer\Model\Producer;
  8. class FeatureProducerBuilder extends AbstractBuilder
  9. {
  10. protected FeatureProducerRepository $featureProducerRepository;
  11. public function loadDependencies(): void
  12. {
  13. $this->featureProducerRepository = $this->loadService(FeatureProducerRepository::class);
  14. }
  15. public function instanciateFeatureProducer(
  16. Feature $feature,
  17. bool $status = null
  18. ): FeatureProducer
  19. {
  20. $featureProducer = new FeatureProducer();
  21. $featureProducer->populateFeature($feature);
  22. $featureProducer->populateProducer($this->getProducerContext());
  23. $featureProducer->status = $status;
  24. return $featureProducer;
  25. }
  26. public function createFeatureProducer(
  27. Feature $feature,
  28. bool $status = null
  29. ): FeatureProducer
  30. {
  31. $featureProducer = $this->featureProducerRepository->findOneFeatureProducer($feature);
  32. if(!$featureProducer) {
  33. $featureProducer = $this->instanciateFeatureProducer($feature, $status);
  34. $this->create($featureProducer);
  35. }
  36. return $featureProducer;
  37. }
  38. public function updateStatus(FeatureProducer $featureProducer, bool $status = null)
  39. {
  40. $featureProducer->status = $status;
  41. $this->update($featureProducer);
  42. }
  43. public function updateStatusByFeature(Feature $feature, bool $status = null)
  44. {
  45. $featureProducer = $this->createFeatureProducer($feature, $status);
  46. $this->updateStatus($featureProducer, $status);
  47. }
  48. }