<?php
namespace App\Entity\Channel\Export;
use App\Entity\Channel\Channel;
use App\Entity\Common\File;
use App\Enum\Channel\FileExportStatusEnum;
use App\Repository\Channel\Export\FileExportRepository;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
#[
ORM\Entity(repositoryClass: FileExportRepository::class),
ORM\Table(name: 'file_channel_export'),
]
class FileExport extends File
{
const TAG_CURSUS = 'cursus';
const TAG_FORMERS = 'formers';
const TAG_ADMINS = 'admins';
const TAG_COMPANIES = 'companies';
const TAG_CONTACTS = 'contacts';
#[ManyToOne(targetEntity: Channel::class, fetch: 'EAGER')]
#[JoinColumn(nullable: true, onDelete: 'CASCADE')]
private ?Channel $channel = null;
#[ORM\Column(type: 'string', length: 255)]
private string $status = FileExportStatusEnum::STATUS_PENDING;
#[ORM\Column(type: 'simple_array', nullable: false)]
private array $payload = [];
#[ORM\Column(type: 'json', nullable: true)]
private ?array $options = null;
#[ORM\Column(type: 'integer', nullable: false)]
private int $prepared = 0;
#[ORM\Column(type: 'string', length: 255, nullable: false)]
private ?string $tag = null;
public static function getFileSystemAlias(): string
{
return 'export_filesystem';
}
public static function getUploaderAlias(): ?string
{
return null;
}
public function incrementPrepared(): void
{
$this->prepared++;
}
public function isReady(): bool
{
return $this->prepared >= count($this->payload);
}
public function getChannel(): ?Channel
{
return $this->channel;
}
public function setChannel(?Channel $channel): FileExport
{
$this->channel = $channel;
return $this;
}
public function getStatus(): string
{
return $this->status;
}
public function setStatus(string $status): FileExport
{
$this->status = $status;
return $this;
}
public function getPayload(): array
{
return $this->payload;
}
public function setPayload(array $payload): FileExport
{
$this->payload = $payload;
return $this;
}
public function getPrepared(): int
{
return $this->prepared;
}
public function setPrepared(int $prepared): FileExport
{
$this->prepared = $prepared;
return $this;
}
public function getTag(): ?string
{
return $this->tag;
}
public function setTag(?string $tag): FileExport
{
$this->tag = $tag;
return $this;
}
public function getOptions(): ?array
{
return $this->options;
}
public function setOptions(?array $options): FileExport
{
$this->options = $options;
return $this;
}
}