src/JanusHercules/ExtendedApplicationQuestionnaire/Domain/Entity/ExtendedApplicationQuestion.php line 16

Open in your IDE?
  1. <?php
  2. namespace JanusHercules\ExtendedApplicationQuestionnaire\Domain\Entity;
  3. use App\Utility\DatabaseIdGenerator;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use JanusHercules\ExtendedApplicationQuestionnaire\Domain\Enum\ExtendedApplicationQuestionnaireQuestionType;
  9. #[ORM\Entity]
  10. #[ORM\Table(
  11. name: 'extended_application_questions'
  12. )]
  13. class ExtendedApplicationQuestion
  14. {
  15. public function __construct(
  16. int $questionNumber,
  17. string $questionText,
  18. bool $isActive,
  19. bool $isOptional,
  20. ExtendedApplicationQuestionnaireQuestionType $questionType
  21. ) {
  22. $this->questionNumber = $questionNumber;
  23. $this->questionText = $questionText;
  24. $this->isActive = $isActive;
  25. $this->isOptional = $isOptional;
  26. $this->questionType = $questionType;
  27. $this->extendedApplicationCustomerQuestionTemplates = new ArrayCollection();
  28. $this->extendedApplicationQuestionAnswers = new ArrayCollection();
  29. $this->extendedApplicationQuestionSelectableAnswers = new ArrayCollection();
  30. }
  31. #[ORM\Id]
  32. #[ORM\GeneratedValue(strategy: 'CUSTOM')]
  33. #[ORM\CustomIdGenerator(class: DatabaseIdGenerator::class)]
  34. #[ORM\Column(
  35. type: Types::GUID,
  36. unique: true
  37. )]
  38. private ?string $id = null;
  39. public function getId(): ?string
  40. {
  41. return $this->id;
  42. }
  43. #[ORM\Column(
  44. type: Types::INTEGER,
  45. nullable: false
  46. )]
  47. private int $questionNumber;
  48. public function getQuestionNumber(): int
  49. {
  50. return $this->questionNumber;
  51. }
  52. public function setQuestionNumber(int $questionNumber): void
  53. {
  54. $this->questionNumber = $questionNumber;
  55. }
  56. #[ORM\Column(
  57. type: Types::TEXT,
  58. nullable: false
  59. )]
  60. private string $questionText;
  61. public function getQuestionText(): string
  62. {
  63. return $this->questionText;
  64. }
  65. public function setQuestionText(string $questionText): void
  66. {
  67. $this->questionText = $questionText;
  68. }
  69. #[ORM\Column(
  70. type: Types::BOOLEAN,
  71. nullable: false
  72. )]
  73. private bool $isActive;
  74. public function isActive(): bool
  75. {
  76. return $this->isActive;
  77. }
  78. public function setIsActive(bool $isActive): void
  79. {
  80. $this->isActive = $isActive;
  81. }
  82. #[ORM\Column(
  83. type: Types::BOOLEAN,
  84. nullable: false
  85. )]
  86. private bool $isOptional;
  87. public function isOptional(): bool
  88. {
  89. return $this->isOptional;
  90. }
  91. public function setIsOptional(bool $isOptional): void
  92. {
  93. $this->isOptional = $isOptional;
  94. }
  95. #[ORM\Column(
  96. type: Types::INTEGER,
  97. nullable: false,
  98. enumType: ExtendedApplicationQuestionnaireQuestionType::class
  99. )]
  100. private ExtendedApplicationQuestionnaireQuestionType $questionType;
  101. public function getQuestionType(): ExtendedApplicationQuestionnaireQuestionType
  102. {
  103. return $this->questionType;
  104. }
  105. public function setQuestionType(ExtendedApplicationQuestionnaireQuestionType $questionType): void
  106. {
  107. $this->questionType = $questionType;
  108. }
  109. /**
  110. * @var Collection<int, ExtendedApplicationCustomerQuestionTemplate> $extendedApplicationCustomerQuestionTemplates
  111. */
  112. #[ORM\OneToMany(
  113. mappedBy: 'extendedApplicationQuestion',
  114. targetEntity: ExtendedApplicationCustomerQuestionTemplate::class,
  115. cascade: ['persist']
  116. )]
  117. private Collection $extendedApplicationCustomerQuestionTemplates;
  118. /**
  119. * @return Collection<int, ExtendedApplicationCustomerQuestionTemplate>
  120. */
  121. public function getExtendedApplicationCustomerQuestionTemplates(): Collection
  122. {
  123. return $this->extendedApplicationCustomerQuestionTemplates;
  124. }
  125. public function addExtendedApplicationCustomerQuestionTemplate(ExtendedApplicationCustomerQuestionTemplate $questionTemplate): void
  126. {
  127. $this->extendedApplicationCustomerQuestionTemplates->add($questionTemplate);
  128. }
  129. /**
  130. * @var Collection<int, ExtendedApplicationQuestionAnswer> $extendedApplicationQuestionAnswers
  131. */
  132. #[ORM\OneToMany(
  133. mappedBy: 'extendedApplicationQuestion',
  134. targetEntity: ExtendedApplicationQuestionAnswer::class,
  135. cascade: ['persist']
  136. )]
  137. private Collection $extendedApplicationQuestionAnswers;
  138. /**
  139. * @return Collection<int, ExtendedApplicationQuestionAnswer>
  140. */
  141. public function getExtendedApplicationQuestionAnswers(): Collection
  142. {
  143. return $this->extendedApplicationQuestionAnswers;
  144. }
  145. /**
  146. * @var Collection<int, ExtendedApplicationQuestionSelectableAnswer> $extendedApplicationQuestionSelectableAnswers
  147. */
  148. #[ORM\OneToMany(
  149. mappedBy: 'extendedApplicationQuestion',
  150. targetEntity: ExtendedApplicationQuestionSelectableAnswer::class,
  151. cascade: ['persist', 'remove']
  152. )]
  153. private Collection $extendedApplicationQuestionSelectableAnswers;
  154. /**
  155. * @return Collection<int, ExtendedApplicationQuestionSelectableAnswer>
  156. */
  157. public function getExtendedApplicationQuestionSelectableAnswers(): Collection
  158. {
  159. return $this->extendedApplicationQuestionSelectableAnswers;
  160. }
  161. /** @param Collection<int, ExtendedApplicationQuestionSelectableAnswer> $selectableAnswers */
  162. public function setExtendedApplicationQuestionSelectableAnswers(Collection $selectableAnswers): void
  163. {
  164. $this->extendedApplicationQuestionSelectableAnswers = $selectableAnswers;
  165. }
  166. public function addExtendedApplicationQuestionSelectableAnswer(ExtendedApplicationQuestionSelectableAnswer $selectableAnswer): void
  167. {
  168. $this->extendedApplicationQuestionSelectableAnswers->add($selectableAnswer);
  169. }
  170. public function removeExtendedApplicationQuestionSelectableAnswer(ExtendedApplicationQuestionSelectableAnswer $selectableAnswer): void
  171. {
  172. $this->extendedApplicationQuestionSelectableAnswers->removeElement($selectableAnswer);
  173. }
  174. }