<?php
namespace App\Entity\Chat;
use App\Entity\Account\User;
use App\Entity\Channel\Service;
use App\Enum\ConversationType;
use App\Repository\Chat\ServiceConversationRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
#[ORM\Entity(repositoryClass: ServiceConversationRepository::class)]
#[ORM\Table(name: 'chat_service_conversations')]
class ServiceConversation extends Conversation
{
#[ORM\ManyToOne(targetEntity: Service::class)]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
#[Groups(['Conversation'])]
private ?Service $service = null;
#[ORM\Column(type: 'boolean', nullable: false, options: ['default' => false])]
private bool $closed = false;
#[ORM\OneToOne(targetEntity: Message::class, cascade: ['remove'])]
#[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]
private ?Message $lastMessage = null;
#[ORM\ManyToOne(targetEntity: User::class)]
#[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]
#[Groups(['Conversation'])]
private ?User $mainServiceUser = null;
public function __construct()
{
parent::__construct();
$this->setType(ConversationType::DISCUSSION_SERVICE);
}
public function getService(): ?Service
{
return $this->service;
}
public function setService(?Service $service): ServiceConversation
{
$this->service = $service;
return $this;
}
public function getClosed(): bool
{
return $this->closed;
}
public function setClosed(bool $closed): ServiceConversation
{
$this->closed = $closed;
return $this;
}
public function getLastMessage(): ?Message
{
return $this->lastMessage;
}
public function setLastMessage(?Message $lastMessage): ServiceConversation
{
$this->lastMessage = $lastMessage;
return $this;
}
public function getMainServiceUser(): ?User
{
return $this->mainServiceUser;
}
public function setMainServiceUser(?User $mainServiceUser): ServiceConversation
{
$this->mainServiceUser = $mainServiceUser;
return $this;
}
}