src/App/Entity/ProfileBlock.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\ExternalPartner\IntegratedExternalPartnerCustomer;
  4. use App\Entity\Profile\JoboffererProfile;
  5. use App\Entity\Profile\JobseekerProfile;
  6. use App\Utility\GuidUtility;
  7. use DateTime;
  8. use Doctrine\ORM\Mapping as ORM;
  9. /**
  10. * @ORM\Entity
  11. *
  12. * @ORM\Table(
  13. * name="profile_blocks",
  14. * uniqueConstraints={
  15. *
  16. * @ORM\UniqueConstraint(name="jobseeker_profiles_id_jobofferer_profiles_id_blocker_unique_idx", columns={"jobseeker_profiles_id", "jobofferer_profiles_id", "blocker"})
  17. * },
  18. * indexes={
  19. *
  20. * @ORM\Index(name="idx_jobseeker_profiles_id", columns={"jobseeker_profiles_id"}),
  21. * @ORM\Index(name="idx_jobofferer_profiles_id", columns={"jobofferer_profiles_id"}),
  22. * @ORM\Index(name="idx_integrated_external_partner_customers_id", columns={"integrated_external_partner_customers_id"})
  23. * }
  24. * )
  25. *
  26. * The unique constraint ensures only one block from a jobseeker to a jobofferer or vice versa.
  27. */
  28. class ProfileBlock
  29. {
  30. public const BLOCKER_JOBSEEKER = 0;
  31. public const BLOCKER_JOBOFFERER = 1;
  32. /**
  33. * @var string
  34. *
  35. * @ORM\GeneratedValue(strategy="CUSTOM")
  36. *
  37. * @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
  38. *
  39. * @ORM\Column(name="id", type="guid")
  40. *
  41. * @ORM\Id
  42. */
  43. protected $id;
  44. /**
  45. * @var JobseekerProfile
  46. *
  47. * @ORM\ManyToOne(targetEntity="App\Entity\Profile\JobseekerProfile", inversedBy="profileBlocks", cascade={"persist"})
  48. *
  49. * @ORM\JoinColumn(name="jobseeker_profiles_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
  50. */
  51. protected $jobseekerProfile;
  52. /**
  53. * @var JoboffererProfile
  54. *
  55. * @ORM\ManyToOne(targetEntity="App\Entity\Profile\JoboffererProfile", inversedBy="profileBlocks", cascade={"persist"})
  56. *
  57. * @ORM\JoinColumn(name="jobofferer_profiles_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
  58. */
  59. protected $joboffererProfile;
  60. /**
  61. * @var int
  62. *
  63. * @ORM\Column(name="blocker", type="smallint", nullable=false)
  64. */
  65. protected $blocker;
  66. /**
  67. * @var DateTime
  68. *
  69. * @ORM\Column(name="created_at", type="datetime", nullable=false)
  70. */
  71. protected $createdAt;
  72. /**
  73. * @var IntegratedExternalPartnerCustomer
  74. *
  75. * @ORM\ManyToOne(targetEntity="App\Entity\ExternalPartner\IntegratedExternalPartnerCustomer", inversedBy="profileBlocks", cascade={"persist"})
  76. *
  77. * @ORM\JoinColumn(name="integrated_external_partner_customers_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
  78. */
  79. protected $integratedExternalPartnerCustomer;
  80. public function isBlocker(Profile $profile)
  81. {
  82. if (($this->blocker === self::BLOCKER_JOBSEEKER
  83. && $profile instanceof JobseekerProfile
  84. && $profile->getId() === $this->getJobseekerProfile()->getId())
  85. || ($this->blocker === self::BLOCKER_JOBOFFERER
  86. && $profile instanceof JoboffererProfile
  87. && $profile->getId() === $this->getJoboffererProfile()->getId())
  88. ) {
  89. return true;
  90. } else {
  91. return false;
  92. }
  93. }
  94. public function getId()
  95. {
  96. return $this->id;
  97. }
  98. public function setId(string $id)
  99. {
  100. GuidUtility::validOrThrow($id);
  101. $this->id = $id;
  102. }
  103. /**
  104. * @return JobseekerProfile
  105. */
  106. public function getJobseekerProfile()
  107. {
  108. return $this->jobseekerProfile;
  109. }
  110. public function setJobseekerProfile(JobseekerProfile $jobseekerProfile)
  111. {
  112. $this->jobseekerProfile = $jobseekerProfile;
  113. }
  114. public function getJoboffererProfile(): ?JoboffererProfile
  115. {
  116. return $this->joboffererProfile;
  117. }
  118. public function setJoboffererProfile(?JoboffererProfile $joboffererProfile)
  119. {
  120. $this->joboffererProfile = $joboffererProfile;
  121. }
  122. public function getIntegratedExternalPartnerCustomer(): ?IntegratedExternalPartnerCustomer
  123. {
  124. return $this->integratedExternalPartnerCustomer;
  125. }
  126. public function setIntegratedExternalPartnerCustomer(?IntegratedExternalPartnerCustomer $integratedExternalPartnerCustomer)
  127. {
  128. $this->integratedExternalPartnerCustomer = $integratedExternalPartnerCustomer;
  129. }
  130. /**
  131. * @return int
  132. */
  133. public function getBlocker()
  134. {
  135. return $this->blocker;
  136. }
  137. public function setBlocker(int $blocker)
  138. {
  139. $this->blocker = $blocker;
  140. }
  141. /**
  142. * @return DateTime
  143. */
  144. public function getCreatedAt()
  145. {
  146. return $this->createdAt;
  147. }
  148. public function setCreatedAt(DateTime $createdAt)
  149. {
  150. $this->createdAt = $createdAt;
  151. }
  152. public function __toString()
  153. {
  154. return $this->getId();
  155. }
  156. }