<?phpnamespace App\Entity;use App\Entity\Traits\TimeStampable;use App\Repository\PaoRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\Mapping as ORM;use Symfony\Component\Serializer\Annotation\Groups;use App\Validator as CustomAssert;use Symfony\Component\Validator\Constraints as Assert;#[ORM\Entity(repositoryClass: PaoRepository::class)]#[CustomAssert\UniqueStructureAndYear]#[ORM\HasLifecycleCallbacks]class Pao{ use TimeStampable; #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] #[Groups(["entity:write", "entity:read"])] private ?int $id = null; #[ORM\Column(length: 255)] #[Groups(["entity:write", "entity:read"])] #[Assert\NotBlank(message:"Veuillez remplir ce champ")] private ?string $titre = null; #[ORM\ManyToOne(inversedBy: 'paos')] #[Groups(["entity:write"])] #[Assert\NotBlank(message:"Veuillez remplir ce champ")] private ?Structure $structure = null; #[ORM\Column(nullable: true)] #[Groups(["entity:write"])] private ?int $status = null; #[ORM\Column(length: 255)] #[Groups(["entity:write", "entity:read"])] #[Assert\NotBlank(message:"Veuillez remplir ce champ")] private ?string $year = null; #[Groups(["entity:read"])] #[ORM\OneToMany(mappedBy: 'pao', targetEntity: Objectif::class, cascade:['persist', 'remove'])] private Collection $objectifs; #[ORM\ManyToOne(inversedBy: 'paos')] private ?User $createdBy = null; public function __construct() { $this->createdAt = new \DateTimeImmutable(); $this->updatedAt = new \DateTimeImmutable(); $this->status = 1; $this->objectifs = new ArrayCollection(); } public function getId(): ?int { return $this->id; } public function getTitre(): ?string { return $this->titre; } public function setTitre(?string $titre): static { $this->titre = $titre; return $this; } public function getStructure(): ?Structure { return $this->structure; } public function setStructure(?Structure $structure): static { $this->structure = $structure; return $this; } public function getStatus(): ?int { return $this->status; } public function setStatus(int $status): static { $this->status = $status; return $this; } public function status(): string { if($this->status == 1) { return 'En cours'; }elseif($this->status == 2) { return 'Terminer'; } else { return ''; } } public function getYear(): ?string { return $this->year; } public function setYear(string $year): static { $this->year = $year; return $this; } /** * @return Collection<int, Objectif> */ public function getObjectifs(): Collection { return $this->objectifs; } public function addObjectif(Objectif $objectif): static { if (!$this->objectifs->contains($objectif)) { $this->objectifs->add($objectif); $objectif->setPao($this); } return $this; } public function removeObjectif(Objectif $objectif): static { if ($this->objectifs->removeElement($objectif)) { // set the owning side to null (unless already changed) if ($objectif->getPao() === $this) { $objectif->setPao(null); } } return $this; } public function getCountObjetifsByType(TypeObjectif $typeObjectif): int { $countObjectifs = 0; foreach ($this->objectifs as $objectif) { if($objectif->getTypeObjectif() == $typeObjectif) { $countObjectifs = $countObjectifs + 1; } } return $countObjectifs; } public function __tostring() { return $this->titre; } public function getCreatedBy(): ?User { return $this->createdBy; } public function setCreatedBy(?User $createdBy): static { $this->createdBy = $createdBy; return $this; }}