<?php
namespace App\Entity\Chat;
use App\Entity\Account\User;
use App\Repository\Chat\MessageUserRepository;
use Doctrine\ORM\Mapping as ORM;
use Drosalys\Bundle\ApiBundle\Serializer\Attributes\IdGroups;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation as Serial;
#[ORM\Entity(repositoryClass: MessageUserRepository::class)]
#[ORM\Table(name: 'chat_message_users')]
#[ORM\UniqueConstraint(name: 'unique_chat_message_user', columns: ['message_id', 'user_id'])]
#[UniqueEntity(fields: ['message', 'user'], groups: ['PostMessageUser', 'PostMessage'])]
class MessageUser
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
#[Serial\Groups(groups: ['Message', 'WS_MESSAGE', 'PostMessage'])]
private ?int $id = null;
#[ORM\Column(type: 'string', length: 255, nullable: true)]
#[Serial\Groups(groups: ['Message', 'WS_MESSAGE', "PostMessageUser", 'PostMessage'])]
private ?string $content = null;
#[ORM\ManyToOne(targetEntity: Message::class)]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
#[IdGroups(groups: ['WS_MESSAGE'])]
private ?Message $message = null;
#[ORM\ManyToOne(targetEntity: User::class)]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
#[Serial\Groups(groups: ['Message', 'WS_MESSAGE', 'PostMessage'])]
private ?User $user = null;
#[ORM\Column(type: 'datetime', nullable: true)]
#[Serial\Groups(groups: ['Message', 'WS_MESSAGE'])]
private ?\DateTime $seenAt = null;
public function getId(): ?int
{
return $this->id;
}
public function getContent(): ?string
{
return $this->content;
}
public function setContent(?string $content): self
{
$this->content = $content;
return $this;
}
public function getMessage(): ?Message
{
return $this->message;
}
public function setMessage(?Message $message): self
{
$this->message = $message;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getSeenAt(): ?\DateTime
{
return $this->seenAt;
}
public function setSeenAt(?\DateTime $seenAt): MessageUser
{
$this->seenAt = $seenAt;
return $this;
}
}