<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity
* @ORM\Table(name="mmpp_inscription_file")
* @ORM\HasLifecycleCallbacks
* @ORM\Entity(repositoryClass="App\Repository\InscriptionFileRepository")
*/
class InscriptionFile
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*/
protected $title;
/**
* @Gedmo\Slug(fields={"title"}, updatable=true, separator="-", unique=false)
* @ORM\Column(type="string", length=255, unique=false)
*/
protected $slug;
/**
* @ORM\Column(type="string", length=255)
*/
protected $path;
/**
* @ORM\Column(name="is_active", type="boolean")
*/
protected $isActive = true;
/**
* @Assert\File(
* maxSize="20M",
* mimeTypes = {
* "application/pdf",
* "application/x-pdf"
* }
* )
*/
public $file;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime", name="created_on")
* @var \DateTime
*/
protected $createdOn;
/**
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime", name="updated_on")
* @var \DateTime
*/
protected $updatedOn;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="tarifs")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
/**
* @ORM\ManyToOne(targetEntity="Formulaire", inversedBy="files")
* @ORM\JoinColumn(name="formulaire_id", referencedColumnName="id")
*/
protected $formulaire;
/**
* @ORM\OneToMany(targetEntity="InscriptionFileLog", mappedBy="inscriptionFile", cascade={"remove"})
* @var unknown
*/
protected $logs;
/**
* Constructor
*/
public function __construct()
{
$this->logs = new ArrayCollection();
}
public function getAbsolutePath()
{
return null === $this->path ? null : $this->getUploadRootDir().'/'.$this->path;
}
public function getWebPath()
{
return null === $this->path ? null : $this->getUploadDir().'/'.$this->path;
}
protected function getUploadRootDir()
{
// le chemin absolu du répertoire où les documents uploadés doivent être sauvegardés
$rootDir = __DIR__.'/../../../../web/'.$this->getUploadDir();
if ( ! is_dir($rootDir)) {
mkdir($rootDir, 0777, true);
}
return __DIR__.'/../../../../web/'.$this->getUploadDir();
}
protected function getUploadDir()
{
// on se débarrasse de « __DIR__ » afin de ne pas avoir de problème lorsqu'on affiche
// le document/image dans la vue.
return 'uploads/sliders';
}
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpload()
{
if (null !== $this->file) {
// faites ce que vous voulez pour générer un nom unique
$this->path = sha1(uniqid(mt_rand(), true)).'.'.$this->file->guessExtension();
}
}
/**
* @ORM\PostPersist()
* @ORM\PostUpdate()
*/
public function upload()
{
if (null === $this->file) {
return;
}
// s'il y a une erreur lors du déplacement du fichier, une exception
// va automatiquement être lancée par la méthode move(). Cela va empêcher
// proprement l'entité d'être persistée dans la base de données si
// erreur il y a
$this->file->move($this->getUploadRootDir(), $this->path);
unset($this->file);
}
/**
* @ORM\PostRemove()
*/
public function removeUpload()
{
if ($file = $this->getAbsolutePath()) {
unlink($file);
}
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set title
*
* @param string $title
* @return InscriptionFile
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* Get title
*
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* Set slug
*
* @param string $slug
* @return InscriptionFile
*/
public function setSlug($slug)
{
$this->slug = $slug;
return $this;
}
/**
* Get slug
*
* @return string
*/
public function getSlug()
{
return $this->slug;
}
/**
* Set path
*
* @param string $path
* @return InscriptionFile
*/
public function setPath($path)
{
$this->path = $path;
return $this;
}
/**
* Get path
*
* @return string
*/
public function getPath()
{
return $this->path;
}
/**
* Set isActive
*
* @param boolean $isActive
* @return InscriptionFile
*/
public function setIsActive($isActive)
{
$this->isActive = $isActive;
return $this;
}
/**
* Get isActive
*
* @return boolean
*/
public function getIsActive()
{
return $this->isActive;
}
/**
* Set createdOn
*
* @param \DateTime $createdOn
* @return InscriptionFile
*/
public function setCreatedOn($createdOn)
{
$this->createdOn = $createdOn;
return $this;
}
/**
* Get createdOn
*
* @return \DateTime
*/
public function getCreatedOn()
{
return $this->createdOn;
}
/**
* Set updatedOn
*
* @param \DateTime $updatedOn
* @return InscriptionFile
*/
public function setUpdatedOn($updatedOn)
{
$this->updatedOn = $updatedOn;
return $this;
}
/**
* Get updatedOn
*
* @return \DateTime
*/
public function getUpdatedOn()
{
return $this->updatedOn;
}
/**
* Set user
*
* @param \App\Entity\User $user
* @return InscriptionFile
*/
public function setUser(\App\Entity\User $user = null)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return \App\Entity\User
*/
public function getUser()
{
return $this->user;
}
/**
* Set formulaire
*
* @param \App\Entity\Formulaire $formulaire
* @return InscriptionFile
*/
public function setFormulaire(\App\Entity\Formulaire $formulaire = null)
{
$this->formulaire = $formulaire;
return $this;
}
/**
* Get formulaire
*
* @return \App\Entity\Formulaire
*/
public function getFormulaire()
{
return $this->formulaire;
}
/**
* Add logs
*
* @param \App\Entity\InscriptionFileLog $logs
* @return InscriptionFile
*/
public function addLog(\App\Entity\InscriptionFileLog $logs)
{
$this->logs[] = $logs;
return $this;
}
/**
* Remove logs
*
* @param \App\Entity\InscriptionFileLog $logs
*/
public function removeLog(\App\Entity\InscriptionFileLog $logs)
{
$this->logs->removeElement($logs);
}
/**
* Get logs
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getLogs()
{
return $this->logs;
}
public function isIsActive(): ?bool
{
return $this->isActive;
}
}