<?php
namespace App\Entity;
use App\Repository\FormulaireRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass=FormulaireRepository::class)
*/
class Formulaire
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $nom;
/**
* @ORM\Column(type="string", length=255)
*/
private $titre;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $descriptionDebut;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $descriptionFin;
/**
* @var \DateTime $dateCreation
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateCreation;
/**
* @var \DateTime $dateModification
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateModification;
/**
* @ORM\ManyToOne(targetEntity=Projet::class, inversedBy="formulaires")
* @ORM\JoinColumn(nullable=false)
*/
private $projet;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $idImport;
/**
* @ORM\OneToMany(targetEntity=FormulaireEtape::class, mappedBy="formulaire", orphanRemoval=true)
* @ORM\OrderBy({"ordre" = "ASC"})
*/
private $formulaireEtapes;
/**
* @ORM\OneToMany(targetEntity=Page::class, mappedBy="formulaire")
*/
private $pages;
/**
* @ORM\OneToMany(targetEntity=Article::class, mappedBy="formulaire")
*/
private $articles;
public function __construct()
{
$this->formulaireEtapes = new ArrayCollection();
$this->pages = new ArrayCollection();
$this->articles = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getNom(): ?string
{
return $this->nom;
}
public function setNom(string $nom): self
{
$nom = str_replace("|", "-", $nom);
$nom = str_replace(PHP_EOL, '', $nom);
$nom = str_replace(array("\n", "\r"), '', $nom);
$nom = $this->slugify($nom);
$this->nom = $nom;
return $this;
}
public function getTitre(): ?string
{
return $this->titre;
}
public function setTitre(string $titre): self
{
$titre = str_replace("|", "-", $titre);
$titre = str_replace(PHP_EOL, '', $titre);
$titre = str_replace(array("\n", "\r"), '', $titre);
$this->titre = $titre;
return $this;
}
public function getDescriptionDebut(): ?string
{
return $this->descriptionDebut;
}
public function setDescriptionDebut(?string $descriptionDebut): self
{
$descriptionDebut = str_replace("|", "-", $descriptionDebut);
$descriptionDebut = str_replace(PHP_EOL, '', $descriptionDebut);
$descriptionDebut = str_replace(array("\n", "\r"), '', $descriptionDebut);
$this->descriptionDebut = $descriptionDebut;
return $this;
}
public function getDescriptionFin(): ?string
{
return $this->descriptionFin;
}
public function setDescriptionFin(?string $descriptionFin): self
{
$descriptionFin = str_replace("|", "-", $descriptionFin);
$descriptionFin = str_replace(PHP_EOL, '', $descriptionFin);
$descriptionFin = str_replace(array("\n", "\r"), '', $descriptionFin);
$this->descriptionFin = $descriptionFin;
return $this;
}
public function getDateCreation(): ?\DateTimeInterface
{
return $this->dateCreation;
}
public function setDateCreation(?\DateTimeInterface $dateCreation): self
{
$this->dateCreation = $dateCreation;
return $this;
}
public function getDateModification(): ?\DateTimeInterface
{
return $this->dateModification;
}
public function setDateModification(?\DateTimeInterface $dateModification): self
{
$this->dateModification = $dateModification;
return $this;
}
public function getProjet(): ?Projet
{
return $this->projet;
}
public function setProjet(?Projet $projet): self
{
$this->projet = $projet;
return $this;
}
public function getIdImport(): ?string
{
return $this->idImport;
}
public function setIdImport(?string $idImport): self
{
$this->idImport = $idImport;
return $this;
}
/**
* @return Collection<int, FormulaireEtape>
*/
public function getFormulaireEtapes(): Collection
{
return $this->formulaireEtapes;
}
public function addFormulaireEtape(FormulaireEtape $formulaireEtape): self
{
if (!$this->formulaireEtapes->contains($formulaireEtape)) {
$this->formulaireEtapes[] = $formulaireEtape;
$formulaireEtape->setFormulaire($this);
}
return $this;
}
public function removeFormulaireEtape(FormulaireEtape $formulaireEtape): self
{
if ($this->formulaireEtapes->removeElement($formulaireEtape)) {
// set the owning side to null (unless already changed)
if ($formulaireEtape->getFormulaire() === $this) {
$formulaireEtape->setFormulaire(null);
}
}
return $this;
}
public function __toString(): string
{
return $this->getId() . " - " . $this->getTitre();
}
public function getExportData()
{
$nom = str_replace("|", "-", $this->getNom());
$nom = str_replace(PHP_EOL, '', $nom);
$nom = str_replace(array("\n", "\r"), '', $nom);
$titre = str_replace("|", "-", $this->getTitre());
$titre = str_replace(PHP_EOL, '', $titre);
$titre = str_replace(array("\n", "\r"), '', $titre);
$descriptionDebut = str_replace("|", "-", $this->getDescriptionDebut());
$descriptionDebut = str_replace(PHP_EOL, '', $descriptionDebut);
$descriptionDebut = str_replace(array("\n", "\r"), '', $descriptionDebut);
$descriptionFin = str_replace("|", "-", $this->getDescriptionFin());
$descriptionFin = str_replace(PHP_EOL, '', $descriptionFin);
$descriptionFin = str_replace(array("\n", "\r"), '', $descriptionFin);
$data = [
'tb_form_id' => $this->getId(),
'tb_form_c_nom' => $nom,
'tb_form_c_nom_online' => $titre,
'tb_form_c_description_debut' => $descriptionDebut,
'tb_form_c_description_fin' => $descriptionFin,
'tb_form_id_import' => $this->getIdImport(),
];
return $data;
}
/**
* @return Collection<int, Page>
*/
public function getPages(): Collection
{
return $this->pages;
}
public function addPage(Page $page): self
{
if (!$this->pages->contains($page)) {
$this->pages[] = $page;
$page->setFormulaire($this);
}
return $this;
}
public function removePage(Page $page): self
{
if ($this->pages->removeElement($page)) {
// set the owning side to null (unless already changed)
if ($page->getFormulaire() === $this) {
$page->setFormulaire(null);
}
}
return $this;
}
/**
* @return Collection<int, Article>
*/
public function getArticles(): Collection
{
return $this->articles;
}
public function addArticle(Article $article): self
{
if (!$this->articles->contains($article)) {
$this->articles[] = $article;
$article->setFormulaire($this);
}
return $this;
}
public function removeArticle(Article $article): self
{
if ($this->articles->removeElement($article)) {
// set the owning side to null (unless already changed)
if ($article->getFormulaire() === $this) {
$article->setFormulaire(null);
}
}
return $this;
}
public function slugify($string)
{
return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-'));
}
}