<?php
namespace App\Entity\ChannelUserData;
use App\Entity\Account\User;
use App\Entity\Channel\Channel;
use App\Entity\Chat\Conversation;
use App\Enum\ChannelUserDataInCanalType;
use App\Repository\ChannelUserData\ChannelUserDataRepository;
use Doctrine\ORM\Mapping as ORM;
use Nellapp\Bundle\SDKBundle\Channel\Entity\ChannelUserData\ChannelUserDataInterface;
use Nellapp\Bundle\SDKBundle\Channel\Entity\ChannelUserData\ChannelUserDataMethodTrait;
use Nellapp\Bundle\SDKBundle\Channel\Entity\ChannelUserRole;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Serializer\Annotation as Serial;
#[
ORM\Entity(repositoryClass: ChannelUserDataRepository::class),
ORM\Table(name: 'channel_user_data'),
ORM\UniqueConstraint(fields: ['user', 'channel']),
]
class ChannelUserData implements ChannelUserDataInterface
{
use ChannelUserDataMethodTrait;
#[
ORM\Id,
ORM\Column(type: 'string', length: 36)
]
private ?string $id = null;
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'channelUserDatas')]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
#[Serial\Groups(['GlobalJSVariable'])]
private ?User $user = null;
#[ORM\ManyToOne(targetEntity: Channel::class)]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
private ?Channel $channel = null;
#[ORM\Column(type: 'integer', nullable: false, options: ['default' => true])]
private ?bool $isLearner = null;
#[ORM\Column(type: 'boolean', nullable: false, options: ['default' => true])]
private ?bool $isActive = null;
#[ORM\Column(type: 'simple_array', nullable: true)]
private ?array $displayedMenu = null;
#[ORM\Column(type: 'boolean', nullable: true)]
#[Serial\Groups(['GlobalJSVariable'])]
private ?bool $isCoordinator = null;
#[ORM\Column(type: 'boolean', nullable: true)]
#[Serial\Groups(['GlobalJSVariable'])]
#[Assert\Choice(callback: [ChannelUserDataInCanalType::class, 'getChoices'], groups: ['PostAdmin'])]
private ?bool $globalAdmin = null;
#[ORM\ManyToOne(targetEntity: Conversation::class)]
#[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]
private ?Conversation $lastConversationSelected = null;
#[ORM\ManyToOne(targetEntity: ChannelUserRole::class)]
#[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]
private ?ChannelUserRole $channelUserRole = null;
#[ORM\Column(type: 'date', nullable: true)]
private ?\DateTimeInterface $expireAt = null;
#[ORM\Column(type: 'date', nullable: true)]
private ?\DateTimeInterface $startAt = null;
public function isGlobalAdmin(): ?bool
{
return $this->globalAdmin;
}
public function setGlobalAdmin(?bool $globalAdmin): ChannelUserData
{
$this->globalAdmin = $globalAdmin;
return $this;
}
public function getIsCoordinator(): bool
{
return $this->isCoordinator !== null ? $this->isCoordinator : false;
}
public function setIsCoordinator(?bool $isCoordinator): ChannelUserData
{
$this->isCoordinator = $isCoordinator;
return $this;
}
public function getLastConversationSelected(): ?Conversation
{
return $this->lastConversationSelected;
}
public function setLastConversationSelected(?Conversation $lastConversationSelected): ChannelUserData
{
$this->lastConversationSelected = $lastConversationSelected;
return $this;
}
public function getChannel(): ?Channel
{
return $this->channel;
}
}