<?php
namespace AdminBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* CarType
*/
#[ORM\Table(name: 'car_type')]
#[ORM\Entity(repositoryClass: \AdminBundle\Repository\CarTypeRepository::class)]
#[ORM\HasLifecycleCallbacks]
class CarType extends BaseEntity
{
const CAR_TYPE_FILE_FOLDER = 'upload/vehicleType/';
/**
* @var integer
*/
#[ORM\Column(name: 'id', type: 'integer', nullable: false)]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected $id;
/**
* @var string
*/
#[ORM\Column(name: 'name', type: 'string', length: 64)]
protected $name;
/**
* @var string
*/
#[ORM\Column(name: 'short_name', type: 'string', length: 64)]
protected $shortName;
/**
* @var string
*/
#[ORM\Column(name: 'description', type: 'string', length: 64)]
protected $description;
/**
* @var integer
*/
#[ORM\Column(name: 'passengers', type: 'integer')]
protected $passengers;
/**
* @var integer
*/
#[ORM\Column(name: 'luggage', type: 'integer')]
protected $luggage;
/**
* @var integer
*/
#[ORM\Column(name: 'hand_luggage', type: 'integer')]
protected $handLuggage;
/**
* @var float
*/
#[ORM\Column(name: 'price_unit', type: 'float')]
protected $priceUnit;
/**
* @var integer
*/
#[ORM\Column(name: 'long_distance', type: 'integer')]
protected $longDistance;
/**
* @var integer
*/
#[ORM\Column(name: 'long_distance_adjustment', type: 'integer')]
protected $longDistanceAdjustment;
/**
* @var integer
*/
#[ORM\Column(name: 'duration_extra_charge', type: 'float')]
protected $durationExtraCharge;
/**
* @var integer
*/
#[ORM\Column(name: 'duration_extra_charge_after', type: 'integer')]
protected $durationExtraChargeAfter;
/**
* @var integer
*/
#[ORM\Column(name: 'every_extra_distance', type: 'integer')]
protected $everyExtraDistance;
/**
* @var integer
*/
#[ORM\Column(name: 'every_extra_distance_cost', type: 'integer')]
protected $everyExtraDistanceCost;
/**
* @var bool
*/
#[ORM\Column(name: 'status', type: 'boolean')]
protected $status;
/**
* @var float
*/
#[ORM\Column(name: 'minimum_charge', type: 'float')]
protected $minimumCharge;
/**
* @var float
*/
#[ORM\Column(name: 'bookfornow_charge_min', type: 'float', options: ['default' => 0])]
protected $bookfornowChargeMin;
/**
* @var float
*/
#[ORM\Column(name: 'dynamic_pricing_charge', type: 'decimal', precision: 7, scale: 2)]
protected $dynamicPricingCharge;
/**
* @var float
*/
#[ORM\Column(name: 'tour_extra_price_per_hour', type: 'decimal', precision: 7, scale: 2, nullable: true)]
protected $tourExtraPricePerHour = 15;
/**
* @var float
*/
#[ORM\Column(name: 'quick_quote_pricing', type: 'decimal', precision: 7, scale: 2, nullable: true)]
protected $quickQuotePricing = 0;
/**
* @var float
*/
#[ORM\Column(name: 'max_price_undispatched_booking', type: 'decimal', precision: 7, scale: 2, nullable: true, options: ['default' => 0])]
protected $maxPriceUndispatchedBooking = 0;
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*/
#[ORM\JoinTable(name: 'car_type_replacements')]
#[ORM\JoinColumn(name: 'car_a_id', referencedColumnName: 'id')]
#[ORM\InverseJoinColumn(name: 'car_b_id', referencedColumnName: 'id')]
#[ORM\ManyToMany(targetEntity: \CarType::class)]
protected $replacements;
/**
* @var boolean
*/
#[ORM\Column(name: 'show_on_booking_form', type: 'boolean', nullable: true, options: ['default' => 1])]
protected $showOnBookingForm = 1;
/**
* @var string
*/
#[ORM\Column(name: 'image', type: 'string', length: 255, nullable: true)]
protected $image;
/**
* @var \DateTime
*/
#[ORM\Column(name: 'creation_date', type: 'date', nullable: true)]
protected $creationDate;
private $imageFile;
public function __construct()
{
$this->replacements = new ArrayCollection();
$this->creationDate = new \DateTime();
$this->bookfornowChargeMin = 0;
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getShortName()
{
return $this->shortName;
}
/**
* @param string $shortName
*/
public function setShortName($shortName)
{
$this->shortName = $shortName;
}
/**
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* @param string $description
*/
public function setDescription($description)
{
$this->description = $description;
}
/**
* @return mixed
*/
public function getReplacements()
{
return $this->replacements;
}
/**
* @param mixed $replacements
*/
public function setReplacements($replacements)
{
$this->replacements = $replacements;
}
/**
* @return array
*/
public function getReplacementIds()
{
$ids = [];
foreach ($this->getReplacements() as $replacement) {
$ids[] = $replacement->getId();
}
return $ids;
}
/**
* @return int
*/
public function getPassengers()
{
return $this->passengers;
}
/**
* @param int $passengers
*/
public function setPassengers($passengers)
{
$this->passengers = $passengers;
}
/**
* @return int
*/
public function getLuggage()
{
return $this->luggage;
}
/**
* @param int $luggage
*/
public function setLuggage($luggage)
{
$this->luggage = $luggage;
}
/**
* @return int
*/
public function getHandLuggage()
{
return $this->handLuggage;
}
/**
* @param int $handLuggage
*/
public function setHandLuggage($handLuggage)
{
$this->handLuggage = $handLuggage;
}
/**
* @return int
*/
public function getPriceUnit()
{
return $this->priceUnit;
}
/**
* @param int $priceUnit
*/
public function setPriceUnit($priceUnit)
{
$this->priceUnit = $priceUnit;
}
/**
* @return int
*/
public function getLongDistance()
{
return $this->longDistance;
}
/**
* @param int $longDistance
*/
public function setLongDistance($longDistance)
{
$this->longDistance = $longDistance;
}
/**
* @return int
*/
public function getLongDistanceAdjustment()
{
return $this->longDistanceAdjustment;
}
/**
* @param int $longDistanceAdjustment
*/
public function setLongDistanceAdjustment($longDistanceAdjustment)
{
$this->longDistanceAdjustment = $longDistanceAdjustment;
}
/**
* @return int
*/
public function getDurationExtraCharge()
{
return $this->durationExtraCharge;
}
/**
* @param int $durationExtraCharge
*/
public function setDurationExtraCharge($durationExtraCharge)
{
$this->durationExtraCharge = $durationExtraCharge;
}
/**
* @return int
*/
public function getDurationExtraChargeAfter()
{
return $this->durationExtraChargeAfter;
}
/**
* @param int $durationExtraChargeAfter
*/
public function setDurationExtraChargeAfter($durationExtraChargeAfter)
{
$this->durationExtraChargeAfter = $durationExtraChargeAfter;
}
/**
* @return int
*/
public function getEveryExtraDistance()
{
return $this->everyExtraDistance;
}
/**
* @param int $everyExtraDistance
*/
public function setEveryExtraDistance($everyExtraDistance)
{
$this->everyExtraDistance = $everyExtraDistance;
}
/**
* @return int
*/
public function getEveryExtraDistanceCost()
{
return $this->everyExtraDistanceCost;
}
/**
* @param int $everyExtraDistanceCost
*/
public function setEveryExtraDistanceCost($everyExtraDistanceCost)
{
$this->everyExtraDistanceCost = $everyExtraDistanceCost;
}
/**
* @return boolean
*/
public function isStatus()
{
return $this->status;
}
/**
* @param boolean $status
*/
public function setStatus($status)
{
$this->status = $status;
}
/**
* @return float
*/
public function getMinimumCharge()
{
return $this->minimumCharge;
}
/**
* @param float $minimumCharge
*/
public function setMinimumCharge($minimumCharge)
{
$this->minimumCharge = $minimumCharge;
}
/**
* @return float
*/
public function getBookfornowChargeMin() {
return $this->bookfornowChargeMin;
}
/**
* @param float $bookfornowChargeMin
*/
public function setBookfornowChargeMin($bookfornowChargeMin) {
$this->bookfornowChargeMin = $bookfornowChargeMin;
}
public function __toString()
{
return $this->getName() ? $this->getName() . ' (' . $this->getPassengers() . ')' : 'n\a';
}
/**
* @return float
*/
public function getDynamicPricingCharge()
{
return $this->dynamicPricingCharge;
}
/**
* @param float $dynamicPricingCharge
*/
public function setDynamicPricingCharge($dynamicPricingCharge)
{
$this->dynamicPricingCharge = $dynamicPricingCharge;
}
/**
* @return float
*/
public function getTourExtraPricePerHour()
{
return $this->tourExtraPricePerHour;
}
/**
* @param float $tourExtraPricePerHour
*/
public function setTourExtraPricePerHour($tourExtraPricePerHour)
{
$this->tourExtraPricePerHour = $tourExtraPricePerHour;
}
/**
* @return float
*/
public function getQuickQuotePricing()
{
return $this->quickQuotePricing;
}
/**
* @param float $quickQuotePricing
*/
public function setQuickQuotePricing($quickQuotePricing)
{
$this->quickQuotePricing = $quickQuotePricing;
}
/**
* @return mixed
*/
public function getMaxPriceUndispatchedBooking()
{
return $this->maxPriceUndispatchedBooking;
}
/**
* @param mixed $maxPriceUndispatchedBooking
*/
public function setMaxPriceUndispatchedBooking($maxPriceUndispatchedBooking)
{
$this->maxPriceUndispatchedBooking = $maxPriceUndispatchedBooking;
}
/**
* @return bool
*/
public function getShowOnBookingForm()
{
return $this->showOnBookingForm;
}
/**
* @param bool $showOnBookingForm
*/
public function setShowOnBookingForm($showOnBookingForm)
{
$this->showOnBookingForm = $showOnBookingForm;
}
/**
* @return string
*/
public function getImage()
{
return $this->image;
}
/**
* @param string $image
*/
public function setImage($image)
{
$this->image = $image;
}
/**
* @param UploadedFile $imageFile
*/
public function setImageFile(UploadedFile $imageFile = null)
{
$this->imageFile = $imageFile;
}
/**
* @return UploadedFile
*/
public function getImageFile()
{
return $this->imageFile;
}
public function getUploadFilePath()
{
if (!is_dir(self::CAR_TYPE_FILE_FOLDER.$this->id)) {
mkdir(self::CAR_TYPE_FILE_FOLDER.$this->id, 0777, true);
}
return self::CAR_TYPE_FILE_FOLDER.$this->id.'/';
}
public function getImageFilePath()
{
if (!$this->image) {
return ;
}
return $this->getUploadFilePath() . $this->image;
}
public function uploadImage()
{
if (null === $this->getImageFile()) {
return;
}
$this->removeImageFile();
$nDate= new \DateTime();
$filename = 'VEHICLE_TYPE_IMAGE_'.$nDate->format('Y-m-d');
$this->image = $filename.'.'.$this->getImageFile()->guessExtension();
$this->getImageFile()->move(
$this->getUploadFilePath(),
$this->image
);
$this->setImageFile(null);
}
#[ORM\PreUpdate]
#[ORM\PrePersist]
public function lifecycleFileUpload()
{
$this->uploadImage();
}
#[ORM\PostRemove]
public function removeUpload()
{
$this->removeImageFile();
}
public function removeImageFile()
{
if ($imageFile = $this->getImageFilePath()) {
@unlink($imageFile);
}
}
/**
* @return \DateTime
*/
public function getCreationDate()
{
return $this->creationDate;
}
/**
* @param \DateTime $creationDate
*/
public function setCreationDate(\DateTime $creationDate)
{
$this->creationDate = $creationDate;
}
}