<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Mapping\Index;
use function Symfony\Component\Translation\t;
/**
* Cars
*
* @ORM\Table(name="cars",indexes={
* @Index(name="plate_number",columns={"plate_number"}),
* @Index(name="owner_name",columns={"owner_name"})
* })
* @ORM\Entity
*/
class Cars
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="owner_name", type="string", length=250, nullable=true, options={"comment"="Tulajdonos neve"})
*/
private $ownerName;
/**
* @var string|null
*
* @ORM\Column(name="owner_address", type="string", length=250, nullable=true, options={"comment"="Lakcím"})
*/
private $ownerAddress;
/**
* @var string
*
* @ORM\Column(name="owner_phone", type="string", length=30, nullable=true, options={"comment"="Telefonszám"})
*/
private $ownerPhone;
/**
* @var string|null
*
* @ORM\Column(name="owner_mail", type="string", length=100, nullable=true, options={"comment"="Email cím"})
*/
private $ownerMail;
/**
* @var int
*
* @ORM\Column(name="owner_req_mail", type="integer", nullable=true, options={"comment"="Kérek emailt"})
*/
private $ownerReqMail;
/**
* @var string
*
* @ORM\Column(name="plate_number", type="string", length=20, nullable=true, options={"comment"="Rendszám"})
*/
private $plateNumber;
/**
* @var string
*
* @ORM\Column(name="manufacturer", type="string", length=250, nullable=false, options={"comment"="Gyártmány"})
*/
private $manufacturer;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=250, nullable=true, options={"comment"="Típus"})
*/
private $type;
/**
* @var int
*
* @ORM\Column(name="vintage", type="integer", nullable=true, options={"comment"="Évjárat"})
*/
private $vintage;
/**
* @var string
*
* @ORM\Column(name="fuel", type="string", length=20, nullable=true, options={"comment"="Üzemanyag"})
*/
private $fuel;
/**
* @var int|null
*
* @ORM\Column(name="cylinder_capacity", type="integer", nullable=true, options={"comment"="Hengerürtartalom"})
*/
private $cylinderCapacity;
/**
* @var string|null
*
* @ORM\Column(name="vin_code", type="string", length=40, nullable=true, options={"comment"="Alvázszám"})
*/
private $vinCode;
/**
* @var string|null
*
* @ORM\Column(name="motor_code", type="string", length=40, nullable=true, options={"comment"="Motorszám"})
*/
private $motorCode;
/**
* @var int|null
*
* @ORM\Column(name="kw", type="integer", nullable=true, options={"comment"="Teljesítmény"})
*/
private $kw;
/**
* @var string|null
*
* @ORM\Column(name="traffic", type="string", length=50, nullable=true, options={"comment"="Forgalmi"})
*/
private $traffic;
/**
* @var \DateTime|null
*
* @ORM\Column(name="technical_date", type="date", nullable=true, options={"comment"="Műszakivizsga"})
*/
private $technicalDate;
/**
* @var string|null
*
* @ORM\Column(name="note", type="text", length=65535, nullable=true, options={"comment"="Megjegyzés"})
*/
private $note;
/**
* @var \DateTime
*
* @ORM\Column(name="created", type="datetime", nullable=false, options={"comment"="Létrehozva"})
*/
private $created;
/**
* @var \DateTime
*
* @ORM\Column(name="modified", type="datetime", nullable=true, options={"comment"="Módosítva"})
*/
private $modified;
/**
* @ORM\OneToMany(targetEntity=PdfFiles::class, mappedBy="car", cascade={"persist"},orphanRemoval=true)
*/
public $pdfs;
/**
* @ORM\OneToMany(targetEntity=Repairs::class, mappedBy="car")
*/
public $repairs;
private $settings;
public static $fuelTypes = [
'diesel' => 'Diesel',
'benzin' => 'Petrol',
'gas' => 'Autogas',
'electric' => 'Electric',
'hybrid' => 'Hybrid',
];
public static function getFuelTypes()
{
$types = [];
foreach (Cars::$fuelTypes as $key => $value) {
$types[$key] = t($value);
}
return $types;
}
/**
* @ORM\OneToMany(targetEntity=Events::class, mappedBy="car_id")
*/
private $events;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $technical_mail_sended;
/**
* @ORM\OneToMany(targetEntity=CarAttachment::class, mappedBy="car", cascade={"persist"}, orphanRemoval=true)
*/
private $attachments;
/**
* @ORM\ManyToOne(targetEntity=Group::class, inversedBy="cars")
*/
private $parentGroup;
/**
* @ORM\ManyToOne(targetEntity=CarOwner::class, cascade={"persist"}, inversedBy="cars")
*/
private $owners;
/**
* @ORM\ManyToOne(targetEntity=CarOwner::class, cascade={"persist"}, inversedBy="cars")
*/
private $contact;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $insurance;
/**
* @ORM\Column(type="date", nullable=true)
*/
private $insurance_duedate;
public function __construct()
{
$this->created = new \DateTime();
$this->pdfFiles = new ArrayCollection();
$this->title = new ArrayCollection();
$this->attachments = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getOwnerName(): ?string
{
return $this->ownerName;
}
public function setOwnerName(string $ownerName): self
{
$this->ownerName = $ownerName;
return $this;
}
public function getOwnerAddress(): ?string
{
return $this->ownerAddress;
}
public function setOwnerAddress(?string $ownerAddress): self
{
$this->ownerAddress = $ownerAddress;
return $this;
}
public function getOwnerPhone(): ?string
{
return $this->ownerPhone;
}
public function setOwnerPhone(?string $ownerPhone): self
{
$this->ownerPhone = $ownerPhone;
return $this;
}
public function getOwnerMail(): ?string
{
return $this->ownerMail;
}
public function setOwnerMail(?string $ownerMail): self
{
$this->ownerMail = $ownerMail;
return $this;
}
public function getOwnerReqMail(): ?int
{
return $this->ownerReqMail == null ? 0 : $this->ownerReqMail;
}
public function setOwnerReqMail(int $ownerReqMail): self
{
$this->ownerReqMail = $ownerReqMail;
return $this;
}
public function getPlateNumber(): ?string
{
return $this->plateNumber;
}
public function setPlateNumber(string $plateNumber): self
{
$this->plateNumber = strtoupper($plateNumber);
return $this;
}
public function getManufacturer(): ?string
{
return $this->manufacturer;
}
public function setManufacturer(string $manufacturer): self
{
$this->manufacturer = $manufacturer;
return $this;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(?string $type): self
{
$this->type = $type;
return $this;
}
public function getVintage(): ?int
{
return $this->vintage;
}
public function setVintage(?int $vintage): self
{
$this->vintage = $vintage;
return $this;
}
public function getFuel(): ?string
{
return $this->fuel;
}
public function setFuel(string $fuel): self
{
$this->fuel = $fuel;
return $this;
}
public function getCylinderCapacity(): ?int
{
return $this->cylinderCapacity;
}
public function setCylinderCapacity(?int $cylinderCapacity): self
{
$this->cylinderCapacity = $cylinderCapacity;
return $this;
}
public function getVinCode(): ?string
{
return $this->vinCode;
}
public function setVinCode(?string $vinCode): self
{
$this->vinCode = $vinCode;
return $this;
}
public function getMotorCode(): ?string
{
return $this->motorCode;
}
public function setMotorCode(?string $motorCode): self
{
$this->motorCode = $motorCode;
return $this;
}
public function getKw(): ?int
{
return $this->kw;
}
public function setKw(?int $kw): self
{
$this->kw = $kw;
return $this;
}
public function getTraffic(): ?string
{
return $this->traffic;
}
public function setTraffic(?string $traffic): self
{
$this->traffic = $traffic;
return $this;
}
public function getTechnicalDate(): ?\DateTimeInterface
{
return $this->technicalDate;
}
public function setTechnicalDate(?\DateTimeInterface $technicalDate): self
{
if ($technicalDate && $this->technicalDate && $technicalDate->format('Y-m-d') != $this->technicalDate->format('Y-m-d')) {
$this->technical_mail_sended = null;
}
$this->technicalDate = $technicalDate;
return $this;
}
public function getNote(): ?string
{
return $this->note;
}
public function setNote(?string $note): self
{
$this->note = $note;
return $this;
}
public function getCreated(): ?\DateTimeInterface
{
return $this->created;
}
public function setCreated(\DateTimeInterface $created): self
{
$this->created = $created;
return $this;
}
public function __toString()
{
if ($this->getPlateNumber()) {
return (string)$this->getPlateNumber() . " - " . $this->getManufacturer() . " " . $this->getType() . " (" . $this->getVintage() . ")";
} else {
return t('No Plate number') . " - " . $this->getManufacturer() . " " . $this->getType();
}
}
// private function addToDate($field, $str = " + 1 years")
// {
// $this->$field = \DateTime::createFromFormat("Y-m-d", date('Y-m-d', strtotime($this->$field->format('Y-m-d') . $str)));
// }
public function rowCss($days = 60)
{
$now = new \DateTime();
if ($this->technicalDate) {
$nd = \DateTime::createFromFormat("Y-m-d", date('Y-m-d', strtotime($this->technicalDate->format('Y-m-d') . "-$days days")));
if ($this->technicalDate < $now) {
return "alert alert-danger";
} else if ($nd < $now) {
return "alert alert-warning";
}
}
return "";
}
/**
* @return Collection|RepairItems[]
*/
public function getWorkPdfs(): Collection
{
$criteria = Criteria::create();
$criteria->where(Criteria::expr()->eq('type', 'Elszámolás'));
$criteria->orderBy(['id' => 'desc']);
// $criteria->setMaxResults(5);
return $this->pdfs->matching($criteria);
}
/**
* @return Collection|RepairItems[]
*/
public function getQuotePdfs(): Collection
{
$criteria = Criteria::create();
$criteria->where(Criteria::expr()->eq('type', 'Ajánlat'));
$criteria->orderBy(['id' => 'desc']);
//$criteria->setMaxResults(5);
return $this->pdfs->matching($criteria);
}
public function getLastKm()
{
$criteria = Criteria::create();
$criteria->orderBy(['km' => 'desc']);
$criteria->setMaxResults(1);
$row = $this->repairs->matching($criteria);
return count($row) > 0 ? $row[0]->getKm() : null;
}
public function getModified(): ?\DateTimeInterface
{
return $this->modified;
}
/**
* @return Collection|Events[]
*/
public function getTitle(): Collection
{
return $this->title;
}
public function addTitle(Events $title): self
{
if (!$this->title->contains($title)) {
$this->title[] = $title;
$title->setCarId($this);
}
return $this;
}
public function removeTitle(Events $title): self
{
if ($this->title->removeElement($title)) {
// set the owning side to null (unless already changed)
if ($title->getCarId() === $this) {
$title->setCarId(null);
}
}
return $this;
}
public function getTechnicalMailSended(): ?\DateTimeInterface
{
return $this->technical_mail_sended;
}
public function setTechnicalMailSended(?\DateTimeInterface $technical_mail_sended): self
{
$this->technical_mail_sended = $technical_mail_sended;
return $this;
}
/**
* @return Collection<int, CarAttachment>
*/
public function getCarAttachments(): Collection
{
return $this->attachments;
}
public function addCarAttachment(CarAttachment $attachment): self
{
if (!$this->attachments->contains($attachment)) {
$this->attachments[] = $attachment;
$attachment->setCar($this);
}
return $this;
}
public function removeCarAttachment(CarAttachment $attachment): self
{
if ($this->attachments->removeElement($attachment)) {
// set the owning side to null (unless already changed)
if ($attachment->getCar() === $this) {
$attachment->setCar(null);
}
}
return $this;
}
public function getParentGroup(): ?Group
{
return $this->parentGroup;
}
public function setParentGroup(?Group $parentGroup): self
{
$this->parentGroup = $parentGroup;
return $this;
}
public function getOwners(): ?CarOwner
{
return $this->owners;
}
public function setOwners(?CarOwner $owners): self
{
$this->owners = $owners;
return $this;
}
public function getContact(): ?CarOwner
{
return $this->contact;
}
public function setContact(?CarOwner $contact): self
{
$this->contact = $contact;
return $this;
}
public function getInsurance(): ?string
{
return $this->insurance;
}
public function setInsurance(?string $insurance): self
{
$this->insurance = $insurance;
return $this;
}
public function getInsuranceDuedate(): ?\DateTimeInterface
{
return $this->insurance_duedate;
}
public function setInsuranceDuedate(?\DateTimeInterface $insurance_duedate): self
{
$this->insurance_duedate = $insurance_duedate;
return $this;
}
}