['task:read']], denormalizationContext: ['groups' => ['task:write']], order: ['id' => 'DESC'], )] #[ApiFilter(SearchFilter::class, properties: ['project' => 'exact', 'group' => 'exact'])] #[ORM\Entity(repositoryClass: TaskRepository::class)] class Task { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] #[Groups(['task:read'])] private ?int $id = null; #[ORM\Column(length: 255)] #[Groups(['task:read', 'task:write'])] private ?string $title = null; #[ORM\Column(type: 'text', nullable: true)] #[Groups(['task:read', 'task:write'])] private ?string $description = null; #[ORM\ManyToOne(targetEntity: TaskStatus::class)] #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] #[Groups(['task:read', 'task:write'])] private ?TaskStatus $status = null; #[ORM\ManyToOne(targetEntity: TaskEffort::class)] #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] #[Groups(['task:read', 'task:write'])] private ?TaskEffort $effort = null; #[ORM\ManyToOne(targetEntity: TaskPriority::class)] #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] #[Groups(['task:read', 'task:write'])] private ?TaskPriority $priority = null; #[ORM\ManyToOne(targetEntity: User::class)] #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] #[Groups(['task:read', 'task:write'])] private ?User $assignee = null; #[ORM\ManyToOne(targetEntity: TaskGroup::class)] #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] #[Groups(['task:read', 'task:write'])] private ?TaskGroup $group = null; #[ORM\ManyToOne(targetEntity: Project::class)] #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] #[Groups(['task:read', 'task:write'])] private ?Project $project = null; /** @var Collection */ #[ORM\ManyToMany(targetEntity: TaskType::class)] #[ORM\JoinTable(name: 'task_task_type')] #[Groups(['task:read', 'task:write'])] private Collection $types; public function __construct() { $this->types = new ArrayCollection(); } public function getId(): ?int { return $this->id; } public function getTitle(): ?string { return $this->title; } public function setTitle(string $title): static { $this->title = $title; return $this; } public function getDescription(): ?string { return $this->description; } public function setDescription(?string $description): static { $this->description = $description; return $this; } public function getStatus(): ?TaskStatus { return $this->status; } public function setStatus(?TaskStatus $status): static { $this->status = $status; return $this; } public function getEffort(): ?TaskEffort { return $this->effort; } public function setEffort(?TaskEffort $effort): static { $this->effort = $effort; return $this; } public function getPriority(): ?TaskPriority { return $this->priority; } public function setPriority(?TaskPriority $priority): static { $this->priority = $priority; return $this; } public function getAssignee(): ?User { return $this->assignee; } public function setAssignee(?User $assignee): static { $this->assignee = $assignee; return $this; } public function getGroup(): ?TaskGroup { return $this->group; } public function setGroup(?TaskGroup $group): static { $this->group = $group; return $this; } public function getProject(): ?Project { return $this->project; } public function setProject(?Project $project): static { $this->project = $project; return $this; } /** @return Collection */ public function getTypes(): Collection { return $this->types; } public function addType(TaskType $type): static { if (!$this->types->contains($type)) { $this->types->add($type); } return $this; } public function removeType(TaskType $type): static { $this->types->removeElement($type); return $this; } }