<?php
namespace App\Entity;
use App\Repository\CorpusRepository;
use DateTimeInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity(repositoryClass=CorpusRepository::class)
* @ORM\Table(name="corpus", schema="bdnf", options={"comment":"Contient les corpus de l'application"})
*/
class Corpus
{
public function __construct()
{
//$this->images = new ArrayCollection();
$this->version = new \DateTime();
}
public function __toString(){
return $this->getTitleFr();
}
public function toArray()
{
return [
'id' => $this->getId(),
'title' => $this->getTitleFr(),
'titleEn' => $this->getTitleEn(),
'position' => $this->getPosition(),
'description' => $this->getDescriptionFr(),
'descriptionEn' => $this->getDescriptionEn(),
'previewPicture' => $this->getPreviewPicture(),
// 'images' => $arrImage,
'active' => $this->getActive(),
'version' => $this->getVersion()->format("Y-m-d\TH:i:s"),
'lastUpdate' => $this->getLastUpdate()->format("Y-m-d\TH:i:s"),
'zip' => 'https://'.$_ENV['BASE_URL'].'/corpus/download/'.$this->getId(),
];
}
public function toArrayForXmlCluster()
{
$images = [];
foreach($this->images->toArray() as $image){
$images[] = [
'filename' => $image->getThumbnails(),
'title' => $image->getTitle(),
'author' => $image->getAuthor(),
'longName' => $image->getLongName(),
'arkLink' => $image->getArkLink(),
];
};
return [
'name' => $this->getTitleFr(),
'nameEn' => $this->getTitleEn(),
'description' => $this->getDescriptionFr(),
'descriptionEn' => $this->getDescriptionEn(),
'preview' => $this->getPreviewPicture(),
'onlineCluster' => true,
'version' => $this->version->format("Y-m-d\TH:i:s"),
'lastUpdate' => $this->lastUpdate->format("Y-m-d\TH:i:s"),
'Assets' => $images
];
}
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", options={"comment":"Identifiant unique du corpus"})
*/
private $id;
/**
* @ORM\Column(type="boolean", options={"comment":"Indique si le corpus est actif ou non"})
*/
private $active = true;
/**
* @ORM\Column(type="boolean", options={"comment":"Indique si le corpus est grand ou non"})
*/
private $large = false;
/**
* @ORM\Column(type="integer", options={"comment":"Position du corpus dans la liste"})
*/
private $position;
/**
* @ORM\Column(type="string", options={"comment":"Titre du corpus en français"})
*/
private $titleFr;
/**
* @ORM\Column(type="text", nullable=true, options={"comment":"Description du corpus en français"})
*/
private $descriptionFr;
/**
* @ORM\Column(type="string", nullable=true, options={"comment":"Titre du corpus en anglais"})
*/
private $titleEn;
/**
* @ORM\Column(type="text", nullable=true, options={"comment":"Description du corpus en anglais"})
*/
private $descriptionEn;
/**
* @ORM\Column(type="string", nullable=true, options={"comment":"Nom du fichier de l'image de prévisualisation"})
*/
private $previewPicture;
/**
* @Vich\UploadableField(mapping="corpusPreviewPicture", fileNameProperty="previewPicture")
* @var File
*/
private $previewPictureFile;
/**
* @ORM\OneToMany(targetEntity=Image::class, cascade={"persist", "remove"}, mappedBy="corpus")
*/
private $images;
/**
* @ORM\Column(type="datetime", nullable=true, options={"comment":"Date de la dernière modification du corpus"})
*/
private $version;
/**
* @ORM\Column(type="datetime", nullable=true, options={"comment":"Date de la dernière modification du corpus"})
*/
private $lastUpdate;
/**
* @return mixed
*/
public function getLastUpdate()
{
return $this->lastUpdate;
}
/**
* @param mixed $lastUpdate
*/
public function setLastUpdate($lastUpdate): void
{
$this->lastUpdate = $lastUpdate;
}
public function getId(): ?int
{
return $this->id;
}
public function getActive(): ?bool
{
return $this->active;
}
public function setActive(bool $active): self
{
$this->active = $active;
return $this;
}
/**
* @return mixed
*/
public function getPosition()
{
return $this->position;
}
/**
* @param mixed $position
*/
public function setPosition($position): void
{
$this->position = $position;
}
/**
* @return mixed
*/
public function getTitleFr()
{
return $this->titleFr;
}
/**
* @param mixed $titleFr
*/
public function setTitleFr($titleFr): void
{
$this->titleFr = $titleFr;
}
/**
* @return mixed
*/
public function getDescriptionFr()
{
return $this->descriptionFr;
}
/**
* @param mixed $descriptionFr
*/
public function setDescriptionFr($descriptionFr): void
{
$this->descriptionFr = $descriptionFr;
}
/**
* @return mixed
*/
public function getTitleEn()
{
return $this->titleEn;
}
/**
* @param mixed $titleEn
*/
public function setTitleEn($titleEn): void
{
$this->titleEn = $titleEn;
}
/**
* @return mixed
*/
public function getDescriptionEn()
{
return $this->descriptionEn;
}
/**
* @param mixed $descriptionEn
*/
public function setDescriptionEn($descriptionEn): void
{
$this->descriptionEn = $descriptionEn;
}
/**
* @return mixed
*/
public function getPreviewPicture()
{
return $this->previewPicture;
}
/**
* @param mixed $previewPicture
*/
public function setPreviewPicture($previewPicture): void
{
$this->previewPicture = $previewPicture;
}
/**
* @return File
*/
public function getPreviewPictureFile(): File
{
return $this->previewPictureFile;
}
/**
* @param File $previewPictureFile
*/
public function setPreviewPictureFile(File $previewPictureFile): void
{
$this->previewPictureFile = $previewPictureFile;
}
/**
* @return mixed
*/
public function getImages()
{
return $this->images;
}
/**
* @param mixed $images
*/
public function setImages($images): void
{
$this->images = $images;
}
public function addImage(Image $image){
$this->images->add($image);
$image->setCorpus($this);
}
/**
* @return mixed
*/
public function getLarge()
{
return $this->large == null ? false : $this->large;
}
/**
* @param mixed $large
*/
public function setLarge($large): void
{
$this->large = $large;
}
/**
* @return mixed
*/
public function getVersion()
{
return $this->version;
}
/**
* @param mixed $version
*/
public function setVersion($version): void
{
$this->version = $version;
}
}