src/Entity/VehicleRegistrations.php line 35
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\Index;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Table;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\OneToOne;
use Doctrine\ORM\Mapping\OneToMany;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
use Symfony\Component\Validator\Constraints as Assert;
use App\Validator\Constraints as AppAssert;
/**
* VehicleRegistrations
*
* @AppAssert\SerialnumberVehicleRegisteration
*/
#[Entity]
#[Table(name: 'vehicle_registrations')]
#[Index(name: 'letter1_idx', columns: ['panel_letter1'])]
#[Index(name: 'letter2_idx', columns: ['panel_letter2'])]
#[Index(name: 'letter3_idx', columns: ['panel_letter3'])]
#[Index(name: 'registration_type_fk_idx', columns: ['registration_type_id'])]
#[Index(name: 'model_fk_idx', columns: ['model_id'])]
#[Index(name: 'vehicle_registrations_vehicle_docs_fk', columns: ['registration_doc_id'])]
#[Index(name: 'vehicle_registrations_color_fk', columns: ['color_id'])]
#[Index(name: 'vehicle_registrations_vehicle_owner_fk', columns: ['vehicle_owner_id'])]
#[Index(name: 'vehicle_registrations_vehicle_user_fk', columns: ['vehicle_user_id'])]
class VehicleRegistrations
{
/**
* @var string
*/
#[Assert\Length(min: 6, max: 17, exactMessage: 'Vehicle Vin Number must be {{ limit }} characters long')]
#[Assert\Regex(pattern: '/^[a-zA-Z0-9]*$/')]
#[Column(name: 'vin_number', type: 'string', length: 17, nullable: true)]
private $vinNumber;
/**
* @var integer
*/
#[Assert\Length(min: 1, max: 4)]
#[Assert\Regex(pattern: '/^\d{1,4}$/')]
#[Column(name: 'panel_numbers', type: 'smallint', nullable: true)]
private $panelNumbers;
/**
* @var integer
*/
#[Assert\Regex(pattern: '/^\d*$/')]
#[Column(name: 'weight', type: 'integer', nullable: true)]
private $weight;
/**
* @var integer
*/
#[Assert\Regex(pattern: '/^\d*$/')]
#[Column(name: 'vehicle_load', type: 'integer', nullable: true)]
private $vehicleLoad;
/**
* @var \VehicleColors
*/
#[ManyToOne(targetEntity: \VehicleColors::class)]
#[JoinColumn(name: 'color_id', referencedColumnName: 'color_id')]
private $color;
/**
* @var integer
*/
#[Column(name: 'manufacturing_year', type: 'smallint', nullable: true)]
private $manufacturingYear;
/**
* @var string
*/
#[Assert\Regex(pattern: '/^\d*$/')]
#[Column(name: 'serial_number', type: 'string', length: 9, nullable: true)]
private $serialNumber;
/**
* @var \DateTime
*/
#[Column(name: 'license_expiry_date', type: 'date', nullable: true)]
private $licenseExpiryDate;
/**
* @var \string
*/
#[Column(name: 'license_expiry_date_hijri', type: 'string', length: 60, nullable: true)]
private $licenseExpiryDateHijri;
/**
* @var \VehicleDocs
*
* The relation is logically 1-1. No way to implement it physically as the field isn't PK, However making it as
* unique key guarantees that the 1-1 integrity will not be violated physically
*/
#[OneToOne(targetEntity: \VehicleDocs::class, inversedBy: 'vehicleRegistrations', cascade: ['persist'])]
#[Assert\Valid]
#[JoinColumn(name: 'registration_doc_id', referencedColumnName: 'doc_id')]
private $registrationDoc;
/**
* @var \PanelLetters
*/
#[ManyToOne(targetEntity: \PanelLetters::class)]
#[JoinColumn(name: 'panel_letter1', referencedColumnName: 'letter_code')]
private $panelLetter1;
/**
* @var \PanelLetters
*/
#[ManyToOne(targetEntity: \PanelLetters::class)]
#[JoinColumn(name: 'panel_letter2', referencedColumnName: 'letter_code')]
private $panelLetter2;
/**
* @var \PanelLetters
*/
#[ManyToOne(targetEntity: \PanelLetters::class)]
#[JoinColumn(name: 'panel_letter3', referencedColumnName: 'letter_code')]
private $panelLetter3;
/**
* @var \VehicleModels
*/
#[ManyToOne(targetEntity: \VehicleModels::class)]
#[JoinColumn(name: 'model_id', referencedColumnName: 'model_id')]
private $model;
/**
* @var \VehicleRegistrationTypes
*/
#[ManyToOne(targetEntity: \VehicleRegistrationTypes::class)]
#[JoinColumn(name: 'registration_type_id', referencedColumnName: 'registration_id')]
private $registrationType;
/**
* @var \Vehicles
*/
#[OneToOne(targetEntity: \Vehicles::class, cascade: ['all'], inversedBy: 'vehicleRegistrations')]
#[JoinColumn(name: 'vehicle_id', referencedColumnName: 'vehicle_id')]
private $vehicle;
/**
* @var guid
*/
#[Column(name: 'vehicle_id', type: 'integer', precision: 10, scale: 0, nullable: false)]
#[Id]
#[GeneratedValue(strategy: 'IDENTITY')]
private $vehicleId;
/**
* @var \VehicleClients
*/
#[ManyToOne(targetEntity: \VehicleClients::class)]
#[JoinColumn(name: 'vehicle_owner_id', referencedColumnName: 'client_id')]
private $vehicleOwner;
/**
* @var \VehicleClients
*/
#[ManyToOne(targetEntity: \VehicleClients::class)]
#[JoinColumn(name: 'vehicle_user_id', referencedColumnName: 'client_id')]
private $vehicleUser;
/**
* @var integer
* a non mapped property displayed as checkbox to confirm creating the new vehicle with a serial number identical
* to an existing vehicle
*/
private $proccedWithNew;
/**
* @var integer
* a non mapped property that is set by serial number validator to track the id of the vehicle that has a
* registration serial number same as the provided with the currently created vehicle
*/
private $existingSNVehicleId;
/**
* @var integer
* a non mapped property that is set by serial number validator to track the id of the vehicle that has a
* registration VIN number same as the provided with the currently created vehicle
*/
private $existingVINVehicleId;
/**
* @var integer
* a non mapped property that is set by serial number validator to track the id of the vehicle that has a
* registration combination of both vehicle plat and registration type same as the provided with the currently created vehicle
*/
private $existingPTVehicleId;
/**
* Get proccedWithNew
*
* @return integer
*/
function getProccedWithNew() {
return $this->proccedWithNew;
}
/**
* Set proccedWithNew
*
* @param string $proccedWithNew
*
* @return VehicleRegistrations
*/
function setProccedWithNew($proccedWithNew) {
$this->proccedWithNew = $proccedWithNew;
}
/**
* Set vinNumber
*
* @param string $vinNumber
*
* @return VehicleRegistrations
*/
public function setVinNumber($vinNumber)
{
$this->vinNumber = $vinNumber;
return $this;
}
/**
* Get vinNumber
*
* @return string
*/
public function getVinNumber()
{
return $this->vinNumber;
}
/**
* Set panelNumbers
*
* @param integer $panelNumbers
*
* @return VehicleRegistrations
*/
public function setPanelNumbers($panelNumbers)
{
$this->panelNumbers = $panelNumbers;
return $this;
}
/**
* Get panelNumbers
*
* @return integer
*/
public function getPanelNumbers()
{
return $this->panelNumbers;
}
/**
* Set weight
*
* @param integer $weight
*
* @return VehicleRegistrations
*/
public function setWeight($weight)
{
$this->weight = $weight;
return $this;
}
/**
* Get weight
*
* @return integer
*/
public function getWeight()
{
return $this->weight;
}
/**
* Set vehicleLoad
*
* @param integer $vehicleLoad
*
* @return VehicleRegistrations
*/
public function setVehicleLoad($vehicleLoad)
{
$this->vehicleLoad = $vehicleLoad;
return $this;
}
/**
* Get vehicleLoad
*
* @return integer
*/
public function getVehicleLoad()
{
return $this->vehicleLoad;
}
/**
* Set color
*
*
* @return VehicleRegistrations
*/
public function setColor(VehicleColors $color = null)
{
$this->color = $color;
return $this;
}
/**
* Get color
*
* @return \VehicleColors
*/
public function getColor()
{
return $this->color;
}
/**
* Set manufacturingYear
*
* @param integer $manufacturingYear
*
* @return VehicleRegistrations
*/
public function setManufacturingYear($manufacturingYear)
{
$this->manufacturingYear = $manufacturingYear;
return $this;
}
/**
* Get manufacturingYear
*
* @return integer
*/
public function getManufacturingYear()
{
return $this->manufacturingYear;
}
/**
* Set serialNumber
*
* @param string $serialNumber
*
* @return VehicleRegistrations
*/
public function setSerialNumber($serialNumber)
{
$this->serialNumber = $serialNumber;
return $this;
}
/**
* Get serialNumber
*
* @return string
*/
public function getSerialNumber()
{
return $this->serialNumber;
}
/**
* Set licenseExpiryDate
*
* @param \DateTime $licenseExpiryDate
*
* @return VehicleRegistrations
*/
public function setLicenseExpiryDate($licenseExpiryDate)
{
$this->licenseExpiryDate = $licenseExpiryDate;
return $this;
}
/**
* Get licenseExpiryDate
*
* @return \DateTime
*/
public function getLicenseExpiryDate()
{
return $this->licenseExpiryDate;
}
/**
* Set licenseExpiryDateHijri
*
* @param string $licenseExpiryDateHijri
*
* @return VehicleRegistrations
*/
public function setLicenseExpiryDateHijri($licenseExpiryDateHijri)
{
$this->licenseExpiryDateHijri = $licenseExpiryDateHijri;
return $this;
}
/**
* Get licenseExpiryDateHijri
*
* @return string
*/
public function getLicenseExpiryDateHijri()
{
return $this->licenseExpiryDateHijri;
}
/**
* Set registrationDoc
*
*
* @return VehicleRegistrations
*/
public function setRegistrationDoc(\App\Entity\VehicleDocs $registrationDoc = null)
{
$this->registrationDoc = $registrationDoc;
return $this;
}
/**
* Get registrationDoc
*
* @return \App\Entity\VehicleDocs
*/
public function getRegistrationDoc()
{
return $this->registrationDoc;
}
/**
* Set panelLetter1
*
*
* @return VehicleRegistrations
*/
public function setPanelLetter1(\App\Entity\PanelLetters $panelLetter1 = null)
{
$this->panelLetter1 = $panelLetter1;
return $this;
}
/**
* Get panelLetter1
*
* @return \App\Entity\PanelLetters
*/
public function getPanelLetter1()
{
return $this->panelLetter1;
}
/**
* Set panelLetter2
*
*
* @return VehicleRegistrations
*/
public function setPanelLetter2(\App\Entity\PanelLetters $panelLetter2 = null)
{
$this->panelLetter2 = $panelLetter2;
return $this;
}
/**
* Get panelLetter2
*
* @return \App\Entity\PanelLetters
*/
public function getPanelLetter2()
{
return $this->panelLetter2;
}
/**
* Set panelLetter3
*
*
* @return VehicleRegistrations
*/
public function setPanelLetter3(\App\Entity\PanelLetters $panelLetter3 = null)
{
$this->panelLetter3 = $panelLetter3;
return $this;
}
/**
* Get panelLetter3
*
* @return \App\Entity\PanelLetters
*/
public function getPanelLetter3()
{
return $this->panelLetter3;
}
/**
* Set model
*
*
* @return VehicleRegistrations
*/
public function setModel(\App\Entity\VehicleModels $model = null)
{
$this->model = $model;
return $this;
}
/**
* Get model
*
* @return \App\Entity\VehicleModels
*/
public function getModel()
{
return $this->model;
}
/**
* Set registrationType
*
*
* @return VehicleRegistrations
*/
public function setRegistrationType(\App\Entity\VehicleRegistrationTypes $registrationType = null)
{
$this->registrationType = $registrationType;
return $this;
}
/**
* Get registrationType
*
* @return \App\Entity\VehicleRegistrationTypes
*/
public function getRegistrationType()
{
return $this->registrationType;
}
/**
* Set vehicle
*
*
* @return VehicleRegistrations
*/
public function setVehicle(\App\Entity\Vehicles $vehicle)
{
$this->vehicle = $vehicle;
return $this;
}
/**
* Get vehicle
*
* @return \App\Entity\Vehicles
*/
public function getVehicle()
{
return $this->vehicle;
}
/**
* Get vehicleId
*
* @return binary
*/
public function getVehicleId()
{
return $this->vehicleId;
}
/**
* Set vehicleId
*
* @param binary $vehicleId
*
* @return VehicleRegistrations
*/
public function setVehicleId($vehicleId)
{
$this->vehicleId = $vehicleId;
return $this;
}
/**
*
* @return VehicleRegistrations
*/
public function setVehicleOwner(\App\Entity\VehicleClients $vehicleOwner = null)
{
$this->vehicleOwner = $vehicleOwner;
return $this;
}
/**
* Get vehicleOwner
*
* @return \App\Entity\VehicleClients
*/
public function getVehicleOwner()
{
return $this->vehicleOwner;
}
/**
*
* @return VehicleRegistrations
*/
public function setVehicleUser(\App\Entity\VehicleClients $vehicleUser = null)
{
$this->vehicleUser = $vehicleUser;
return $this;
}
/**
* Get vehicleUser
*
* @return \App\Entity\VehicleClients
*/
public function getVehicleUser()
{
return $this->vehicleUser;
}
/**
* Get existingSNVehicleId
*
* @return integer
*/
function getExistingSNVehicleId() {
return $this->existingSNVehicleId;
}
/**
* Set existingSNVehicleId
*
* @param string $existingSNVehicleId
*
* @return VehicleRegistrations
*/
function setExistingSNVehicleId($existingSNVehicleId) {
$this->existingSNVehicleId = $existingSNVehicleId;
}
/**
* @return int
*/
public function getExistingVINVehicleId()
{
return $this->existingVINVehicleId;
}
/**
* @param int $existingVINVehicleId
*/
public function setExistingVINVehicleId($existingVINVehicleId)
{
$this->existingVINVehicleId = $existingVINVehicleId;
}
/**
* @return int
*/
public function getExistingPTVehicleId()
{
return $this->existingPTVehicleId;
}
/**
* @param int $existingPTVehicleId
*/
public function setExistingPTVehicleId($existingPTVehicleId)
{
$this->existingPTVehicleId = $existingPTVehicleId;
}
/**
* this function join the plate letter with its plate number and display as single plate number
*
* @param string $locale
* @return string
*/
public function getPlateNumber($locale = 'ar'){
$plateNumber = '';
if($locale == 'en'){
$plateNumber .= $this->getPanelNumbers(). ' ';
$plateNumber .= ($this->getPanelLetter3()) ? $this->getPanelLetter3()->getLetter($locale). ' ' : '';
$plateNumber .= ($this->getPanelLetter2()) ? $this->getPanelLetter2()->getLetter($locale). ' ' : '';
$plateNumber .= ($this->getPanelLetter1()) ? $this->getPanelLetter1()->getLetter($locale) : '';
}elseif ($locale == 'ar'){
$plateNumber .= ($this->getPanelLetter1()) ? $this->getPanelLetter1()->getLetter($locale). ' ' : '';
$plateNumber .= ($this->getPanelLetter2()) ? $this->getPanelLetter2()->getLetter($locale). ' ' : '';
$plateNumber .= ($this->getPanelLetter3()) ? $this->getPanelLetter3()->getLetter($locale). ' ' : '';
$plateNumber .= $this->getPanelNumbers();
}
return $plateNumber;
}
}