<?phpnamespace App\Entity\Gos;use Doctrine\ORM\Mapping as ORM;use JMS\Serializer\Annotation as JMS;/** * @ORM\Entity(repositoryClass="App\Repository\MessageRepository") * @ORM\HasLifecycleCallbacks */class Message{ /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") * @JMS\Groups({"ApiMessage", "ApiMessageThread"}) */ private $id; /** * @ORM\Column(type="text") * @JMS\Groups({"ApiMessage", "ApiMessageThread"}) */ private $content; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\MessageThread", inversedBy="messages") * @ORM\JoinColumn(onDelete="SET NULL") */ private $messageThread; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\User", inversedBy="messages") * @ORM\JoinColumn(onDelete="SET NULL") * @JMS\Groups({"ApiMessage", "ApiMessageThread"}) */ private $author; /** * @var bool * @ORM\Column(type="boolean") */ private $isRead = 0; /** * @ORM\Column(type="datetime") * @JMS\Type("DateTime<'Y-m-d H:i:s'>") * @JMS\Groups({"ApiMessage"}) */ private $createdAt; /** * @ORM\Column(type="datetime", nullable=true) */ private $updatedAt; /** @ORM\PrePersist() */ public function prePersist() { $this->createdAt = new \DateTime(); } /** @ORM\PreUpdate() */ public function preUpdate() { $this->updatedAt = new \DateTime(); } public function __toString() { return (string)$this->id; } public function isFirstMessageForThread() { if ( !empty($this->getMessageThread()->getFirstMessage()) && $this->getId() == $this->getMessageThread()->getFirstMessage()->getId() ) { return true; } return false; } public function authorIsModerator() { if ( !empty($this->getMessageThread()->getFirstMessage()) && $this->getAuthor()->getId() == $this->getMessageThread()->getFirstMessage()->getAuthor()->getId() ) { return false; } return true; } //------------------------------ setters & getters public function getId(): ?int { return $this->id; } public function getContent(): ?string { return $this->content; } public function setContent(string $content): self { $this->content = $content; return $this; } public function getCreatedAt(): ?\DateTimeInterface { return $this->createdAt; } public function setCreatedAt(\DateTimeInterface $createdAt): self { $this->createdAt = $createdAt; return $this; } public function getUpdatedAt(): ?\DateTimeInterface { return $this->updatedAt; } public function setUpdatedAt(?\DateTimeInterface $updatedAt): self { $this->updatedAt = $updatedAt; return $this; } public function getMessageThread(): ?MessageThread { return $this->messageThread; } public function setMessageThread(?MessageThread $messageThread): self { $this->messageThread = $messageThread; return $this; } public function getAuthor(): ?User { return $this->author; } public function setAuthor(?User $author): self { $this->author = $author; return $this; } public function getIsRead(): ?bool { return $this->isRead; } public function setIsRead(?bool $isRead): self { $this->isRead = $isRead; return $this; }}