Organization.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity\Organization;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use App\Entity\Network\NetworkOrganization;
  6. use App\Repository\Organization\OrganizationRepository;
  7. use Doctrine\Common\Collections\ArrayCollection;
  8. use Doctrine\Common\Collections\Collection;
  9. use Doctrine\ORM\Mapping as ORM;
  10. /**
  11. * Structure, organisation
  12. *
  13. * @ApiResource(
  14. * collectionOperations={
  15. * "get"={"security"="is_granted('ROLE_ORGANIZATION')"},
  16. * "post"={"security"="is_granted('ROLE_ORGANIZATION_CREATE')"}
  17. * },
  18. * itemOperations={
  19. * "get"={"security"="is_granted('ROLE_ORGANIZATION_EDIT') and object.getId() == user.organization.getId()"},
  20. * "put"={"security"="is_granted('ROLE_ORGANIZATION_EDIT')"}
  21. * }
  22. * )
  23. * @ORM\Entity(repositoryClass=OrganizationRepository::class)
  24. */
  25. class Organization
  26. {
  27. /**
  28. * @ORM\Id
  29. * @ORM\GeneratedValue
  30. * @ORM\Column(type="integer")
  31. */
  32. private $id;
  33. /**
  34. * @ORM\Column(type="string", length=128)
  35. */
  36. private $name;
  37. /**
  38. * @ORM\Column(type="string", length=128)
  39. */
  40. private $identifier;
  41. /**
  42. * @ORM\Column(type="string", length=255, nullable=true)
  43. */
  44. private $legalStatus;
  45. /**
  46. * @ORM\Column(type="string", length=255, nullable=true)
  47. */
  48. private $principalType;
  49. /**
  50. * @ORM\OneToOne(targetEntity=Settings::class, mappedBy="organization", cascade={"persist", "remove"})
  51. */
  52. private $settings;
  53. /**
  54. * @ORM\OneToMany(targetEntity=NetworkOrganization::class, mappedBy="organization", orphanRemoval=true)
  55. */
  56. private $networkOrganizations;
  57. /**
  58. * @ORM\OneToMany(targetEntity=NetworkOrganization::class, mappedBy="parent")
  59. */
  60. private $networkOrganizationChildren;
  61. public function __construct()
  62. {
  63. $this->networkOrganizations = new ArrayCollection();
  64. $this->networkOrganizationChildren = new ArrayCollection();
  65. }
  66. public function getId(): ?int
  67. {
  68. return $this->id;
  69. }
  70. public function getName(): ?string
  71. {
  72. return $this->name;
  73. }
  74. public function setName(string $name): self
  75. {
  76. $this->name = $name;
  77. return $this;
  78. }
  79. public function getIdentifier(): ?string
  80. {
  81. return $this->identifier;
  82. }
  83. public function setIdentifier(string $identifier): self
  84. {
  85. $this->identifier = $identifier;
  86. return $this;
  87. }
  88. public function getLegalStatus(): ?string
  89. {
  90. return $this->legalStatus;
  91. }
  92. public function setLegalStatus(?string $legalStatus): self
  93. {
  94. $this->legalStatus = $legalStatus;
  95. return $this;
  96. }
  97. public function getPrincipalType(): ?string
  98. {
  99. return $this->principalType;
  100. }
  101. public function setPrincipalType(?string $principalType): self
  102. {
  103. $this->principalType = $principalType;
  104. return $this;
  105. }
  106. public function getSettings(): ?Settings
  107. {
  108. return $this->settings;
  109. }
  110. public function setSettings(Settings $settings): self
  111. {
  112. // set the owning side of the relation if necessary
  113. if ($settings->getOrganization() !== $this) {
  114. $settings->setOrganization($this);
  115. }
  116. $this->settings = $settings;
  117. return $this;
  118. }
  119. /**
  120. * @return Collection|NetworkOrganization[]
  121. */
  122. public function getNetworkOrganizations(): Collection
  123. {
  124. return $this->networkOrganizations;
  125. }
  126. public function addNetworkOrganization(NetworkOrganization $networkOrganization): self
  127. {
  128. if (!$this->networkOrganizations->contains($networkOrganization)) {
  129. $this->networkOrganizations[] = $networkOrganization;
  130. $networkOrganization->setOrganization($this);
  131. }
  132. return $this;
  133. }
  134. public function removeNetworkOrganization(NetworkOrganization $networkOrganization): self
  135. {
  136. if ($this->networkOrganizations->removeElement($networkOrganization)) {
  137. // set the owning side to null (unless already changed)
  138. if ($networkOrganization->getOrganization() === $this) {
  139. $networkOrganization->setOrganization(null);
  140. }
  141. }
  142. return $this;
  143. }
  144. /**
  145. * @return Collection|NetworkOrganization[]
  146. */
  147. public function getNetworkOrganizationChildren(): Collection
  148. {
  149. return $this->networkOrganizationChildren;
  150. }
  151. public function addNetworkOrganizationChild(NetworkOrganization $networkOrganizationChild): self
  152. {
  153. if (!$this->networkOrganizationChildren->contains($networkOrganizationChild)) {
  154. $this->networkOrganizationChildren[] = $networkOrganizationChild;
  155. $networkOrganizationChild->setParent($this);
  156. }
  157. return $this;
  158. }
  159. public function removeNetworkOrganizationChild(NetworkOrganization $networkOrganizationChild): self
  160. {
  161. if ($this->networkOrganizationChildren->removeElement($networkOrganizationChild)) {
  162. // set the owning side to null (unless already changed)
  163. if ($networkOrganizationChild->getParent() === $this) {
  164. $networkOrganizationChild->setParent(null);
  165. }
  166. }
  167. return $this;
  168. }
  169. }