<?php
namespace App\Entity;
use App\Entity\Traits\Timestampable;
use App\Repository\DiscussionMessageRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Groups;
#[ORM\HasLifecycleCallbacks]
#[ORM\Entity(repositoryClass: DiscussionMessageRepository::class)]
class DiscussionMessage
{
use Timestampable;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?int $id = null;
#[ORM\ManyToOne(inversedBy: 'discussionMessages')]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?User $messageBy = null;
#[ORM\ManyToOne(inversedBy: 'discussionMessages')]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?User $messageFor = null;
#[ORM\Column]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?bool $isRead = null;
#[ORM\Column(type: Types::TEXT, nullable: true)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?string $message = null;
#[ORM\ManyToOne(inversedBy: 'discussionMessages')]
#[ORM\JoinColumn(nullable: false)]
private ?Discussion $discussion = null;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?string $fileName = null;
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'discussionMessagesReply')]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?self $replyToMessage = null;
#[ORM\OneToMany(mappedBy: 'replyToMessage', targetEntity: self::class)]
private Collection $discussionMessagesReply;
#[ORM\Column(nullable: true)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?int $size = null;
#[ORM\Column(nullable: true)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?int $duration = null;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?string $cachedSenderPath = null;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?string $cachedReciverPath = null;
#[ORM\Column(nullable: true)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?string $localId = null;
#[ORM\Column(length: 255)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?string $type = null;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(['getDiscussion', 'getDiscussionMessage'])]
private ?string $url = null;
public function __construct()
{
$this->discussionMessagesReply = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getMessageBy(): ?User
{
return $this->messageBy;
}
public function setMessageBy(?User $messageBy): static
{
$this->messageBy = $messageBy;
return $this;
}
public function getMessageFor(): ?User
{
return $this->messageFor;
}
public function setMessageFor(?User $messageFor): static
{
$this->messageFor = $messageFor;
return $this;
}
public function isIsRead(): ?bool
{
return $this->isRead;
}
public function setIsRead(bool $isRead): static
{
$this->isRead = $isRead;
return $this;
}
public function getMessage(): ?string
{
return $this->message;
}
public function setMessage(?string $message): static
{
$this->message = $message;
return $this;
}
public function getDiscussion(): ?Discussion
{
return $this->discussion;
}
public function setDiscussion(?Discussion $discussion): static
{
$this->discussion = $discussion;
return $this;
}
public function getFileName(): ?string
{
return $this->fileName;
}
public function setFileName(?string $fileName): static
{
$this->fileName = $fileName;
return $this;
}
public function getReplyToMessage(): ?self
{
return $this->replyToMessage;
}
public function setReplyToMessage(?self $replyToMessage): static
{
$this->replyToMessage = $replyToMessage;
return $this;
}
/**
* @return Collection<int, self>
*/
public function getDiscussionMessagesReply(): Collection
{
return $this->discussionMessagesReply;
}
public function addDiscussionMessagesReply(self $discussionMessagesReply): static
{
if (!$this->discussionMessagesReply->contains($discussionMessagesReply)) {
$this->discussionMessagesReply->add($discussionMessagesReply);
$discussionMessagesReply->setReplyToMessage($this);
}
return $this;
}
public function removeDiscussionMessagesReply(self $discussionMessagesReply): static
{
if ($this->discussionMessagesReply->removeElement($discussionMessagesReply)) {
// set the owning side to null (unless already changed)
if ($discussionMessagesReply->getReplyToMessage() === $this) {
$discussionMessagesReply->setReplyToMessage(null);
}
}
return $this;
}
public function getSize(): ?int
{
return $this->size;
}
public function setSize(?int $size): static
{
$this->size = $size;
return $this;
}
public function getDuration(): ?int
{
return $this->duration;
}
public function setDuration(?int $duration): static
{
$this->duration = $duration;
return $this;
}
public function getCachedSenderPath(): ?string
{
return $this->cachedSenderPath;
}
public function setCachedSenderPath(?string $cachedSenderPath): static
{
$this->cachedSenderPath = $cachedSenderPath;
return $this;
}
public function getCachedReciverPath(): ?string
{
return $this->cachedReciverPath;
}
public function setCachedReciverPath(?string $cachedReciverPath): static
{
$this->cachedReciverPath = $cachedReciverPath;
return $this;
}
public function getLocalId(): ?string
{
return $this->localId;
}
public function setLocalId(?string $localId): static
{
$this->localId = $localId;
return $this;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(string $type): static
{
$this->type = $type;
return $this;
}
public function getUrl(): ?string
{
return $this->url;
}
public function setUrl(?string $url): static
{
$this->url = $url;
return $this;
}
}