src/Entity/VehicleRegistrations.php line 35

  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\ORM\Mapping\Id;
  4. use Doctrine\ORM\Mapping\Index;
  5. use Doctrine\ORM\Mapping\Entity;
  6. use Doctrine\ORM\Mapping\Table;
  7. use Doctrine\ORM\Mapping\Column;
  8. use Doctrine\ORM\Mapping\JoinColumn;
  9. use Doctrine\ORM\Mapping\ManyToOne;
  10. use Doctrine\ORM\Mapping\OneToOne;
  11. use Doctrine\ORM\Mapping\OneToMany;
  12. use Doctrine\ORM\Mapping\GeneratedValue;
  13. use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
  14. use Symfony\Component\Validator\Constraints as Assert;
  15. use App\Validator\Constraints as AppAssert;
  16. /**
  17.  * VehicleRegistrations
  18.  *
  19.  * @AppAssert\SerialnumberVehicleRegisteration
  20.  */
  21. #[Entity]
  22. #[Table(name'vehicle_registrations')]
  23. #[Index(name'letter1_idx'columns: ['panel_letter1'])]
  24. #[Index(name'letter2_idx'columns: ['panel_letter2'])]
  25. #[Index(name'letter3_idx'columns: ['panel_letter3'])]
  26. #[Index(name'registration_type_fk_idx'columns: ['registration_type_id'])]
  27. #[Index(name'model_fk_idx'columns: ['model_id'])]
  28. #[Index(name'vehicle_registrations_vehicle_docs_fk'columns: ['registration_doc_id'])]
  29. #[Index(name'vehicle_registrations_color_fk'columns: ['color_id'])]
  30. #[Index(name'vehicle_registrations_vehicle_owner_fk'columns: ['vehicle_owner_id'])]
  31. #[Index(name'vehicle_registrations_vehicle_user_fk'columns: ['vehicle_user_id'])]
  32. class VehicleRegistrations
  33. {
  34.     /**
  35.      * @var string
  36.      */
  37.     #[Assert\Length(min6max17exactMessage'Vehicle Vin Number must be {{ limit }} characters long')]
  38.     #[Assert\Regex(pattern'/^[a-zA-Z0-9]*$/')]
  39.     #[Column(name'vin_number'type'string'length17nullabletrue)]
  40.     private $vinNumber;
  41.     /**
  42.      * @var integer
  43.      */
  44.     #[Assert\Length(min1max4)]
  45.     #[Assert\Regex(pattern'/^\d{1,4}$/')]
  46.     #[Column(name'panel_numbers'type'smallint'nullabletrue)]
  47.     private $panelNumbers;
  48.     /**
  49.      * @var integer
  50.      */
  51.     #[Assert\Regex(pattern'/^\d*$/')]
  52.     #[Column(name'weight'type'integer'nullabletrue)]
  53.     private $weight;
  54.     /**
  55.      * @var integer
  56.      */
  57.     #[Assert\Regex(pattern'/^\d*$/')]
  58.     #[Column(name'vehicle_load'type'integer'nullabletrue)]
  59.     private $vehicleLoad;
  60.     /**
  61.      * @var \VehicleColors
  62.      */
  63.     #[ManyToOne(targetEntity\VehicleColors::class)]
  64.     #[JoinColumn(name'color_id'referencedColumnName'color_id')]
  65.     private $color;
  66.     /**
  67.      * @var integer
  68.      */
  69.     #[Column(name'manufacturing_year'type'smallint'nullabletrue)]
  70.     private $manufacturingYear;
  71.     /**
  72.      * @var string
  73.      */
  74.     #[Assert\Regex(pattern'/^\d*$/')]
  75.     #[Column(name'serial_number'type'string'length9nullabletrue)]
  76.     private $serialNumber;
  77.     /**
  78.      * @var \DateTime
  79.      */
  80.     #[Column(name'license_expiry_date'type'date'nullabletrue)]
  81.     private $licenseExpiryDate;
  82.     /**
  83.      * @var \string
  84.      */
  85.     #[Column(name'license_expiry_date_hijri'type'string'length60nullabletrue)]
  86.     private $licenseExpiryDateHijri;
  87.     /**
  88.      * @var \VehicleDocs
  89.      *
  90.      * The relation is logically 1-1. No way to implement it physically as the field isn't PK, However making it as
  91.      * unique key guarantees that the 1-1 integrity will not be violated physically
  92.      */
  93.     #[OneToOne(targetEntity\VehicleDocs::class, inversedBy'vehicleRegistrations'cascade: ['persist'])]
  94.     #[Assert\Valid]
  95.     #[JoinColumn(name'registration_doc_id'referencedColumnName'doc_id')]
  96.     private $registrationDoc;
  97.     /**
  98.      * @var \PanelLetters
  99.      */
  100.     #[ManyToOne(targetEntity\PanelLetters::class)]
  101.     #[JoinColumn(name'panel_letter1'referencedColumnName'letter_code')]
  102.     private $panelLetter1;
  103.     /**
  104.      * @var \PanelLetters
  105.      */
  106.     #[ManyToOne(targetEntity\PanelLetters::class)]
  107.     #[JoinColumn(name'panel_letter2'referencedColumnName'letter_code')]
  108.     private $panelLetter2;
  109.     /**
  110.      * @var \PanelLetters
  111.      */
  112.     #[ManyToOne(targetEntity\PanelLetters::class)]
  113.     #[JoinColumn(name'panel_letter3'referencedColumnName'letter_code')]
  114.     private $panelLetter3;
  115.     /**
  116.      * @var \VehicleModels
  117.      */
  118.     #[ManyToOne(targetEntity\VehicleModels::class)]
  119.     #[JoinColumn(name'model_id'referencedColumnName'model_id')]
  120.     private $model;
  121.     /**
  122.      * @var \VehicleRegistrationTypes
  123.      */
  124.     #[ManyToOne(targetEntity\VehicleRegistrationTypes::class)]
  125.     #[JoinColumn(name'registration_type_id'referencedColumnName'registration_id')]
  126.     private $registrationType;
  127.     /**
  128.      * @var \Vehicles
  129.      */
  130.     #[OneToOne(targetEntity\Vehicles::class, cascade: ['all'], inversedBy'vehicleRegistrations')]
  131.     #[JoinColumn(name'vehicle_id'referencedColumnName'vehicle_id')]
  132.     private $vehicle;
  133.     /**
  134.      * @var guid
  135.      */
  136.     #[Column(name'vehicle_id'type'integer'precision10scale0nullablefalse)]
  137.     #[Id]
  138.     #[GeneratedValue(strategy'IDENTITY')]
  139.     private $vehicleId;
  140.     /**
  141.      * @var \VehicleClients
  142.      */
  143.     #[ManyToOne(targetEntity\VehicleClients::class)]
  144.     #[JoinColumn(name'vehicle_owner_id'referencedColumnName'client_id')]
  145.     private $vehicleOwner;
  146.     /**
  147.      * @var \VehicleClients
  148.      */
  149.     #[ManyToOne(targetEntity\VehicleClients::class)]
  150.     #[JoinColumn(name'vehicle_user_id'referencedColumnName'client_id')]
  151.     private $vehicleUser;
  152.     /**
  153.      * @var integer
  154.      * a non mapped property displayed as checkbox to confirm creating the new vehicle with a serial number identical
  155.      * to an existing vehicle
  156.      */
  157.     private $proccedWithNew;
  158.     /**
  159.      * @var integer
  160.      * a non mapped property that is set by serial number validator to track the id of the vehicle that has a 
  161.      * registration serial number same as the provided with the currently created vehicle
  162.      */
  163.     private $existingSNVehicleId;
  164.     /**
  165.      * @var integer
  166.      * a non mapped property that is set by serial number validator to track the id of the vehicle that has a
  167.      * registration VIN number same as the provided with the currently created vehicle
  168.      */
  169.     private $existingVINVehicleId;
  170.     /**
  171.      * @var integer
  172.      * a non mapped property that is set by serial number validator to track the id of the vehicle that has a
  173.      * registration   combination of both vehicle plat and registration type same as the provided with the currently created vehicle
  174.      */
  175.     private $existingPTVehicleId;
  176.     /**
  177.      * Get proccedWithNew
  178.      *
  179.      * @return integer
  180.      */
  181.     function getProccedWithNew() {
  182.         return $this->proccedWithNew;
  183.     }
  184.     /**
  185.      * Set proccedWithNew
  186.      *
  187.      * @param string $proccedWithNew
  188.      *
  189.      * @return VehicleRegistrations
  190.      */
  191.     function setProccedWithNew($proccedWithNew) {
  192.         $this->proccedWithNew $proccedWithNew;
  193.     }
  194.     /**
  195.      * Set vinNumber
  196.      *
  197.      * @param string $vinNumber
  198.      *
  199.      * @return VehicleRegistrations
  200.      */
  201.     public function setVinNumber($vinNumber)
  202.     {
  203.         $this->vinNumber $vinNumber;
  204.         return $this;
  205.     }
  206.     /**
  207.      * Get vinNumber
  208.      *
  209.      * @return string
  210.      */
  211.     public function getVinNumber()
  212.     {
  213.         return $this->vinNumber;
  214.     }
  215.     /**
  216.      * Set panelNumbers
  217.      *
  218.      * @param integer $panelNumbers
  219.      *
  220.      * @return VehicleRegistrations
  221.      */
  222.     public function setPanelNumbers($panelNumbers)
  223.     {
  224.         $this->panelNumbers $panelNumbers;
  225.         return $this;
  226.     }
  227.     /**
  228.      * Get panelNumbers
  229.      *
  230.      * @return integer
  231.      */
  232.     public function getPanelNumbers()
  233.     {
  234.         return $this->panelNumbers;
  235.     }
  236.     /**
  237.      * Set weight
  238.      *
  239.      * @param integer $weight
  240.      *
  241.      * @return VehicleRegistrations
  242.      */
  243.     public function setWeight($weight)
  244.     {
  245.         $this->weight $weight;
  246.         return $this;
  247.     }
  248.     /**
  249.      * Get weight
  250.      *
  251.      * @return integer
  252.      */
  253.     public function getWeight()
  254.     {
  255.         return $this->weight;
  256.     }
  257.     /**
  258.      * Set vehicleLoad
  259.      *
  260.      * @param integer $vehicleLoad
  261.      *
  262.      * @return VehicleRegistrations
  263.      */
  264.     public function setVehicleLoad($vehicleLoad)
  265.     {
  266.         $this->vehicleLoad $vehicleLoad;
  267.         return $this;
  268.     }
  269.     /**
  270.      * Get vehicleLoad
  271.      *
  272.      * @return integer
  273.      */
  274.     public function getVehicleLoad()
  275.     {
  276.         return $this->vehicleLoad;
  277.     }
  278.     /**
  279.      * Set color
  280.      *
  281.      *
  282.      * @return VehicleRegistrations
  283.      */
  284.     public function setColor(VehicleColors $color null)
  285.     {
  286.         $this->color $color;
  287.         return $this;
  288.     }
  289.     /**
  290.      * Get color
  291.      *
  292.      * @return \VehicleColors
  293.      */
  294.     public function getColor()
  295.     {
  296.         return $this->color;
  297.     }
  298.     /**
  299.      * Set manufacturingYear
  300.      *
  301.      * @param integer $manufacturingYear
  302.      *
  303.      * @return VehicleRegistrations
  304.      */
  305.     public function setManufacturingYear($manufacturingYear)
  306.     {
  307.         $this->manufacturingYear $manufacturingYear;
  308.         return $this;
  309.     }
  310.     /**
  311.      * Get manufacturingYear
  312.      *
  313.      * @return integer
  314.      */
  315.     public function getManufacturingYear()
  316.     {
  317.         return $this->manufacturingYear;
  318.     }
  319.     /**
  320.      * Set serialNumber
  321.      *
  322.      * @param string $serialNumber
  323.      *
  324.      * @return VehicleRegistrations
  325.      */
  326.     public function setSerialNumber($serialNumber)
  327.     {
  328.         $this->serialNumber $serialNumber;
  329.         return $this;
  330.     }
  331.     /**
  332.      * Get serialNumber
  333.      *
  334.      * @return string
  335.      */
  336.     public function getSerialNumber()
  337.     {
  338.         return $this->serialNumber;
  339.     }
  340.     /**
  341.      * Set licenseExpiryDate
  342.      *
  343.      * @param \DateTime $licenseExpiryDate
  344.      *
  345.      * @return VehicleRegistrations
  346.      */
  347.     public function setLicenseExpiryDate($licenseExpiryDate)
  348.     {
  349.         $this->licenseExpiryDate $licenseExpiryDate;
  350.         return $this;
  351.     }
  352.     /**
  353.      * Get licenseExpiryDate
  354.      *
  355.      * @return \DateTime
  356.      */
  357.     public function getLicenseExpiryDate()
  358.     {
  359.         return $this->licenseExpiryDate;
  360.     }
  361.     /**
  362.      * Set licenseExpiryDateHijri
  363.      *
  364.      * @param string $licenseExpiryDateHijri
  365.      *
  366.      * @return VehicleRegistrations
  367.      */
  368.     public function setLicenseExpiryDateHijri($licenseExpiryDateHijri)
  369.     {
  370.         $this->licenseExpiryDateHijri $licenseExpiryDateHijri;
  371.         return $this;
  372.     }
  373.     /**
  374.      * Get licenseExpiryDateHijri
  375.      *
  376.      * @return string
  377.      */
  378.     public function getLicenseExpiryDateHijri()
  379.     {
  380.         return $this->licenseExpiryDateHijri;
  381.     }
  382.     /**
  383.      * Set registrationDoc
  384.      *
  385.      *
  386.      * @return VehicleRegistrations
  387.      */
  388.     public function setRegistrationDoc(\App\Entity\VehicleDocs $registrationDoc null)
  389.     {
  390.         $this->registrationDoc $registrationDoc;
  391.         return $this;
  392.     }
  393.     /**
  394.      * Get registrationDoc
  395.      *
  396.      * @return \App\Entity\VehicleDocs
  397.      */
  398.     public function getRegistrationDoc()
  399.     {
  400.         return $this->registrationDoc;
  401.     }
  402.     /**
  403.      * Set panelLetter1
  404.      *
  405.      *
  406.      * @return VehicleRegistrations
  407.      */
  408.     public function setPanelLetter1(\App\Entity\PanelLetters $panelLetter1 null)
  409.     {
  410.         $this->panelLetter1 $panelLetter1;
  411.         return $this;
  412.     }
  413.     /**
  414.      * Get panelLetter1
  415.      *
  416.      * @return \App\Entity\PanelLetters
  417.      */
  418.     public function getPanelLetter1()
  419.     {
  420.         return $this->panelLetter1;
  421.     }
  422.     /**
  423.      * Set panelLetter2
  424.      *
  425.      *
  426.      * @return VehicleRegistrations
  427.      */
  428.     public function setPanelLetter2(\App\Entity\PanelLetters $panelLetter2 null)
  429.     {
  430.         $this->panelLetter2 $panelLetter2;
  431.         return $this;
  432.     }
  433.     /**
  434.      * Get panelLetter2
  435.      *
  436.      * @return \App\Entity\PanelLetters
  437.      */
  438.     public function getPanelLetter2()
  439.     {
  440.         return $this->panelLetter2;
  441.     }
  442.     /**
  443.      * Set panelLetter3
  444.      *
  445.      *
  446.      * @return VehicleRegistrations
  447.      */
  448.     public function setPanelLetter3(\App\Entity\PanelLetters $panelLetter3 null)
  449.     {
  450.         $this->panelLetter3 $panelLetter3;
  451.         return $this;
  452.     }
  453.     /**
  454.      * Get panelLetter3
  455.      *
  456.      * @return \App\Entity\PanelLetters
  457.      */
  458.     public function getPanelLetter3()
  459.     {
  460.         return $this->panelLetter3;
  461.     }
  462.     /**
  463.      * Set model
  464.      *
  465.      *
  466.      * @return VehicleRegistrations
  467.      */
  468.     public function setModel(\App\Entity\VehicleModels $model null)
  469.     {
  470.         $this->model $model;
  471.         return $this;
  472.     }
  473.     /**
  474.      * Get model
  475.      *
  476.      * @return \App\Entity\VehicleModels
  477.      */
  478.     public function getModel()
  479.     {
  480.         return $this->model;
  481.     }
  482.     /**
  483.      * Set registrationType
  484.      *
  485.      *
  486.      * @return VehicleRegistrations
  487.      */
  488.     public function setRegistrationType(\App\Entity\VehicleRegistrationTypes $registrationType null)
  489.     {
  490.         $this->registrationType $registrationType;
  491.         return $this;
  492.     }
  493.     /**
  494.      * Get registrationType
  495.      *
  496.      * @return \App\Entity\VehicleRegistrationTypes
  497.      */
  498.     public function getRegistrationType()
  499.     {
  500.         return $this->registrationType;
  501.     }
  502.     /**
  503.      * Set vehicle
  504.      *
  505.      *
  506.      * @return VehicleRegistrations
  507.      */
  508.     public function setVehicle(\App\Entity\Vehicles $vehicle)
  509.     {
  510.         $this->vehicle $vehicle;
  511.         return $this;
  512.     }
  513.     /**
  514.      * Get vehicle
  515.      *
  516.      * @return \App\Entity\Vehicles
  517.      */
  518.     public function getVehicle()
  519.     {
  520.         return $this->vehicle;
  521.     }
  522.     /**
  523.      * Get vehicleId
  524.      *
  525.      * @return binary
  526.      */
  527.     public function getVehicleId()
  528.     {
  529.         return $this->vehicleId;
  530.     }
  531.     /**
  532.      * Set vehicleId
  533.      *
  534.      * @param binary $vehicleId
  535.      *
  536.      * @return VehicleRegistrations
  537.      */
  538.     public function setVehicleId($vehicleId)
  539.     {
  540.         $this->vehicleId $vehicleId;
  541.         return $this;
  542.     }
  543.     /**
  544.      *
  545.      * @return VehicleRegistrations
  546.      */
  547.     public function setVehicleOwner(\App\Entity\VehicleClients $vehicleOwner null)
  548.     {
  549.         $this->vehicleOwner $vehicleOwner;
  550.         return $this;
  551.     }
  552.     /**
  553.      * Get vehicleOwner
  554.      *
  555.      * @return \App\Entity\VehicleClients
  556.      */
  557.     public function getVehicleOwner()
  558.     {
  559.         return $this->vehicleOwner;
  560.     }
  561.     /**
  562.      *
  563.      * @return VehicleRegistrations
  564.      */
  565.     public function setVehicleUser(\App\Entity\VehicleClients $vehicleUser null)
  566.     {
  567.         $this->vehicleUser $vehicleUser;
  568.         return $this;
  569.     }
  570.     /**
  571.      * Get vehicleUser
  572.      *
  573.      * @return \App\Entity\VehicleClients
  574.      */
  575.     public function getVehicleUser()
  576.     {
  577.         return $this->vehicleUser;
  578.     }
  579.     /**
  580.      * Get existingSNVehicleId
  581.      *
  582.      * @return integer
  583.      */
  584.     function getExistingSNVehicleId() {
  585.         return $this->existingSNVehicleId;
  586.     }
  587.     /**
  588.      * Set existingSNVehicleId
  589.      *
  590.      * @param string $existingSNVehicleId
  591.      *
  592.      * @return VehicleRegistrations
  593.      */
  594.     function setExistingSNVehicleId($existingSNVehicleId) {
  595.         $this->existingSNVehicleId $existingSNVehicleId;
  596.     }
  597.     /**
  598.      * @return int
  599.      */
  600.     public function getExistingVINVehicleId()
  601.     {
  602.         return $this->existingVINVehicleId;
  603.     }
  604.     /**
  605.      * @param int $existingVINVehicleId
  606.      */
  607.     public function setExistingVINVehicleId($existingVINVehicleId)
  608.     {
  609.         $this->existingVINVehicleId $existingVINVehicleId;
  610.     }
  611.     /**
  612.      * @return int
  613.      */
  614.     public function getExistingPTVehicleId()
  615.     {
  616.         return $this->existingPTVehicleId;
  617.     }
  618.     /**
  619.      * @param int $existingPTVehicleId
  620.      */
  621.     public function setExistingPTVehicleId($existingPTVehicleId)
  622.     {
  623.         $this->existingPTVehicleId $existingPTVehicleId;
  624.     }
  625.     /**
  626.      * this function join the plate letter with its plate number and display as single plate number
  627.      *
  628.      * @param string $locale
  629.      * @return string
  630.      */
  631.     public function getPlateNumber($locale 'ar'){
  632.         $plateNumber '';
  633.         if($locale == 'en'){
  634.             $plateNumber .= $this->getPanelNumbers(). ' ';
  635.             $plateNumber .= ($this->getPanelLetter3()) ? $this->getPanelLetter3()->getLetter($locale). ' ' '';
  636.             $plateNumber .= ($this->getPanelLetter2()) ? $this->getPanelLetter2()->getLetter($locale). ' ' '';
  637.             $plateNumber .= ($this->getPanelLetter1()) ? $this->getPanelLetter1()->getLetter($locale) : '';
  638.         }elseif ($locale == 'ar'){
  639.             $plateNumber .= ($this->getPanelLetter1()) ? $this->getPanelLetter1()->getLetter($locale). ' ' '';
  640.             $plateNumber .= ($this->getPanelLetter2()) ? $this->getPanelLetter2()->getLetter($locale). ' ' '';
  641.             $plateNumber .= ($this->getPanelLetter3()) ? $this->getPanelLetter3()->getLetter($locale). ' ' '';
  642.             $plateNumber .= $this->getPanelNumbers();
  643.         }
  644.         return $plateNumber;
  645.     }
  646. }