src/Entity/Ticket.php line 16
<?phpnamespace App\Entity;use App\Repository\TicketRepository;use App\Traits\Timestamps;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\DBAL\Types\Types;use Doctrine\ORM\Mapping as ORM;use Symfony\Component\Serializer\Annotation\Groups;#[ORM\Entity(repositoryClass: TicketRepository::class)]#[ORM\Table(name: 'ticket')]#[ORM\HasLifecycleCallbacks]class Ticket{use Timestamps;const STATUS_UNREAD = 'unread';const STATUS_IN_PROGRESS = 'in_progress';const STATUS_DONE = 'done';#[ORM\Id]#[ORM\GeneratedValue]#[ORM\Column]#[Groups(['ticket:read'])]private ?int $id = null;#[ORM\Column(length: 255)]#[Groups(['ticket:read', 'ticket:write'])]private ?string $subject = null;#[ORM\Column(type: Types::TEXT)]#[Groups(['ticket:read', 'ticket:write'])]private ?string $content = null;#[ORM\Column(length: 50)]#[Groups(['ticket:read'])]private ?string $status = self::STATUS_UNREAD;#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: false)]private ?Client $client = null;#[ORM\Column(length: 255, nullable: true)]#[Groups(['ticket:read', 'ticket:write'])]private ?string $clientExternalId = null;#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: true)]private ?User $assignedTo = null;#[ORM\OneToMany(mappedBy: 'ticket', targetEntity: TicketResponse::class, orphanRemoval: true)]#[ORM\OrderBy(['createdAt' => 'ASC'])]private Collection $responses;#[ORM\Column(length: 255, nullable: true)]#[Groups(['ticket:read', 'ticket:write'])]private ?string $priority = 'normal';#[ORM\Column(length: 255, nullable: true)]#[Groups(['ticket:read', 'ticket:write'])]private ?string $category = null;public function __construct(){$this->responses = new ArrayCollection();}public function getId(): ?int{return $this->id;}public function getSubject(): ?string{return $this->subject;}public function setSubject(string $subject): self{$this->subject = $subject;return $this;}public function getContent(): ?string{return $this->content;}public function setContent(string $content): self{$this->content = $content;return $this;}public function getStatus(): ?string{return $this->status;}public function setStatus(string $status): self{$this->status = $status;return $this;}public function getClient(): ?Client{return $this->client;}public function setClient(?Client $client): self{$this->client = $client;return $this;}public function getClientExternalId(): ?string{return $this->clientExternalId;}public function setClientExternalId(?string $clientExternalId): self{$this->clientExternalId = $clientExternalId;return $this;}public function getAssignedTo(): ?User{return $this->assignedTo;}public function setAssignedTo(?User $assignedTo): self{$this->assignedTo = $assignedTo;return $this;}/*** @return Collection<int, TicketResponse>*/public function getResponses(): Collection{return $this->responses;}public function addResponse(TicketResponse $response): self{if (!$this->responses->contains($response)) {$this->responses->add($response);$response->setTicket($this);}return $this;}public function removeResponse(TicketResponse $response): self{if ($this->responses->removeElement($response)) {// set the owning side to null (unless already changed)if ($response->getTicket() === $this) {$response->setTicket(null);}}return $this;}public function getPriority(): ?string{return $this->priority;}public function setPriority(?string $priority): self{$this->priority = $priority;return $this;}public function getCategory(): ?string{return $this->category;}public function setCategory(?string $category): self{$this->category = $category;return $this;}public function getStatusLabel(): string{return match($this->status) {self::STATUS_UNREAD => 'Unread',self::STATUS_IN_PROGRESS => 'In progress',self::STATUS_DONE => 'Done',default => 'Unknown'};}public function getStatusClass(): string{return match($this->status) {self::STATUS_UNREAD => 'danger',self::STATUS_IN_PROGRESS => 'warning',self::STATUS_DONE => 'success',default => 'secondary'};}}