<?php
namespace Nellapp\Bundle\SDKBundle\Permission\Entity;
use DrosalysWeb\ObjectExtensions\Blame\Model\BlameInterface;
use DrosalysWeb\ObjectExtensions\Blame\Model\BlameTrait;
use DrosalysWeb\ObjectExtensions\Timestamp\Model\TimestampInterface;
use DrosalysWeb\ObjectExtensions\Timestamp\Model\TimestampTrait;
use Doctrine\ORM\Mapping as ORM;
use Nellapp\Bundle\SDKBundle\Channel\Entity\ChannelUserData\AdminChannelUserDataInterface;
use Symfony\Component\Serializer\Annotation as Serial;
#[ORM\MappedSuperclass]
#[
ORM\UniqueConstraint(fields: ['channelUserData', 'resource']),
]
abstract class AbstractChannelUserResourcePermission implements TimestampInterface, BlameInterface, ChannelPermissionResourceInterface
{
use ChannelUserPermissionMethodTrait;
use BlameTrait;
use TimestampTrait;
#[ORM\Column(type: 'simple_array', nullable: true)]
#[Serial\Groups(['Sync'])]
private ?array $perms = [];
#[ORM\Column(type: 'datetime', nullable: true)]
#[Serial\Groups(['Sync'])]
private ?\DateTimeInterface $expireAt = null;
#[ORM\Column(type: 'datetime', nullable: true)]
#[Serial\Groups(['Sync'])]
private ?\DateTimeInterface $startAt = null;
protected ?AdminChannelUserDataInterface $channelUserData = null; // Leave doctrine mapping to apps
protected ?ChannelResourceInterface $resource = null; // Leave doctrine mapping to apps
public function getId(): ?string
{
return $this->id;
}
public function setId(?string $id): AbstractChannelUserResourcePermission
{
$this->id = $id;
return $this;
}
public function getChannelUserData(): ?AdminChannelUserDataInterface
{
return $this->channelUserData;
}
public function setChannelUserData(?AdminChannelUserDataInterface $channelUserData): static
{
$this->channelUserData = $channelUserData;
return $this;
}
public function getResource(): ?ChannelResourceInterface
{
return $this->resource;
}
public function setResource(?ChannelResourceInterface $resource): static
{
$this->resource = $resource;
return $this;
}
}