src/Entity/Gos/CancellationQuestionChoice.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Gos;
  3. use App\Repository\Gos\CancellationQuestionChoiceRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. /**
  8.  * @ORM\Entity(repositoryClass=CancellationQuestionChoiceRepository::class)
  9.  */
  10. class CancellationQuestionChoice
  11. {
  12.     /**
  13.      * @ORM\Id
  14.      * @ORM\GeneratedValue
  15.      * @ORM\Column(type="integer")
  16.      */
  17.     private $id;
  18.     /**
  19.      * @ORM\Column(type="string", length=255)
  20.      */
  21.     private $name;
  22.     /**
  23.      * @ORM\ManyToOne(targetEntity=CancellationQuestion::class, inversedBy="cancellationQuestionChoices")
  24.      * @ORM\JoinColumn(nullable=false)
  25.      */
  26.     private $cancellationQuestion;
  27.     /**
  28.      * @ORM\OneToMany(targetEntity=CancellationQuestion::class, mappedBy="parentCancellationQuestionChoice")
  29.      */
  30.     private $cancellationSubquestions;
  31.     /**
  32.      * @ORM\Column(type="array", nullable=true)
  33.      */
  34.     private $specificProductTypeNames = [];
  35.     /**
  36.      * @ORM\Column(type="array", nullable=true)
  37.      */
  38.     private $specificProductTypesVisibility = [];
  39.     /**
  40.      * @ORM\Column(type="integer")
  41.      */
  42.     private $position;
  43.     /**
  44.      * @ORM\Column(type="string", length=255, nullable=true)
  45.      */
  46.     private $subquestionInfo;
  47.     /**
  48.      * @ORM\OneToMany(targetEntity=CancellationQuestion::class, mappedBy="additionalQuestionForChoice")
  49.      */
  50.     private $additionalCancellationQuestions;
  51.     /**
  52.      * @ORM\ManyToOne(targetEntity=CancellationEmailContent::class, cascade={"persist", "remove"})
  53.      */
  54.     private $cancellationEmailContent;
  55.     /**
  56.      * @ORM\ManyToOne(targetEntity=CancellationQuestionChoiceAction::class, cascade={"persist", "remove"})
  57.      */
  58.     private $cancellationQuestionChoiceAction;
  59.     public function __construct()
  60.     {
  61.         $this->cancellationSubquestions = new ArrayCollection();
  62.         $this->additionalCancellationQuestions = new ArrayCollection();
  63.     }
  64.     public function getId(): ?int
  65.     {
  66.         return $this->id;
  67.     }
  68.     public function getName(): ?string
  69.     {
  70.         return $this->name;
  71.     }
  72.     public function setName(?string $name): self
  73.     {
  74.         $this->name $name;
  75.         return $this;
  76.     }
  77.     public function getCancellationQuestion(): ?CancellationQuestion
  78.     {
  79.         return $this->cancellationQuestion;
  80.     }
  81.     public function setCancellationQuestion(?CancellationQuestion $cancellationQuestion): self
  82.     {
  83.         $this->cancellationQuestion $cancellationQuestion;
  84.         if ($cancellationQuestion !== null) {
  85.             $position $cancellationQuestion->getCancellationQuestionChoices()->count() + 1;
  86.             $this->setPosition($position);
  87.         }
  88.         return $this;
  89.     }
  90.     /**
  91.      * @return Collection|CancellationQuestion[]
  92.      */
  93.     public function getCancellationSubquestions(): Collection
  94.     {
  95.         return $this->cancellationSubquestions;
  96.     }
  97.     /**
  98.      * @return CancellationQuestion[]
  99.      */
  100.     public function getSortedCancellationSubquestions(): array
  101.     {
  102.         $questions $this->getCancellationSubquestions()->toArray();
  103.         usort($questions, static function($a$b) {
  104.             return $a->getPosition() <=> $b->getPosition();
  105.         });
  106.         return $questions;
  107.     }
  108.     public function addCancellationSubquestion(CancellationQuestion $cancellationSubquestion): self
  109.     {
  110.         if (!$this->cancellationSubquestions->contains($cancellationSubquestion)) {
  111.             $this->cancellationSubquestions[] = $cancellationSubquestion;
  112.             $cancellationSubquestion->setParentCancellationQuestionChoice($this);
  113.         }
  114.         return $this;
  115.     }
  116.     public function removeCancellationSubquestion(CancellationQuestion $cancellationSubquestion): self
  117.     {
  118.         if ($this->cancellationSubquestions->contains($cancellationSubquestion)) {
  119.             $this->cancellationSubquestions->removeElement($cancellationSubquestion);
  120.             // set the owning side to null (unless already changed)
  121.             if ($cancellationSubquestion->getParentCancellationQuestionChoice() === $this) {
  122.                 $cancellationSubquestion->setParentCancellationQuestionChoice(null);
  123.             }
  124.         }
  125.         return $this;
  126.     }
  127.     public function getCancellationForm(): CancellationForm
  128.     {
  129.         return
  130.             $this->getCancellationQuestion()->getCancellationForm() ??
  131.             ($this->getCancellationQuestion()->getParentCancellationQuestionChoice() ?
  132.                 $this->getCancellationQuestion()->getParentCancellationQuestionChoice()->getCancellationForm() :
  133.                 $this->getCancellationQuestion()->getAdditionalQuestionForChoice()->getCancellationForm()
  134.             );
  135.     }
  136.     public function getSpecificProductTypeNames(): ?array
  137.     {
  138.         return $this->specificProductTypeNames;
  139.     }
  140.     public function setSpecificProductTypeNames(?array $specificProductTypeNames): self
  141.     {
  142.         $this->specificProductTypeNames $specificProductTypeNames;
  143.         return $this;
  144.     }
  145.     public function getBaseCancellationForm(): ?CancellationForm
  146.     {
  147.         return $this->getCancellationQuestion()->getBaseCancellationForm();
  148.     }
  149.     public function getTreeArrayInfo(array $infoArray = []): array
  150.     {
  151.         $infoArray[] = 'Opcja '$this->getName();
  152.         return $this->getCancellationQuestion()->getTreeArrayInfo($infoArray);
  153.     }
  154.     public function getSpecificProductTypesVisibility(): ?array
  155.     {
  156.         return $this->specificProductTypesVisibility;
  157.     }
  158.     public function setSpecificProductTypesVisibility(?array $specificProductTypesVisibility): self
  159.     {
  160.         $this->specificProductTypesVisibility $specificProductTypesVisibility;
  161.         return $this;
  162.     }
  163.     public function getPosition(): ?int
  164.     {
  165.         return $this->position;
  166.     }
  167.     public function setPosition(int $position): self
  168.     {
  169.         $this->position $position;
  170.         return $this;
  171.     }
  172.     public function getSubquestionInfo(): ?string
  173.     {
  174.         return $this->subquestionInfo;
  175.     }
  176.     public function setSubquestionInfo(?string $subquestionInfo): self
  177.     {
  178.         $this->subquestionInfo $subquestionInfo;
  179.         return $this;
  180.     }
  181.     /**
  182.      * @return Collection|CancellationQuestion[]
  183.      */
  184.     public function getAdditionalCancellationQuestions(): Collection
  185.     {
  186.         return $this->additionalCancellationQuestions;
  187.     }
  188.     /**
  189.      * @return CancellationQuestion[]
  190.      */
  191.     public function getSortedAdditionalCancellationQuestions(): array
  192.     {
  193.         $questions $this->getAdditionalCancellationQuestions()->toArray();
  194.         usort($questions, static function($a$b) {
  195.             return $a->getPosition() <=> $b->getPosition();
  196.         });
  197.         return $questions;
  198.     }
  199.     public function addAdditionalCancellationQuestion(CancellationQuestion $additionalCancellationQuestion): self
  200.     {
  201.         if (!$this->additionalCancellationQuestions->contains($additionalCancellationQuestion)) {
  202.             $this->additionalCancellationQuestions[] = $additionalCancellationQuestion;
  203.             $additionalCancellationQuestion->setAdditionalQuestionForChoice($this);
  204.         }
  205.         return $this;
  206.     }
  207.     public function removeAdditionalCancellationQuestion(CancellationQuestion $additionalCancellationQuestion): self
  208.     {
  209.         if ($this->additionalCancellationQuestions->contains($additionalCancellationQuestion)) {
  210.             $this->additionalCancellationQuestions->removeElement($additionalCancellationQuestion);
  211.             // set the owning side to null (unless already changed)
  212.             if ($additionalCancellationQuestion->getAdditionalQuestionForChoice() === $this) {
  213.                 $additionalCancellationQuestion->setAdditionalQuestionForChoice(null);
  214.             }
  215.         }
  216.         return $this;
  217.     }
  218.     public function getCancellationEmailContent(): ?CancellationEmailContent
  219.     {
  220.         return $this->cancellationEmailContent;
  221.     }
  222.     public function setCancellationEmailContent(?CancellationEmailContent $cancellationEmailContent): self
  223.     {
  224.         $this->cancellationEmailContent $cancellationEmailContent;
  225.         return $this;
  226.     }
  227.     public function getCancellationQuestionChoiceAction(): ?CancellationQuestionChoiceAction
  228.     {
  229.         return $this->cancellationQuestionChoiceAction;
  230.     }
  231.     public function setCancellationQuestionChoiceAction(?CancellationQuestionChoiceAction $cancellationQuestionChoiceAction): self
  232.     {
  233.         $this->cancellationQuestionChoiceAction $cancellationQuestionChoiceAction;
  234.         return $this;
  235.     }
  236. }