<?phpnamespace App\Entity\Messaging;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\Mapping as ORM;use Symfony\Component\Validator\Constraints as Assert;/** * @ORM\Entity(repositoryClass="App\Repository\App\Messaging\MessageRepository") * @ORM\EntityListeners({"App\EventSubscriber\Messaging\MessageEntitySubscriber"}) */class Message{ public const CUSTOMER_TYPE = 'CUSTOMER_TYPE'; public const SCP_TYPE = 'SCP_TYPE'; /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ protected $id; /** * @ORM\Column(type="datetime") * @Assert\NotBlank */ protected $date; /** * @ORM\Column(type="text") * @Assert\NotBlank(groups={"front"}) */ protected $content; /** * @ORM\Column(type="string", length=255) * @Assert\NotBlank */ protected $type; /** * @ORM\ManyToOne(targetEntity="App\Entity\Messaging\Conversation", inversedBy="messages") * @ORM\JoinColumn(nullable=false) */ protected $conversation; /** * @ORM\OneToMany(targetEntity="App\Entity\Messaging\MessageFile", mappedBy="message", orphanRemoval=true, cascade={"persist"}) * @Assert\Valid */ protected $messageFiles; /** * @ORM\Column(type="integer", nullable=true) */ protected $sender; public function __construct(string $type) { $this->date = new \DateTimeImmutable(); $this->messageFiles = new ArrayCollection(); $this->setType($type); } public function getId(): ?int { return $this->id; } public function getDate(): ?\DateTimeInterface { return $this->date; } public function setDate(\DateTimeInterface $date): self { $this->date = $date; return $this; } public function getContent(): ?string { return $this->content; } public function setContent(?string $content): self { $this->content = $content; return $this; } public function getType(): ?string { return $this->type; } public function setType(string $type): self { $this->type = $type; return $this; } public function getConversation(): ?Conversation { return $this->conversation; } public function setConversation(?Conversation $conversation): self { $this->conversation = $conversation; return $this; } /** * @return Collection|MessageFile[] */ public function getMessageFiles(): Collection { return $this->messageFiles; } public function addMessageFile(MessageFile $messageFile): self { if (!$this->messageFiles->contains($messageFile)) { $this->messageFiles[] = $messageFile; $messageFile->setMessage($this); } return $this; } public function removeMessageFile(MessageFile $messageFile): self { if ($this->messageFiles->contains($messageFile)) { $this->messageFiles->removeElement($messageFile); if ($messageFile->getMessage() === $this) { $messageFile->setMessage(null); } } return $this; } public function setSender(int $sender): self { $this->sender = $sender; return $this; } public function getSender(): ?int { return $this->sender; }}