<?php
declare(strict_types=1);
namespace Crea\MediaBundle\Entity;
use Crea\MediaBundle\Entity\Enum\MediaTypeCodeEnum;
use Crea\MediaBundle\Repository\MediaTypeRepository;
use Crea\ToolsBundle\Entity\LifecycleUserIdentifierTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Stringable;
/**
* @ORM\Entity(repositoryClass=MediaTypeRepository::class)
*
* @ORM\Table(name="media_type")
*/
class MediaType implements Stringable, CodeIdentifiedInterface, FileConstraintInterface
{
use LifecycleUserIdentifierTrait;
/**
* @ORM\Id
*
* @ORM\GeneratedValue
*
* @ORM\Column(type="integer")
*/
private ?int $id = null;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
private ?string $label = null;
/**
* @ORM\Column(type="string", nullable=true)
*/
private ?string $mimeType = null;
/**
* @var array<string>
*
* @ORM\Column(type="simple_array", nullable=true)
*/
private ?array $extensions = [];
/**
* @ORM\Column(type="string", enumType=MediaTypeCodeEnum::class, nullable=false, unique=true)
*/
private ?MediaTypeCodeEnum $code = null;
/**
* @ORM\ManyToOne(targetEntity=MediaFamily::class, inversedBy="mediaTypes")
*/
private ?MediaFamily $mediaFamily = null;
/**
* @var Collection<int, MediaFile>
*
* @ORM\OneToMany(targetEntity=MediaFile::class, mappedBy="mediaType")
*/
private Collection $mediaFiles;
public function __construct()
{
$this->mediaFiles = new ArrayCollection();
}
public function __toString(): string
{
return $this->getLabel() ?: 'MediaType - ('.$this->id.')';
}
public function getId(): ?int
{
return $this->id;
}
public function setId(?int $id): self
{
$this->id = $id;
return $this;
}
public function getLabel(): ?string
{
return $this->label;
}
public function setLabel(?string $label): self
{
$this->label = $label;
return $this;
}
public function getMimeType(): ?string
{
return $this->mimeType;
}
public function setMimeType(?string $mimeType): self
{
$this->mimeType = $mimeType;
return $this;
}
/**
* @return string[]|null
*/
public function getExtensions(): ?array
{
return $this->extensions;
}
/**
* @param array<string>|null $extensions
*/
public function setExtensions(?array $extensions): self
{
$this->extensions = $extensions;
return $this;
}
public function getCode(): ?MediaTypeCodeEnum
{
return $this->code;
}
public function setCode(?MediaTypeCodeEnum $code): self
{
$this->code = $code;
return $this;
}
public function getMediaFamily(): ?MediaFamily
{
return $this->mediaFamily;
}
public function setMediaFamily(?MediaFamily $mediaFamily): self
{
$this->mediaFamily = $mediaFamily;
return $this;
}
/**
* @return Collection<int, MediaFile>
*/
public function getMediaFiles(): Collection
{
return $this->mediaFiles;
}
public function addMediaFile(MediaFile $mediaFile): self
{
if (!$this->mediaFiles->contains($mediaFile)) {
$this->mediaFiles[] = $mediaFile;
$mediaFile->setMediaType($this);
}
return $this;
}
public function removeMediaFile(MediaFile $mediaFile): self
{
if ($this->mediaFiles->removeElement($mediaFile)) {
if ($mediaFile->getMediaType() === $this) {
$mediaFile->setMediaType(null);
}
}
return $this;
}
}