<?php
namespace App\Entity;
use App\Entity\Traits\TimeStampable;
use App\Repository\PriorityRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: PriorityRepository::class)]
#[UniqueEntity(
fields: ['name',],
errorPath: 'name',
message: 'Le nom que vous avez saisi est déjà utilisé',
)]
#[ORM\HasLifecycleCallbacks]
class Priority
{
use TimeStampable;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['priority:read','taskProjet:read', 'entity:write', 'objectif:read', 'entity:write'])]
private ?int $id = null;
#[ORM\Column(length: 255)]
#[Groups(['priority:read', 'taskProjet:read', 'entity:write', 'objectif:read', 'activity:read','entity:write'])]
#[Assert\NotBlank(message:"Veuillez remplir ce champ")]
private ?string $name = null;
#[ORM\Column(type: Types::TEXT, nullable: true)]
#[Groups(['entity:write', 'activity:read'])]
private ?string $description = null;
#[ORM\OneToMany(mappedBy: 'priority', targetEntity: Task::class)]
private Collection $tasks;
#[ORM\ManyToOne(inversedBy: 'priorities')]
private ?User $createdBy = null;
// #[ORM\OneToMany(mappedBy: 'priority', targetEntity: Activity::class)]
// private Collection $activities;
public function __construct()
{
$this->tasks = new ArrayCollection();
$this->createdAt = new \DateTimeImmutable();
$this->isEnabled = false;
// $this->activities = new ArrayCollection();
$this->updatedAt = new \DateTimeImmutable();
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
/**
* @return Collection<int, Task>
*/
public function getTasks(): Collection
{
return $this->tasks;
}
public function addTask(Task $task): self
{
if (!$this->tasks->contains($task)) {
$this->tasks->add($task);
$task->setPriority($this);
}
return $this;
}
public function removeTask(Task $task): self
{
if ($this->tasks->removeElement($task)) {
// set the owning side to null (unless already changed)
if ($task->getPriority() === $this) {
$task->setPriority(null);
}
}
return $this;
}
public function __toString(): string
{
return $this->name;
}
public function getCreatedBy(): ?User
{
return $this->createdBy;
}
public function setCreatedBy(?User $createdBy): static
{
$this->createdBy = $createdBy;
return $this;
}
// /**
// * @return Collection<int, Activity>
// */
// public function getActivities(): Collection
// {
// return $this->activities;
// }
// public function addActivity(Activity $activity): static
// {
// if (!$this->activities->contains($activity)) {
// $this->activities->add($activity);
// $activity->setPriority($this);
// }
// return $this;
// }
// public function removeActivity(Activity $activity): static
// {
// if ($this->activities->removeElement($activity)) {
// // set the owning side to null (unless already changed)
// if ($activity->getPriority() === $this) {
// $activity->setPriority(null);
// }
// }
// return $this;
// }
}