src/Entity/Ticket.php line 13

Open in your IDE?
  1. <?php
  2. # src/Entity/Ticket.php 
  3. namespace App\Entity;
  4. use App\Repository\TicketRepository;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Symfony\Component\Validator\Constraints as Assert;
  7. use Doctrine\Common\Collections\ArrayCollection;
  8. use Doctrine\Common\Collections\Collection;
  9. #[ORM\Entity(repositoryClassTicketRepository::class)]
  10. class Ticket
  11. {
  12.     #[ORM\Id]
  13.     #[ORM\GeneratedValue]
  14.     #[ORM\Column(type'integer')]
  15.     private ?int $id null;
  16.     #[ORM\Column(type'string'length255)]
  17.     #[Assert\NotBlank(message'Der Titel darf nicht leer sein.')]
  18.     private ?string $title null;
  19.     #[ORM\Column(type'text')]
  20.     #[Assert\NotBlank(message'Die Beschreibung darf nicht leer sein.')]
  21.     private ?string $description null;
  22.     #[ORM\Column(type'string'length20)]
  23.     private ?string $status 'offen'// Werte: offen, in_bearbeitung, geschlossen
  24.     #[ORM\Column(type'string'length50)]
  25.     private ?string $priority 'niedrig'// Werte: niedrig, mittel, hoch
  26.     #[ORM\Column(type'datetime')]
  27.     private ?\DateTimeInterface $createdAt null;
  28.     #[ORM\Column(type'datetime'nullabletrue)]
  29.     private ?\DateTimeInterface $updatedAt null;
  30.     #[ORM\ManyToOne(targetEntityUser::class, inversedBy'tickets')]
  31.     #[ORM\JoinColumn(nullabletrue)]
  32.     private ?User $user null;
  33.     #[ORM\OneToMany(targetEntityTicketReply::class, mappedBy'ticket'cascade: ['remove'], orphanRemovaltrue)]
  34.     private Collection $replies;
  35.     public function __construct()
  36.     {
  37.         // Setze das Erstellungsdatum
  38.         $this->createdAt = new \DateTime();
  39.         $this->replies = new ArrayCollection();
  40.     }
  41.     // Getter und Setter für alle Felder
  42.     public function getId(): ?int
  43.     {
  44.         return $this->id;
  45.     }
  46.     public function getTitle(): ?string
  47.     {
  48.         return $this->title;
  49.     }
  50.     public function setTitle(string $title): self
  51.     {
  52.         $this->title $title;
  53.         return $this;
  54.     }
  55.     public function getDescription(): ?string
  56.     {
  57.         return $this->description;
  58.     }
  59.     public function setDescription(string $description): self
  60.     {
  61.         $this->description $description;
  62.         return $this;
  63.     }
  64.     public function getStatus(): ?string
  65.     {
  66.         return $this->status;
  67.     }
  68.     public function setStatus(string $status): self
  69.     {
  70.         $this->status $status;
  71.         return $this;
  72.     }
  73.     public function getPriority(): ?string
  74.     {
  75.         return $this->priority;
  76.     }
  77.     public function setPriority(string $priority): self
  78.     {
  79.         $this->priority $priority;
  80.         return $this;
  81.     }
  82.     public function getCreatedAt(): ?\DateTimeInterface
  83.     {
  84.         return $this->createdAt;
  85.     }
  86.     public function setCreatedAt(\DateTimeInterface $createdAt): self
  87.     {
  88.         $this->createdAt $createdAt;
  89.         return $this;
  90.     }
  91.     public function getUpdatedAt(): ?\DateTimeInterface
  92.     {
  93.         return $this->updatedAt;
  94.     }
  95.     public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
  96.     {
  97.         $this->updatedAt $updatedAt;
  98.         return $this;
  99.     }
  100.     /**
  101.      * Methode, um das Ticket auf "geschlossen" zu setzen.
  102.      */
  103.     public function close(): self
  104.     {
  105.         $this->status 'geschlossen';
  106.         $this->updatedAt = new \DateTime();
  107.         return $this;
  108.     }
  109.     /**
  110.      * Methode, um das Ticket auf "in Bearbeitung" zu setzen.
  111.      */
  112.     public function setInProgress(): self
  113.     {
  114.         $this->status 'in_bearbeitung';
  115.         $this->updatedAt = new \DateTime();
  116.         return $this;
  117.     }
  118.     // Getter und Setter für das User-Feld
  119.     public function getUser(): ?User
  120.     {
  121.         return $this->user;
  122.     }
  123.     public function setUser(?User $user): self
  124.     {
  125.         $this->user $user;
  126.         return $this;
  127.     }
  128.     /**
  129.      * @return Collection<int, TicketReply>
  130.      */
  131.     public function getReplies(): Collection
  132.     {
  133.         return $this->replies;
  134.     }
  135.     public function addReply(TicketReply $reply): self
  136.     {
  137.         if (!$this->replies->contains($reply)) {
  138.             $this->replies[] = $reply;
  139.             $reply->setTicket($this);
  140.         }
  141.         return $this;
  142.     }
  143.     public function removeReply(TicketReply $reply): self
  144.     {
  145.         if ($this->replies->removeElement($reply)) {
  146.             // Set the owning side to null (unless already changed)
  147.             if ($reply->getTicket() === $this) {
  148.                 $reply->setTicket(null);
  149.             }
  150.         }
  151.         return $this;
  152.     }
  153. }