AttendanceBookingReason.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. namespace App\Entity\Booking;
  3. use ApiPlatform\Metadata\ApiResource;
  4. use ApiPlatform\Metadata\Delete;
  5. use ApiPlatform\Metadata\Get;
  6. use ApiPlatform\Metadata\GetCollection;
  7. use ApiPlatform\Metadata\Post;
  8. use ApiPlatform\Metadata\Put;
  9. use App\Attribute\OrganizationDefaultValue;
  10. use App\Entity\Organization\Organization;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Doctrine\Common\Collections\Collection;
  13. use Doctrine\ORM\Mapping as ORM;
  14. /**
  15. * Motif d'absence ou de retard
  16. *
  17. * Security :
  18. *
  19. * @see \App\Doctrine\Education\AttendanceBookingReasonExtension.php
  20. */
  21. #[ApiResource(operations: [
  22. new Get(
  23. security: 'is_granted(\'ROLE_ORGANIZATION_VIEW\') and object.getOrganization().getId() == user.getOrganization().getId()'
  24. ),
  25. new Put(
  26. security: 'object.getOrganization().getId() == user.getOrganization().getId()'
  27. ),
  28. new Delete(
  29. security: 'object.getOrganization().getId() == user.getOrganization().getId()'
  30. ),
  31. new GetCollection(
  32. security: 'is_granted(\'ROLE_ORGANIZATION_VIEW\')'
  33. ),
  34. new Post()
  35. ])]
  36. //#[Auditable]
  37. #[ORM\Table(name: 'AttendanceBookingReason')]
  38. #[OrganizationDefaultValue(fieldName: "organization")]
  39. #[ORM\Entity]
  40. class AttendanceBookingReason
  41. {
  42. #[ORM\Id]
  43. #[ORM\Column]
  44. #[ORM\GeneratedValue]
  45. private ?int $id = null;
  46. #[ORM\ManyToOne(inversedBy: 'attendanceBookingReasons')]
  47. #[ORM\JoinColumn(nullable: false)]
  48. protected Organization $organization;
  49. #[ORM\Column(length: 255, nullable: false)]
  50. private string $reason;
  51. #[ORM\OneToMany(mappedBy: 'reason', targetEntity: AttendanceBooking::class, cascade: ['persist'], orphanRemoval: true)]
  52. private Collection $attendanceBookings;
  53. public function __construct()
  54. {
  55. $this->attendanceBookings = new ArrayCollection();
  56. }
  57. public function getId(): ?int
  58. {
  59. return $this->id;
  60. }
  61. public function setId(?int $id): self
  62. {
  63. $this->id = $id;
  64. return $this;
  65. }
  66. public function getOrganization(): Organization
  67. {
  68. return $this->organization;
  69. }
  70. public function setOrganization(?Organization $organization): self
  71. {
  72. $this->organization = $organization;
  73. return $this;
  74. }
  75. public function getReason(): string
  76. {
  77. return $this->reason;
  78. }
  79. public function setReason(string $reason): self
  80. {
  81. $this->reason = $reason;
  82. return $this;
  83. }
  84. public function getAttendanceBookings(): Collection
  85. {
  86. return $this->attendanceBookings;
  87. }
  88. public function addAttendanceBookings(AttendanceBooking $attendanceBooking): self
  89. {
  90. if (!$this->attendanceBookings->contains($attendanceBooking)) {
  91. $this->attendanceBookings[] = $attendanceBooking;
  92. $attendanceBooking->setReason($this);
  93. }
  94. return $this;
  95. }
  96. public function removeAttendanceBooking(AttendanceBooking $attendanceBooking): self
  97. {
  98. if ($this->attendanceBookings->removeElement($attendanceBooking)) {
  99. // set the owning side to null (unless already changed)
  100. if ($attendanceBooking->getReason() === $this) {
  101. $attendanceBooking->setReason(null);
  102. }
  103. }
  104. return $this;
  105. }
  106. }