<?php
namespace App\Entity;
use App\Entity\Common\IdTrait;
use DateTimeImmutable;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Validator\Constraints as Assert;
use Vich\UploaderBundle\Entity\File as EmbeddedFile;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity(repositoryClass="App\Repository\JPORepository")
* @Vich\Uploadable
*/
class JPO
{
use IdTrait;
/**
* @ORM\Column(type="datetime")
*/
private $datePublidation;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateActualisation;
/**
* @ORM\Column(type="string", length=150)
*/
private $lieu;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $contenu;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Etablissement", inversedBy="jPOs")
* @ORM\JoinColumn(nullable=false)
*/
private $etablissement;
/**
* @ORM\Embedded(class="Vich\UploaderBundle\Entity\File")
*/
private $image1;
/**
* @ORM\Embedded(class="Vich\UploaderBundle\Entity\File")
*/
private $image2;
/**
* @ORM\Embedded(class="Vich\UploaderBundle\Entity\File")
*/
private $image3;
/**
* @Assert\Image(
* maxWidth=600,
* maxHeight=400
* )
* @Vich\UploadableField(
* mapping="jpo_image",
* fileNameProperty="image1.name",
* size="image1.size",
* mimeType="image1.mimeType",
* originalName="image1.originalName",
* dimensions="image1.dimensions"
* )
*
* @var File
*/
private $image1File;
/**
* @Assert\Image(
* minWidth=20,
* maxWidth=330,
* minHeight=20,
* maxHeight=330
* )
* @Vich\UploadableField(
* mapping="jpo_image",
* fileNameProperty="image2.name",
* size="image2.size",
* mimeType="image2.mimeType",
* originalName="image2.originalName",
* dimensions="image2.dimensions"
* )
*
* @var File
*/
private $image2File;
/**
* @Assert\Image(
* minWidth=20,
* maxWidth=330,
* minHeight=20,
* maxHeight=330
* )
* @Vich\UploadableField(
* mapping="jpo_image",
* fileNameProperty="image3.name",
* size="image3.size",
* mimeType="image3.mimeType",
* originalName="image3.originalName",
* dimensions="image3.dimensions"
* )
*
* @var File
*/
private $image3File;
/**
* @ORM\Column(type="datetime_immutable")
*/
private $updated;
/**
* @ORM\Column(type="date")
* @Assert\GreaterThan("today")
*/
private $date;
/**
* @ORM\Column(type="time", nullable=true)
*/
private $heureDebut;
/**
* @ORM\Column(type="time", nullable=true)
*/
private $heureFin;
/**
* @Assert\File(
* maxSize=2000000,
* mimeTypes={
* "application/pdf",
* "application/msword",
* "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
* },
* mimeTypesMessage="Le type du fichier est invalide, Les types autorisées sont pdf, doc et docx"
* )
* @Vich\UploadableField(mapping="jpo_file", fileNameProperty="fileName", size="fileSize")
*
* @var File|null
*/
private $jpoFile;
/**
* @ORM\Column(type="string", nullable=true)
*
* @var string|null
*/
private $fileName;
/**
* @ORM\Column(type="integer", nullable=true)
*
* @var int|null
*/
private $fileSize;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $legende;
public function __construct()
{
$this->image1 = new EmbeddedFile();
$this->image2 = new EmbeddedFile();
$this->image3 = new EmbeddedFile();
$this->date = new \DateTime();
$this->datePublidation = new \DateTime();
$this->updated = new \DateTimeImmutable();
}
public function getDatePublidation(): ?\DateTimeInterface
{
return $this->datePublidation;
}
public function setDatePublidation(\DateTimeInterface $datePublidation): self
{
$this->datePublidation = $datePublidation;
return $this;
}
public function getDateActualisation(): ?\DateTimeInterface
{
return $this->dateActualisation;
}
public function setDateActualisation(\DateTimeInterface $dateActualisation): self
{
$this->dateActualisation = $dateActualisation;
return $this;
}
public function getLieu(): ?string
{
return $this->lieu;
}
public function setLieu(string $lieu): self
{
$this->lieu = $lieu;
return $this;
}
public function getContenu(): ?string
{
return $this->contenu;
}
public function setContenu(?string $contenu): self
{
$this->contenu = $contenu;
return $this;
}
public function getEtablissement(): ?Etablissement
{
return $this->etablissement;
}
public function setEtablissement(?Etablissement $etablissement): self
{
$this->etablissement = $etablissement;
return $this;
}
public function getImage1(): ?EmbeddedFile
{
return $this->image1;
}
public function setImage1(EmbeddedFile $image1): self
{
$this->image1 = $image1;
return $this;
}
public function getImage2(): ?EmbeddedFile
{
return $this->image2;
}
public function setImage2(EmbeddedFile $image2): self
{
$this->image2 = $image2;
return $this;
}
public function getImage3(): ?EmbeddedFile
{
return $this->image3;
}
public function setImage3(EmbeddedFile $image3): self
{
$this->image3 = $image3;
return $this;
}
/**
* @param File|UploadedFile $image
*/
public function setImage1File(?File $image = null): void
{
$this->image1File = $image;
// https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to-an-entity
if (null !== $image) {
$this->updated = new DateTimeImmutable();
}
}
public function getImage1File(): ?File
{
return $this->image1File;
}
/**
* @param File|UploadedFile $image
*/
public function setImage2File(?File $image = null): void
{
$this->image2File = $image;
// https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to-an-entity
if (null !== $image) {
$this->updated = new DateTimeImmutable();
}
}
public function getImage2File(): ?File
{
return $this->image2File;
}
/**
* @param File|UploadedFile $image
*/
public function setImage3File(?File $image = null): void
{
$this->image3File = $image;
// https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to-an-entity
if (null !== $image) {
$this->updated = new DateTimeImmutable();
}
}
public function getImage3File(): ?File
{
return $this->image3File;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
public function getHeureDebut(): ?\DateTimeInterface
{
return $this->heureDebut;
}
public function setHeureDebut(?\DateTimeInterface $heureDebut): self
{
$this->heureDebut = $heureDebut;
return $this;
}
public function getHeureFin(): ?\DateTimeInterface
{
return $this->heureFin;
}
public function setHeureFin(?\DateTimeInterface $heureFin): self
{
$this->heureFin = $heureFin;
return $this;
}
/**
* If manually uploading a file (i.e. not using Symfony Form) ensure an instance
* of 'UploadedFile' is injected into this setter to trigger the update. If this
* bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
* must be able to accept an instance of 'File' as the bundle will inject one here
* during Doctrine hydration.
*
* @param File|null $jpoFile
*/
public function setJpoFile(?File $jpoFile = null): void
{
$this->jpoFile = $jpoFile;
if (null !== $jpoFile) {
// It is required that at least one field changes if you are using doctrine
// otherwise the event listeners won't be called and the file is lost
$this->updatedAt = new DateTimeImmutable();
}
}
public function getJpoFile(): ?File
{
return $this->jpoFile;
}
public function setFileName(?string $fileName): void
{
$this->fileName = $fileName;
}
public function getFileName(): ?string
{
return $this->fileName;
}
public function setFileSize(?int $fileSize): void
{
$this->fileSize = $fileSize;
}
public function getFileSize(): ?int
{
return $this->fileSize;
}
public function getLegende(): ?string
{
return $this->legende;
}
public function setLegende(?string $legende): self
{
$this->legende = $legende;
return $this;
}
}