src/Entity/Objectif.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Traits\TimeStampable;
  4. use App\Repository\ObjectifRepository;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\DBAL\Types\Types;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Symfony\Component\Serializer\Annotation\Groups;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. #[ORM\Entity(repositoryClass: ObjectifRepository::class)]
  12. #[ORM\HasLifecycleCallbacks]
  13. class Objectif
  14. {
  15.     use TimeStampable;
  16.     #[ORM\Id]
  17.     #[ORM\GeneratedValue]
  18.     #[ORM\Column]
  19.     #[Groups(['objectif:read', 'entity:write', 'entity:read'])]
  20.     private ?int $id = null;
  21.     #[ORM\Column(length: 255)]
  22.     #[Groups(['objectif:read', 'entity:write', 'entity:read'])]
  23.     private ?string $code = null;
  24.     #[ORM\ManyToOne(inversedBy: 'objectifs')]
  25.     #[Groups(['objectif:read'])]
  26.     #[Assert\NotBlank(message: "Veuillez remplir ce champ")]
  27.     private ?TypeObjectif $typeObjectif = null;
  28.     #[ORM\Column(type: Types::TEXT, nullable: true)]
  29.     #[Groups(['objectif:read', 'entity:write', 'entity:read'])]
  30.     #[Assert\NotBlank(message: "Veuillez remplir ce champ")]
  31.     private ?string $description = null;
  32.     #[ORM\ManyToOne(inversedBy: 'objectifs')]
  33.     #[Groups(['entity:write'])]
  34.     private ?Pao $pao = null;
  35.     #[ORM\OneToMany(mappedBy: 'objectif', targetEntity: Activity::class, cascade: ['persist', 'remove'])]
  36.     #[Groups(['objectif:read'])]
  37.     private Collection $activities;
  38.     #[ORM\Column]
  39.     private ?int $status = null;
  40.     #[ORM\ManyToOne(inversedBy: 'objectifs')]
  41.     private ?User $createdBy = null;
  42.     #[ORM\OneToOne(mappedBy: 'objectif', cascade: ['persist', 'remove'])]
  43.     private ?Evaluation $evaluation = null;
  44.     public function __construct()
  45.     {
  46.         $this->createdAt = new \DateTimeImmutable();
  47.         $this->activities = new ArrayCollection();
  48.         $this->status = 1;
  49.     }
  50.     public function getId(): ?int
  51.     {
  52.         return $this->id;
  53.     }
  54.     public function getCode(): ?string
  55.     {
  56.         return $this->code;
  57.     }
  58.     public function setCode(string $code): static
  59.     {
  60.         $this->code = $code;
  61.         return $this;
  62.     }
  63.     public function getDescription(): ?string
  64.     {
  65.         return $this->description;
  66.     }
  67.     public function setDescription(?string $description): static
  68.     {
  69.         $this->description = $description;
  70.         return $this;
  71.     }
  72.     public function getPao(): ?Pao
  73.     {
  74.         return $this->pao;
  75.     }
  76.     public function setPao(?Pao $pao): static
  77.     {
  78.         $this->pao = $pao;
  79.         return $this;
  80.     }
  81.     public function getTypeObjectif(): ?TypeObjectif
  82.     {
  83.         return $this->typeObjectif;
  84.     }
  85.     public function setTypeObjectif(?TypeObjectif $typeObjectif): static
  86.     {
  87.         $this->typeObjectif = $typeObjectif;
  88.         return $this;
  89.     }
  90.     /**
  91.      * @return Collection<int, Activity>
  92.      */
  93.     public function getActivities(): Collection
  94.     {
  95.         return $this->activities;
  96.     }
  97.     public function addActivity(Activity $activity): static
  98.     {
  99.         if (!$this->activities->contains($activity)) {
  100.             $this->activities->add($activity);
  101.             $activity->setObjectif($this);
  102.         }
  103.         return $this;
  104.     }
  105.     public function removeActivity(Activity $activity): static
  106.     {
  107.         if ($this->activities->removeElement($activity)) {
  108.             // set the owning side to null (unless already changed)
  109.             if ($activity->getObjectif() === $this) {
  110.                 $activity->setObjectif(null);
  111.             }
  112.         }
  113.         return $this;
  114.     }
  115.     #[Groups(['entity:write'])]
  116.     public function getIdObjectif(): int
  117.     {
  118.         return $this->id;
  119.     }
  120.     public function getCountActivity(): int
  121.     {
  122.         $countActivity = 0;
  123.         foreach ($this->activities as $activity) {
  124.             $countActivity = $countActivity + 1;
  125.         }
  126.         return $countActivity;
  127.     }
  128.     public function __toString()
  129.     {
  130.         return $this->description;
  131.     }
  132.     public function getStatus(): ?int
  133.     {
  134.         return $this->status;
  135.     }
  136.     public function setStatus(int $status): static
  137.     {
  138.         $this->status = $status;
  139.         return $this;
  140.     }
  141.     public function getCreatedBy(): ?User
  142.     {
  143.         return $this->createdBy;
  144.     }
  145.     public function setCreatedBy(?User $createdBy): static
  146.     {
  147.         $this->createdBy = $createdBy;
  148.         return $this;
  149.     }
  150.     public function getEvaluation(): ?Evaluation
  151.     {
  152.         return $this->evaluation;
  153.     }
  154.     public function setEvaluation(?Evaluation $evaluation): static
  155.     {
  156.         // unset the owning side of the relation if necessary
  157.         if ($evaluation === null && $this->evaluation !== null) {
  158.             $this->evaluation->setObjectif(null);
  159.         }
  160.         // set the owning side of the relation if necessary
  161.         if ($evaluation !== null && $evaluation->getObjectif() !== $this) {
  162.             $evaluation->setObjectif($this);
  163.         }
  164.         $this->evaluation = $evaluation;
  165.         return $this;
  166.     }
  167.     public function getNote(): int
  168.     {
  169.         if ($this->evaluation) {
  170.             return $this->evaluation->getNote();
  171.         } else {
  172.             return 0;
  173.         }
  174.     }
  175.     #[Groups(['objectif:read', 'entity:write', 'entity:read'])]
  176.     public function getHasTasks(): bool
  177.     {
  178.         foreach ($this->activities as $activity) {
  179.             foreach ($activity->getRateOfProgress() as $progress) {
  180.                 if ($progress->isIsValided()) {
  181.                     return true;
  182.                 }
  183.             }
  184.         }
  185.         return false;
  186.     }
  187. }