<?phpnamespace App\Entity;use App\Entity\Traits\ToArray;use App\Repository\MessageLogRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Entity(repositoryClass=MessageLogRepository::class) */class MessageLog{ use ToArray; /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="datetime") */ private $createdAt; /** * @ORM\Column(type="guid", unique=true) */ private $messageId; /** * @ORM\ManyToOne(targetEntity=Conversation::class) */ private $conversation; /** * @ORM\ManyToOne(targetEntity=User::class) */ private $sender; /** * @ORM\Column(type="enum", options={"values"="message_log_enum"}) */ private $type; /** * @ORM\Column(type="text", nullable=true) */ private $payload; /** * @ORM\OneToMany(targetEntity=DeliveryState::class, mappedBy="message") */ private $deliveryStates; public function __construct() { $this->createdAt = new \DateTime(); $this->deliveryStates = new ArrayCollection(); } public function getId(): ?int { return $this->id; } public function getCreatedAt(): ?\DateTimeInterface { return $this->createdAt; } public function setCreatedAt(\DateTimeInterface $createdAt): self { $this->createdAt = $createdAt; return $this; } public function getMessageId(): ?string { return $this->messageId; } public function setMessageId(string $messageId): self { $this->messageId = $messageId; return $this; } public function getConversation(): ?Conversation { return $this->conversation; } public function setConversation(?Conversation $conversation): self { $this->conversation = $conversation; return $this; } public function getSender(): ?User { return $this->sender; } public function setSender(?User $sender): self { $this->sender = $sender; return $this; } public function getType() { return $this->type; } public function setType($type): self { $this->type = $type; return $this; } public function getPayload(): ?array { return json_decode($this->payload, true); } public function setPayload(?array $payload): self { $this->payload = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); return $this; } /** * @return Collection<int, DeliveryState> */ public function getDeliveryStates(): Collection { return $this->deliveryStates; } public function addDeliveryState(DeliveryState $deliveryState): self { if (!$this->deliveryStates->contains($deliveryState)) { $this->deliveryStates[] = $deliveryState; $deliveryState->setMessage($this); } return $this; } public function removeDeliveryState(DeliveryState $deliveryState): self { if ($this->deliveryStates->removeElement($deliveryState)) { // set the owning side to null (unless already changed) if ($deliveryState->getMessage() === $this) { $deliveryState->setMessage(null); } } return $this; }}