<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(repositoryClass="App\Repository\VoitureRepository")
* @Vich\Uploadable
* @ORM\HasLifecycleCallbacks
*/
class Voiture
{
const ESSENCE = "Essence";
const DIESEL = "Diesel";
const GAZ = "Gaz";
const HYBRIDE = "Hybride";
const ELECTRIQUE = "Electrique";
const AUTOMATIQUE ="Automatique";
const MANUELLE ="Manuelle";
const SEMIAUTOMATIQUE ="Semi-automatique";
const BEIGE ="Beige";
const NOIR ="Noir";
const BLEU ="Bleu";
const MARRON ="Marron";
const GRIS ="Gris";
const VERT ="Vert";
const ORANGE ="Orange";
const ROUGE ="Rouge";
const ARGENTÉ ="Argenté";
const BLANC ="Blanc";
const AUTRES_COULEURS ="Autres couleurs";
const COMPACTE = "Compacte";
const SUV4X4 = "SUV/4x4";
const ROUTIERE = "Routière";
const CABRIOLET = "Cabriolet";
const FAMILIALE = "Familiale";
const COUPE = "Coupé";
const UTILITAIRES = "Utilitaires";
const PICKUP = "Pick-up";
const VUVI = "VU/VI";
const BERLINE = "Berline";
const BREAK = "Break";
const AUTRES = "Autres";
const COULEUR = array(self::BEIGE=>1,self::NOIR =>2,self::BLEU =>3,self::MARRON =>4,self::GRIS =>5,self::VERT =>6,self::ORANGE =>7,self::ROUGE =>8,self::ARGENTÉ =>9,self::BLANC =>10,self::AUTRES_COULEURS =>11);
const COULEURFRONT = array(1=>self::BEIGE,2=>self::NOIR ,3=>self::BLEU,4=>self::MARRON,5=>self::GRIS,6=>self::VERT,7=>self::ORANGE,8 =>self::ROUGE,9=>self::ARGENTÉ,10=>self::BLANC,11=>self::AUTRES_COULEURS);
const BOITE = array(self::AUTOMATIQUE=>1,self::SEMIAUTOMATIQUE =>2,self::MANUELLE =>3);
const BOITEFRONT = array(1=>self::AUTOMATIQUE ,3=>self::MANUELLE,2=>self::SEMIAUTOMATIQUE);
const ENERGIE = array(self::ESSENCE=>1,self::DIESEL =>2,self::GAZ=>3,self::HYBRIDE=>4,self::ELECTRIQUE=>5);
const ENERGIEFRONT = array(1=>self::ESSENCE,2=>self::DIESEL,3=>self::GAZ,4=>self::HYBRIDE,5=>self::ELECTRIQUE);
const CATEGORIE = array(self::COMPACTE=>1,self::SUV4X4 =>2,self::ROUTIERE=>3,self::CABRIOLET=>4,self::FAMILIALE=>5,self::COUPE=>6,self::UTILITAIRES=>7,self::PICKUP=>8,self::VUVI=>9,self::AUTRES=>10,self::BERLINE=>11,self::BREAK=>12);
const CATEGORIEFRONT = array(1=>self::COMPACTE,2=>self::SUV4X4,3=>self::ROUTIERE,4=>self::CABRIOLET,5=>self::FAMILIALE,6=>self::COUPE,7=>self::UTILITAIRES,8=>self::PICKUP,9=>self::VUVI,10=>self::AUTRES,11=>self::BERLINE,12=>self::BREAK);
const SELLERIE = array(self::TISSU=>1,self::CUIRE =>2);
const SELLERIEFRONT = array(1=>self::TISSU,2=>self::CUIRE);
const TISSU = 'Revêtement en tissu ';
const CUIRE = 'Revêtement en cuire ';
const TYPEVOITURE = array(self::VOITUREOCCASION=>1,self::VOITURENEUF =>2);
const TYPEVOITUREFRONT = array(1=>self::VOITUREOCCASION,2=>self::VOITURENEUF);
const VOITUREOCCASION = "Voiture d'occasion";
const VOITURENEUF = "Voiture neuf";
public static $translations = [
'fr' => [
self::ESSENCE => 'Essence',
self::DIESEL => 'Diesel',
self::GAZ => 'Gaz',
self::HYBRIDE => 'Hybride',
self::ELECTRIQUE => 'Électrique',
self::AUTOMATIQUE => 'Automatique',
self::MANUELLE => 'Manuelle',
self::SEMIAUTOMATIQUE => 'Semi-automatique',
self::BEIGE => 'Beige',
self::NOIR => 'Noir',
self::BLEU => 'Bleu',
self::MARRON => 'Marron',
self::GRIS => 'Gris',
self::VERT => 'Vert',
self::ORANGE => 'Orange',
self::ROUGE => 'Rouge',
self::ARGENTÉ => 'Argenté',
self::BLANC => 'Blanc',
self::AUTRES_COULEURS => 'Autres couleurs',
self::COMPACTE => 'Compacte',
self::SUV4X4 => 'SUV/4x4',
self::ROUTIERE => 'Routière',
self::CABRIOLET => 'Cabriolet',
self::FAMILIALE => 'Familiale',
self::COUPE => 'Coupé',
self::UTILITAIRES => 'Utilitaires',
self::PICKUP => 'Pick-up',
self::VUVI => 'VU/VI',
self::BERLINE => 'Berline',
self::BREAK => 'Break',
self::AUTRES => 'Autres',
self::TISSU => 'Revêtement en tissu',
self::CUIRE => 'Revêtement en cuire',
self::VOITUREOCCASION => 'Voiture d\'occasion',
self::VOITURENEUF => 'Voiture neuf',
],
'en' => [
self::ESSENCE => 'Petrol',
self::DIESEL => 'Diesel',
self::GAZ => 'Gas',
self::HYBRIDE => 'Hybrid',
self::ELECTRIQUE => 'Electric',
self::AUTOMATIQUE => 'Automatic',
self::MANUELLE => 'Manual',
self::SEMIAUTOMATIQUE => 'Semi-automatic',
self::BEIGE => 'Beige',
self::NOIR => 'Black',
self::BLEU => 'Blue',
self::MARRON => 'Brown',
self::GRIS => 'Gray',
self::VERT => 'Green',
self::ORANGE => 'Orange',
self::ROUGE => 'Red',
self::ARGENTÉ => 'Silver',
self::BLANC => 'White',
self::AUTRES_COULEURS => 'Other colors',
self::COMPACTE => 'Compact',
self::SUV4X4 => 'SUV/4x4',
self::ROUTIERE => 'Sedan',
self::CABRIOLET => 'Convertible',
self::FAMILIALE => 'Family Car',
self::COUPE => 'Coupe',
self::UTILITAIRES => 'Utility Vehicle',
self::PICKUP => 'Pick-up',
self::VUVI => 'LCV/HGV',
self::BERLINE => 'Sedan',
self::BREAK => 'Station Wagon',
self::AUTRES => 'Others',
self::TISSU => 'Fabric covering',
self::CUIRE => 'Leather covering',
self::VOITUREOCCASION => 'Used car',
self::VOITURENEUF => 'New car',
],
];
public static function getTranslatedValue($constant, $locale)
{
return self::$translations[$locale][$constant] ?? $constant;
}
public static function getTranslatedConstantArray($array, $locale)
{
$translatedArray = [];
foreach ($array as $key => $value) {
$translatedArray[$key] = self::getTranslatedValue($value, $locale);
}
return $translatedArray;
}
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var string
*
* @Gedmo\Slug(fields={"titre","sousTitre"})
* @ORM\Column(type="string", unique=true)
*/
private $slug;
/**
* @ORM\Column(type="float")
*/
private $prixUnitaire;
/**
* @ORM\Column(type="string", length=255)
*/
private $titre;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Marque", inversedBy="voitures")
* @ORM\JoinColumn(nullable=false)
*/
private $marque;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Professionel", inversedBy="voitures")
* @ORM\JoinColumn(nullable=false)
*/
private $professionel;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Vente", mappedBy="voiture", orphanRemoval=true)
*/
private $ventes;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $annee;
/**
* @ORM\Column(type="integer")
*/
private $energie;
/**
* @ORM\Column(type="integer")
*/
private $reduction;
/**
* @ORM\Column(type="integer")
*/
private $garantie;
/**
* @ORM\Column(type="integer" ,nullable=true)
*/
private $livraison;
/**
* @ORM\Column(type="integer",nullable=true)
*/
private $certifiee;
/**
* @ORM\Column(type="integer")
*/
private $categorie;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $addresse;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $sousTitre;
/**
* @ORM\Column(type="integer")
*/
private $klm;
/**
* @ORM\Column(type="integer")
*/
private $boite;
/**
* @ORM\Column(type="integer")
*/
private $nbrPorte;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $couleur;
/**
* @ORM\Column(type="text")
*/
private $equipement;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $consommationMixe;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $consommationVille;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $consommationAutoroute;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $emissionsCo2Mixe;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\CertificatEvironnemental", inversedBy="voitures")
* @ORM\JoinColumn(nullable=false)
*/
private $certificatEvironnemental;
/**
* @ORM\OneToMany(targetEntity=Images::class, mappedBy="voiture", cascade={"persist", "remove"})
*/
private Collection $images;
/**
* @ORM\Column(type="integer")
*/
private $nbrPlace;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $puissanceDin;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $puissanceFiscale;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $interieur;
/**
* @ORM\Column(type="integer")
*/
private $sellerie ;
/**
* @ORM\Column(type="integer")
*/
private $typeVoiture ;
public function __construct()
{
$this->ventes = new ArrayCollection();
$this->images = new ArrayCollection();
$this->reduction = 0;
}
public function getId(): ?int
{
return $this->id;
}
public function getPrixUnitaire(): ?float
{
return $this->prixUnitaire;
}
public function setPrixUnitaire(float $prixUnitaire): self
{
$this->prixUnitaire = $prixUnitaire;
return $this;
}
public function getStock(): ?int
{
return $this->stock;
}
public function setStock(int $stock): self
{
$this->stock = $stock;
return $this;
}
public function getMarque(): ?Marque
{
return $this->marque;
}
public function setMarque(?Marque $marque): self
{
$this->marque = $marque;
return $this;
}
/**
* @return Collection|Vente[]
*/
public function getVentes(): Collection
{
return $this->ventes;
}
public function addVente(Vente $vente): self
{
if (!$this->ventes->contains($vente)) {
$this->ventes[] = $vente;
$vente->setVoiture($this);
}
return $this;
}
public function removeVente(Vente $vente): self
{
if ($this->ventes->contains($vente)) {
$this->ventes->removeElement($vente);
// set the owning side to null (unless already changed)
if ($vente->getVoiture() === $this) {
$vente->setVoiture(null);
}
}
return $this;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(string $type): self
{
$this->type = $type;
return $this;
}
public function __toString()
{
return $this->getTitre();
}
/**
* @return mixed
*/
public function getAddresse()
{
return $this->addresse;
}
/**
* @param mixed $addresse
*/
public function setAddresse($addresse): void
{
$this->addresse = $addresse;
}
/**
* @return mixed
*/
public function getGarantie()
{
return $this->garantie;
}
/**
* @param mixed $garantie
*/
public function setGarantie($garantie): void
{
$this->garantie = $garantie;
}
/**
* @return mixed
*/
public function getEnergie()
{
return $this->energie;
}
/**
* @param mixed $energie
*/
public function setEnergie($energie): void
{
$this->energie = $energie;
}
/**
* @return mixed
*/
public function getAnnee()
{
return $this->annee;
}
/**
* @param mixed $annee
*/
public function setAnnee($annee): void
{
$this->annee = $annee;
}
/**
* @return mixed
*/
public function getCategorie()
{
return $this->categorie;
}
/**
* @param mixed $categorie
*/
public function setCategorie($categorie): void
{
$this->categorie = $categorie;
}
/**
* @return mixed
*/
public function getKlm()
{
return $this->klm;
}
/**
* @param mixed $klm
*/
public function setKlm($klm): void
{
$this->klm = $klm;
}
/**
* @return mixed
*/
public function getBoite()
{
return $this->boite;
}
/**
* @param mixed $boite
*/
public function setBoite($boite): void
{
$this->boite = $boite;
}
/**
* @return mixed
*/
public function getNbrPorte()
{
return $this->nbrPorte;
}
/**
* @param mixed $nbrPorte
*/
public function setNbrPorte($nbrPorte): void
{
$this->nbrPorte = $nbrPorte;
}
/**
* @return mixed
*/
public function getCouleur()
{
return $this->couleur;
}
/**
* @param mixed $couleur
*/
public function setCouleur($couleur): void
{
$this->couleur = $couleur;
}
/**
* @return mixed
*/
public function getEquipement()
{
return $this->equipement;
}
/**
* @param mixed $equipement
*/
public function setEquipement($equipement): void
{
$this->equipement = $equipement;
}
public function addImage(Images $image): self
{
if (!$this->images->contains($image)) {
$this->images[] = $image;
$image->setVoiture($this);
}
return $this;
}
public function removeImage(Images $image): self
{
if ($this->images->contains($image)) {
$this->images->removeElement($image);
// set the owning side to null (unless already changed)
if ($image->getVoiture() === $this) {
$image->setVoiture(null);
}
}
return $this;
}
/**
* @return Collection|Images[]
*/
public function getImages(): Collection
{
return $this->images;
}
public function getNom(): ?string
{
return $this->nom;
}
public function setNom(string $nom): self
{
$this->nom = $nom;
return $this;
}
public function getTitre(): ?string
{
return $this->titre;
}
public function setTitre(string $titre): self
{
$this->titre = $titre;
return $this;
}
public function getLivraison(): ?bool
{
return $this->livraison;
}
public function setLivraison(int $livraison): self
{
$this->livraison = $livraison;
return $this;
}
public function getCertifiee(): ?bool
{
return $this->certifiee;
}
public function setCertifiee(int $certifiee): self
{
$this->certifiee = $certifiee;
return $this;
}
public function getSousTitre(): ?string
{
return $this->sousTitre;
}
public function setSousTitre(?string $sousTitre): self
{
$this->sousTitre = $sousTitre;
return $this;
}
public function getReduction(): ?int
{
return $this->reduction;
}
public function setReduction(int $reduction): self
{
$this->reduction = $reduction;
return $this;
}
public function getProfessionel(): ?Professionel
{
return $this->professionel;
}
public function setProfessionel(?Professionel $professionel): self
{
$this->professionel = $professionel;
return $this;
}
public function getConsommationMixe(): ?string
{
return $this->consommationMixe;
}
public function setConsommationMixe(string $consommationMixe): self
{
$this->consommationMixe = $consommationMixe;
return $this;
}
public function getConsommationVille(): ?string
{
return $this->consommationVille;
}
public function setConsommationVille(string $consommationVille): self
{
$this->consommationVille = $consommationVille;
return $this;
}
public function getConsommationAutoroute(): ?string
{
return $this->consommationAutoroute;
}
public function setConsommationAutoroute(string $consommationAutoroute): self
{
$this->consommationAutoroute = $consommationAutoroute;
return $this;
}
public function getEmissionsCo2Mixe(): ?string
{
return $this->emissionsCo2Mixe;
}
public function setEmissionsCo2Mixe(string $emissionsCo2Mixe): self
{
$this->emissionsCo2Mixe = $emissionsCo2Mixe;
return $this;
}
public function getCertificatEvironnemental(): ?CertificatEvironnemental
{
return $this->certificatEvironnemental;
}
public function setCertificatEvironnemental(?CertificatEvironnemental $certificatEvironnemental): self
{
$this->certificatEvironnemental = $certificatEvironnemental;
return $this;
}
public function getNbrPlace(): ?int
{
return $this->nbrPlace;
}
public function setNbrPlace(int $nbrPlace): self
{
$this->nbrPlace = $nbrPlace;
return $this;
}
public function getPuissanceDin(): ?string
{
return $this->puissanceDin;
}
public function setPuissanceDin(?string $puissanceDin): self
{
$this->puissanceDin = $puissanceDin;
return $this;
}
public function getPuissanceFiscale(): ?string
{
return $this->puissanceFiscale;
}
public function setPuissanceFiscale(?string $puissanceFiscale): self
{
$this->puissanceFiscale = $puissanceFiscale;
return $this;
}
public function getInterieur(): ?string
{
return $this->interieur;
}
public function setInterieur(?string $interieur): self
{
$this->interieur = $interieur;
return $this;
}
public function getSellerie(): ?int
{
return $this->sellerie;
}
public function setSellerie(int $sellerie): self
{
$this->sellerie = $sellerie;
return $this;
}
public function getTypeVoiture(): ?int
{
return $this->typeVoiture;
}
public function setTypeVoiture(int $typeVoiture): self
{
$this->typeVoiture = $typeVoiture;
return $this;
}
/**
* @return string
*/
public function getSlug(): string
{
return $this->slug;
}
/**
* @param string $slug
*/
public function setSlug(string $slug): void
{
$this->slug = $slug;
}
}