<?php
namespace App\Entity\Chat;
use App\Enum\MessageType;
use App\Repository\Chat\FileMessageRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation as Serial;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: FileMessageRepository::class)]
#[ORM\Table(name: 'chat_file_messages')]
class FileMessage extends Message
{
#[ORM\OneToOne(mappedBy: 'fileMessage', targetEntity: File::class, cascade: ['persist', 'remove'])]
#[Serial\Groups(['Message', 'PostFileMessage'])]
#[
Assert\Valid(groups: ['PostFileMessage']),
Assert\NotNull(groups: ['PostFileMessage'])
]
private ?File $file = null;
#[ORM\Column(type: 'integer', nullable: true)]
#[Serial\Groups(['Message', 'PostFileMessage'])]
private ?int $fileMessageType = null;
public function __construct()
{
parent::__construct();
$this->setMessageType(MessageType::MESSAGE_FILE);
}
public function getFile(): ?File
{
return $this->file;
}
public function setFile(?File $file): FileMessage
{
$this->file = $file;
if ($this->file !== null) {
$this->getFile()->setFileMessage($this);
}
return $this;
}
public function getFileMessageType(): ?int
{
return $this->fileMessageType;
}
public function setFileMessageType(?int $fileMessageType): FileMessage
{
$this->fileMessageType = $fileMessageType;
return $this;
}
}