<?php
namespace App\Entity\ChannelUserData\Cursus;
use App\Entity\Common\File;
use App\Repository\ChannelUserData\Cursus\FileAbstractCursusRepository;
use Doctrine\ORM\Mapping as ORM;
use Nellapp\Bundle\SDKBundle\Permission\UserOwner\UserOwnerResourceInterface;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Serializer\Annotation as Serial;
#[
ORM\Entity(repositoryClass: FileAbstractCursusRepository::class),
ORM\Table('file_abstract_cursus')
]
class FileAbstractCursus extends File implements UserOwnerResourceInterface
{
#[ORM\ManyToOne(targetEntity: AbstractCursus::class)]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
private ?AbstractCursus $abstractCursus = null;
#[ORM\Column(type: 'integer', nullable: false)]
#[NotBlank(groups: ['PostFile', 'PutFile'])]
#[Serial\Groups(['PostFile', 'PutFile', 'Manager'])]
private ?int $tag = null;
#[ORM\Column(type: 'boolean', nullable: false, options: ['default' => false])]
#[Serial\Groups(['PostFile', 'PutFile', 'Manager'])]
private bool $share = false;
#[ORM\Column(type: 'date', nullable: true)]
#[
NotBlank(groups: ['ToRemoveAt']),
]
#[Serial\Groups(['ToRemoveAt', 'Manager'])]
private ?\DateTime $toRemoveAt = null;
public static function getFileSystemAlias(): string
{
return 'cursus_filesystem';
}
public static function getUploaderAlias(): ?string
{
return 'cursus_upload';
}
public function getAbstractCursus(): ?AbstractCursus
{
return $this->abstractCursus;
}
public function setAbstractCursus(?AbstractCursus $abstractCursus): FileAbstractCursus
{
$this->abstractCursus = $abstractCursus;
return $this;
}
public function getTag(): ?int
{
return $this->tag;
}
public function setTag(?int $tag): FileAbstractCursus
{
$this->tag = $tag;
return $this;
}
public function getToRemoveAt(): ?\DateTime
{
return $this->toRemoveAt;
}
public function setToRemoveAt(?\DateTime $toRemoveAt): FileAbstractCursus
{
$this->toRemoveAt = $toRemoveAt;
return $this;
}
public function isShare(): bool
{
return $this->share;
}
public function setShare(bool $share): FileAbstractCursus
{
$this->share = $share;
return $this;
}
public function getUserOwners(): array
{
$owner = $this->getCreatedBy();
return $owner !== null ? [$owner] : [];
}
}