<?phpnamespace App\Entity;use App\Entity\Traits\CommonTrait;use App\Repository\ChatRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\Mapping as ORM;use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;/** * @ORM\Entity(repositoryClass=ChatRepository::class) * @ORM\Table(name="app_chat") * @UniqueEntity({"uuid"}) * @ORM\HasLifecycleCallbacks() */class Chat{ use CommonTrait; /** * @ORM\ManyToOne(targetEntity=User::class, inversedBy="chats") * @ORM\JoinColumn(nullable=false) */ private $personOne; /** * @ORM\ManyToOne(targetEntity=User::class) * @ORM\JoinColumn(nullable=false) */ private $personTwo; /** * @ORM\OneToMany(targetEntity=ChatMessage::class, mappedBy="chat", orphanRemoval=true) * */ private $chatMessages; /** * @ORM\ManyToOne(targetEntity=Item::class) * @ORM\JoinColumn(nullable=false) */ private $item; public function __construct() { $this->chatMessages = new ArrayCollection(); } public function getPersonOne(): ?User { return $this->personOne; } public function setPersonOne(?User $personOne): self { $this->personOne = $personOne; return $this; } public function getPersonTwo(): ?User { return $this->personTwo; } public function setPersonTwo(?User $personTwo): self { $this->personTwo = $personTwo; return $this; } /** * @return Collection|ChatMessage[] */ public function getChatMessages(): Collection { return $this->chatMessages; } public function addChatMessage(ChatMessage $chatMessage): self { if (!$this->chatMessages->contains($chatMessage)) { $this->chatMessages[] = $chatMessage; $chatMessage->setChat($this); } return $this; } public function removeChatMessage(ChatMessage $chatMessage): self { if ($this->chatMessages->removeElement($chatMessage)) { // set the owning side to null (unless already changed) if ($chatMessage->getChat() === $this) { $chatMessage->setChat(null); } } return $this; } public function getItem(): ?Item { return $this->item; } public function setItem(?Item $item): self { $this->item = $item; return $this; } public function getLastMessage() { $message = $this->getChatMessages()[0]; foreach ($this->getChatMessages() as $chatMessage) { if($chatMessage->getCreatedAt() > $message->getCreatedAt() || !$message) { $message = $chatMessage; } } return $message; }}