src/Entity/Vehicle.php line 48

  1. <?php
  2. namespace App\Entity;
  3. use ApiPlatform\Doctrine\Orm\Filter\BooleanFilter;
  4. use ApiPlatform\Doctrine\Orm\Filter\NumericFilter;
  5. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  6. use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
  7. use ApiPlatform\Doctrine\Orm\Filter\RangeFilter;
  8. use ApiPlatform\Metadata\ApiFilter;
  9. use ApiPlatform\Metadata\ApiResource;
  10. use ApiPlatform\Metadata\Get;
  11. use ApiPlatform\Metadata\GetCollection;
  12. use App\Repository\VehicleRepository;
  13. use DateTimeImmutable;
  14. use Doctrine\Common\Collections\ArrayCollection;
  15. use Doctrine\Common\Collections\Collection;
  16. use Doctrine\DBAL\Types\Types;
  17. use Doctrine\ORM\Mapping as ORM;
  18. use Symfony\Component\Serializer\Annotation\Groups;
  19. #[ApiResource(
  20.     description'Vehicle from dealers ...',
  21.     operations: [
  22.         new Get(),
  23.         new GetCollection(
  24.             cacheHeaders: [
  25.                 'max_age' => 60,
  26.                 'shared_max_age' => 120
  27.             ]
  28.         )
  29.     ],
  30.     normalizationContext: ['groups' => ['vehicle:read']]
  31. )]
  32. #[ApiFilter(SearchFilter::class, properties:
  33.     [   'partKind' => 'exact''category' => 'exact''category.url' => 'exact''kind' => 'exact',  'manufacturer' => 'exact',
  34.         'model' => 'exact''type' => 'exact''body' => 'exact''color' => 'exact''fuel' => 'exact',
  35.         'gearbox' => 'exact''conditionVehicle' => 'exact''drive' => 'exact''country' => 'exact',
  36.         'dealerAd.dealer.codeRegion' => 'exact',  'dealerAd.dealer.codeDistrict' => 'exact',  '' => 'exact',])]
  37. #[ApiFilter(OrderFilter::class, properties: ['createAt' ])]
  38. #[ApiFilter(RangeFilter::class, properties: ['price''madeDate''mileage''engineVolume' ])]
  39. #[ApiFilter(BooleanFilter::class, properties: ['visible''dealer.visible''firstOwner''dealerAd.dealer.visibleVehicle''equipments.name' ])]
  40. #[ApiFilter(NumericFilter::class, properties: ['doors''places' ])]
  41. #[ORM\Index(columns: ["gearbox"], name"gearbox_idx" )]
  42. #[ORM\Entity(repositoryClassVehicleRepository::class)]
  43. class Vehicle
  44. {
  45.     #[Groups(['vehicle:read'])]
  46.     #[ORM\Id]
  47.     #[ORM\GeneratedValue]
  48.     #[ORM\Column]
  49.     private ?int $id null;
  50.     #[Groups(['vehicle:read'])]
  51.     #[ORM\Column(uniquetruenullabletrue)]
  52.     private ?int $idImport null;
  53.     #[Groups(['vehicle:read'])]
  54.     #[ORM\Column]
  55.     private ?bool $visible null;
  56.     #[Groups(['vehicle:read'])]
  57.     #[ORM\Column]
  58.     private ?DateTimeImmutable $createAt null;
  59.     #[ORM\Column(nullabletrue)]
  60.     private ?DateTimeImmutable $hiddenAt null;
  61.     #[ORM\Column(length500nullabletrue)]
  62.     private ?string $seoSlug null;
  63.     #[ORM\Column(length255nullabletrue)]
  64.     private ?string $seoTitle null;
  65.     #[ORM\Column(typeTypes::TEXTnullabletrue)]
  66.     private ?string $seoDescription null;
  67.     #[ORM\Column(length255nullabletrue)]
  68.     private ?string $seoH1 null;
  69.     #[ORM\Column(nullabletrue)]
  70.     private ?DateTimeImmutable $urlGeneratedAt null;
  71.     #[Groups(['vehicle:read'])]
  72.     #[ORM\Column(length255nullabletrue)]
  73.     private ?string $vin null;
  74.     #[Groups(['vehicle:read'])]
  75.     #[ORM\Column(nullabletrue)]
  76.     private ?int $places null;
  77.     #[Groups(['vehicle:read'])]
  78.     #[ORM\Column(nullabletrue)]
  79.     private ?int $doors null;
  80.     #[Groups(['vehicle:read'])]
  81.     #[ORM\Column(nullabletrue)]
  82.     private ?float $loadCapacity null;
  83.     #[Groups(['vehicle:read'])]
  84.     #[ORM\Column(nullabletrue)]
  85.     private ?float $totalWeight null;
  86.     #[Groups(['vehicle:read'])]
  87.     #[ORM\Column(nullabletrue)]
  88.     private ?string $state null;
  89.     #[Groups(['vehicle:read'])]
  90.     #[ORM\Column(nullabletrue)]
  91.     private ?int $mileage null;
  92.     #[Groups(['vehicle:read'])]
  93.     #[ORM\Column(length5nullabletrue)]
  94.     private ?string $mileageUnit null;
  95.     #[Groups(['vehicle:read'])]
  96.     #[ORM\Columnnullabletrue)]
  97.     private ?int $madeDate null;
  98.     #[Groups(['vehicle:read'])]
  99.     #[ORM\Column]
  100.     private ?int $price null;
  101.     #[Groups(['vehicle:read'])]
  102.     #[ORM\Column(nullabletrue)]
  103.     private ?bool $vat null;
  104.     #[Groups(['vehicle:read'])]
  105.     #[ORM\Column(nullabletrue)]
  106.     private ?int $priceBefore null;
  107.     #[Groups(['vehicle:read'])]
  108.     #[ORM\Column(nullabletrue)]
  109.     private ?int $priceLeasing null;
  110.     #[Groups(['vehicle:read'])]
  111.     #[ORM\Column(nullabletrue)]
  112.     private ?int $paymentLeasingCount null;
  113.     #[Groups(['vehicle:read'])]
  114.     #[ORM\Column(nullabletrue)]
  115.     private ?bool $ecoVat null;
  116.     #[Groups(['vehicle:read'])]
  117.     #[ORM\Column(nullabletrue)]
  118.     private ?int $engineVolume null;
  119.     #[Groups(['vehicle:read'])]
  120.     #[ORM\Column(nullabletrue)]
  121.     private ?int $stkTo null;
  122.     #[Groups(['vehicle:read'])]
  123.     #[ORM\Column(nullabletrue)]
  124.     private ?bool $firstOwner null;
  125.     #[Groups(['vehicle:read'])]
  126.     #[ORM\Column(nullabletrue)]
  127.     private ?bool $serviceBook null;
  128.     #[Groups(['vehicle:read'])]
  129.     #[ORM\Column(nullabletrue)]
  130.     private ?bool $tuning null;
  131.     #[Groups(['vehicle:read'])]
  132.     #[ORM\Column(typeTypes::TEXTnullabletrue)]
  133.     private ?string $note null;
  134.     #[Groups(['vehicle:read'])]
  135.     #[ORM\Column(nullabletrue)]
  136.     private ?int $enginePower null;
  137.     #[Groups(['vehicle:read'])]
  138.     #[ORM\Column(nullabletrue)]
  139.     private ?string $type null;
  140.     #[Groups(['vehicle:read'])]
  141.     #[ORM\Column(nullabletrue)]
  142.     private ?bool $notCrashed null;
  143.     #[Groups(['vehicle:read'])]
  144.     #[ORM\Column(typeTypes::TEXTnullabletrue)]
  145.     private ?string $financialInfo null;
  146.     #[Groups(['vehicle:read'])]
  147.     #[ORM\ManyToOne(  inversedBy'vehicles')]
  148.     private ?VehicleCategory $category null;
  149.     #[Groups(['vehicle:read'])]
  150.     #[ORM\ManyToOne(  inversedBy'vehicles')]
  151.     private ?VehicleKind $kind null;
  152.     #[Groups(['vehicle:read'])]
  153.     #[ORM\ManyToOne(  inversedBy'vehicles')]
  154.     private ?VehicleSubKind $subKind null;
  155.     #[Groups(['vehicle:read'])]
  156.     #[ORM\ManyToOne(   inversedBy'vehicles')]
  157.     private ?VehicleModel $model null;
  158.     #[Groups(['vehicle:read'])]
  159.     #[ORM\ManyToOne(  inversedBy'vehicles')]
  160.     private ?VehicleBody $body null;
  161.     #[Groups(['vehicle:read'])]
  162.     #[ORM\ManyToOne(  inversedBy'vehicles')]
  163.     private ?VehicleColor $color null;
  164.     #[Groups(['vehicle:read'])]
  165.     #[ORM\ManyToOneinversedBy'vehicles')]
  166.     private ?VehicleFuel $fuel null;
  167.     #[Groups(['vehicle:read'])]
  168.     #[ORM\ManyToOneinversedBy'vehicles')]
  169.     private ?VehicleCondition $conditionVehicle null;
  170.     #[Groups(['vehicle:read'])]
  171.     #[ORM\ManyToMany(targetEntityVehicleFinancial::class, inversedBy'vehicles'cascade: ['persist''remove'])]
  172.     private Collection $financials;
  173.     #[Groups(['vehicle:read'])]
  174.     #[ORM\ManyToMany(targetEntityVehicleEquipment::class, inversedBy'vehicles'cascade: ['persist''remove'])]
  175.     private Collection $equipments;
  176.     #[Groups(['vehicle:read'])]
  177.     #[ORM\OrderBy(['main'=> 'DESC''id' => 'ASC'])]
  178.     #[ORM\OneToMany(mappedBy'vehicle'targetEntityVehicleImage::class, cascade: ['persist''remove'])]
  179.     private Collection $vehicleImages;
  180.     #[Groups(['vehicle:read'])]
  181.     #[ORM\Column(nullabletrue)]
  182.     private ?int $paymentLeasing null;
  183.     #[Groups(['vehicle:read'])]
  184.     #[ORM\ManyToOne(   inversedBy'vehicles')]
  185.     private ?VehiclePartKind $partKind null;
  186.     #[Groups(['vehicle:read'])]
  187.     #[ORM\ManyToOne(   inversedBy'vehicles')]
  188.     private ?VehicleManufacturer $manufacturer null;
  189.     #[ORM\OneToOne(mappedBy'vehicle'cascade: ['persist''remove'])]
  190.     private ?VehicleTip $vehicleTip null;
  191.     #[ORM\ManyToOne(inversedBy'vehicles')]
  192.     private ?Dealer $dealer null;
  193.     #[Groups(['vehicle:read'])]
  194.     #[ORM\Column(length100nullabletrue)]
  195.     private ?string $gearbox null;
  196.     #[ORM\OneToMany(mappedBy'vehicle'targetEntityVehicleForm::class)]
  197.     private Collection $vehicleForms;
  198.     public function __construct()
  199.     {
  200.         $this->financials = new ArrayCollection();
  201.         $this->equipments = new ArrayCollection();
  202.         $this->vehicleImages = new ArrayCollection();
  203.         $this->vehicleForms = new ArrayCollection();
  204.     }
  205.     public function getId(): ?int
  206.     {
  207.         return $this->id;
  208.     }
  209.     public function getIdImport(): ?int
  210.     {
  211.         return $this->idImport;
  212.     }
  213.     /**
  214.      * @return string|null
  215.      */
  216.     public function getType(): ?string
  217.     {
  218.         return $this->type;
  219.     }
  220.     /**
  221.      * @param string|null $type
  222.      */
  223.     public function setType(?string $type): void
  224.     {
  225.         $this->type $type;
  226.     }
  227.     public function setIdImport(?int $idImport): self
  228.     {
  229.         $this->idImport $idImport;
  230.         return $this;
  231.     }
  232.     public function isVisible(): ?bool
  233.     {
  234.         return $this->visible;
  235.     }
  236.     public function setVisible(bool $visible): self
  237.     {
  238.         $this->visible $visible;
  239.         return $this;
  240.     }
  241.     public function getCreateAt(): ?DateTimeImmutable
  242.     {
  243.         return $this->createAt;
  244.     }
  245.     public function setCreateAt(DateTimeImmutable $createAt): self
  246.     {
  247.         $this->createAt $createAt;
  248.         return $this;
  249.     }
  250.     public function getVin(): ?string
  251.     {
  252.         return $this->vin;
  253.     }
  254.     public function setVin(string $vin): self
  255.     {
  256.         $this->vin $vin;
  257.         return $this;
  258.     }
  259.     public function getPlaces(): ?int
  260.     {
  261.         return $this->places;
  262.     }
  263.     public function setPlaces(int $places): self
  264.     {
  265.         $this->places $places;
  266.         return $this;
  267.     }
  268.     public function getDoors(): ?int
  269.     {
  270.         return $this->doors;
  271.     }
  272.     public function setDoors(?int $doors): self
  273.     {
  274.         $this->doors $doors;
  275.         return $this;
  276.     }
  277.     public function getLoadCapacity(): ?float
  278.     {
  279.         return $this->loadCapacity;
  280.     }
  281.     public function setLoadCapacity(float $loadCapacity): self
  282.     {
  283.         $this->loadCapacity $loadCapacity;
  284.         return $this;
  285.     }
  286.     public function getTotalWeight(): ?float
  287.     {
  288.         return $this->totalWeight;
  289.     }
  290.     public function setTotalWeight(float $totalWeight): self
  291.     {
  292.         $this->totalWeight $totalWeight;
  293.         return $this;
  294.     }
  295.     public function getState(): ?string
  296.     {
  297.         return $this->state;
  298.     }
  299.     public function setState(string $state): self
  300.     {
  301.         $this->state $state;
  302.         return $this;
  303.     }
  304.     public function getMileage(): ?int
  305.     {
  306.         return $this->mileage;
  307.     }
  308.     public function setMileage(?int $mileage): self
  309.     {
  310.         $this->mileage $mileage;
  311.         return $this;
  312.     }
  313.     public function getMileageUnit(): ?string
  314.     {
  315.         return $this->mileageUnit;
  316.     }
  317.     public function setMileageUnit(?string $mileageUnit): self
  318.     {
  319.         $this->mileageUnit $mileageUnit;
  320.         return $this;
  321.     }
  322.     public function getMadeDate(): ?int
  323.     {
  324.         return $this->madeDate;
  325.     }
  326.     public function setMadeDate(?int $madeDate): self
  327.     {
  328.         $this->madeDate $madeDate;
  329.         return $this;
  330.     }
  331.     public function getPrice(): ?int
  332.     {
  333.         return $this->price;
  334.     }
  335.     public function setPrice(int $price): self
  336.     {
  337.         $this->price $price;
  338.         return $this;
  339.     }
  340.     public function isVat(): ?bool
  341.     {
  342.         return $this->vat;
  343.     }
  344.     public function setVat(bool $vat): self
  345.     {
  346.         $this->vat $vat;
  347.         return $this;
  348.     }
  349.     public function getPriceBefore(): ?int
  350.     {
  351.         return $this->priceBefore;
  352.     }
  353.     public function setPriceBefore(int $priceBefore): self
  354.     {
  355.         $this->priceBefore $priceBefore;
  356.         return $this;
  357.     }
  358.     public function getPriceLeasing(): ?int
  359.     {
  360.         return $this->priceLeasing;
  361.     }
  362.     public function setPriceLeasing(?int $priceLeasing): self
  363.     {
  364.         $this->priceLeasing $priceLeasing;
  365.         return $this;
  366.     }
  367.     public function getPaymentLeasingCount(): ?int
  368.     {
  369.         return $this->paymentLeasingCount;
  370.     }
  371.     public function setPaymentLeasingCount(?int $paymentLeasingCount): self
  372.     {
  373.         $this->paymentLeasingCount $paymentLeasingCount;
  374.         return $this;
  375.     }
  376.     public function isEcoVat(): ?bool
  377.     {
  378.         return $this->ecoVat;
  379.     }
  380.     public function setEcoVat(bool $ecoVat): self
  381.     {
  382.         $this->ecoVat $ecoVat;
  383.         return $this;
  384.     }
  385.     public function getEngineVolume(): ?int
  386.     {
  387.         return $this->engineVolume;
  388.     }
  389.     public function setEngineVolume(int $engineVolume): self
  390.     {
  391.         $this->engineVolume $engineVolume;
  392.         return $this;
  393.     }
  394.     public function getStkTo(): ?int
  395.     {
  396.         return $this->stkTo;
  397.     }
  398.     public function setStkTo(?int $stkTo): self
  399.     {
  400.         $this->stkTo $stkTo;
  401.         return $this;
  402.     }
  403.     public function isFirstOwner(): ?bool
  404.     {
  405.         return $this->firstOwner;
  406.     }
  407.     public function setFirstOwner(?bool $firstOwner): self
  408.     {
  409.         $this->firstOwner $firstOwner;
  410.         return $this;
  411.     }
  412.     public function isServiceBook(): ?bool
  413.     {
  414.         return $this->serviceBook;
  415.     }
  416.     public function setServiceBook(bool $serviceBook): self
  417.     {
  418.         $this->serviceBook $serviceBook;
  419.         return $this;
  420.     }
  421.     public function isTuning(): ?bool
  422.     {
  423.         return $this->tuning;
  424.     }
  425.     public function setTuning(bool $tuning): self
  426.     {
  427.         $this->tuning $tuning;
  428.         return $this;
  429.     }
  430.     public function getNote(): ?string
  431.     {
  432.         return $this->note;
  433.     }
  434.     public function setNote(?string $note): self
  435.     {
  436.         $this->note $note;
  437.         return $this;
  438.     }
  439.     public function getEnginePower(): ?int
  440.     {
  441.         return $this->enginePower;
  442.     }
  443.     public function setEnginePower(int $enginePower): self
  444.     {
  445.         $this->enginePower $enginePower;
  446.         return $this;
  447.     }
  448.     public function isNotCrashed(): ?bool
  449.     {
  450.         return $this->notCrashed;
  451.     }
  452.     public function setNotCrashed(bool $notCrashed): self
  453.     {
  454.         $this->notCrashed $notCrashed;
  455.         return $this;
  456.     }
  457.     public function getFinancialInfo(): ?string
  458.     {
  459.         return $this->financialInfo;
  460.     }
  461.     public function setFinancialInfo(?string $financialInfo): self
  462.     {
  463.         $this->financialInfo $financialInfo;
  464.         return $this;
  465.     }
  466.     public function getCategory(): ?VehicleCategory
  467.     {
  468.         return $this->category;
  469.     }
  470.     public function setCategory(?VehicleCategory $category): self
  471.     {
  472.         $this->category $category;
  473.         return $this;
  474.     }
  475.     public function getKind(): ?VehicleKind
  476.     {
  477.         return $this->kind;
  478.     }
  479.     public function setKind(?VehicleKind $kind): self
  480.     {
  481.         $this->kind $kind;
  482.         return $this;
  483.     }
  484.     public function getSubKind(): ?VehicleSubKind
  485.     {
  486.         return $this->subKind;
  487.     }
  488.     public function setSubKind(?VehicleSubKind $subKind): self
  489.     {
  490.         $this->subKind $subKind;
  491.         return $this;
  492.     }
  493.     public function getModel(): ?VehicleModel
  494.     {
  495.         return $this->model;
  496.     }
  497.     public function setModel(?VehicleModel $model): self
  498.     {
  499.         $this->model $model;
  500.         return $this;
  501.     }
  502.     public function getBody(): ?VehicleBody
  503.     {
  504.         return $this->body;
  505.     }
  506.     public function setBody(?VehicleBody $body): self
  507.     {
  508.         $this->body $body;
  509.         return $this;
  510.     }
  511.     public function getColor(): ?VehicleColor
  512.     {
  513.         return $this->color;
  514.     }
  515.     public function setColor(?VehicleColor $color): self
  516.     {
  517.         $this->color $color;
  518.         return $this;
  519.     }
  520.     public function getFuel(): ?VehicleFuel
  521.     {
  522.         return $this->fuel;
  523.     }
  524.     public function setFuel(?VehicleFuel $fuel): self
  525.     {
  526.         $this->fuel $fuel;
  527.         return $this;
  528.     }
  529.     public function getConditionVehicle(): ?VehicleCondition
  530.     {
  531.         return $this->conditionVehicle;
  532.     }
  533.     public function setConditionVehicle(?VehicleCondition $conditionVehicle): self
  534.     {
  535.         $this->conditionVehicle $conditionVehicle;
  536.         return $this;
  537.     }
  538.     /**
  539.      * @return Collection<int, VehicleFinancial>
  540.      */
  541.     public function getFinancials(): Collection
  542.     {
  543.         return $this->financials;
  544.     }
  545.     public function addFinancial(VehicleFinancial $financial): self
  546.     {
  547.         if (!$this->financials->contains($financial)) {
  548.             $this->financials->add($financial);
  549.         }
  550.         return $this;
  551.     }
  552.     public function removeFinancial(VehicleFinancial $financial): self
  553.     {
  554.         $this->financials->removeElement($financial);
  555.         return $this;
  556.     }
  557.     /**
  558.      * @return Collection<int, VehicleEquipment>
  559.      */
  560.     public function getEquipments(): Collection
  561.     {
  562.         return $this->equipments;
  563.     }
  564.     public function addEquipment(VehicleEquipment $equipment): self
  565.     {
  566.         if (!$this->equipments->contains($equipment)) {
  567.             $this->equipments->add($equipment);
  568.         }
  569.         return $this;
  570.     }
  571.     public function removeEquipment(VehicleEquipment $equipment): self
  572.     {
  573.         $this->equipments->removeElement($equipment);
  574.         return $this;
  575.     }
  576.     /**
  577.      * @return Collection<int, VehicleImage>
  578.      */
  579.     public function getVehicleImages(): Collection
  580.     {
  581.         return $this->vehicleImages;
  582.     }
  583.     public function addVehicleImage(VehicleImage $vehicleImage): self
  584.     {
  585.         if (!$this->vehicleImages->contains($vehicleImage)) {
  586.             $this->vehicleImages->add($vehicleImage);
  587.             $vehicleImage->setVehicle($this);
  588.         }
  589.         return $this;
  590.     }
  591.     public function removeVehicleImage(VehicleImage $vehicleImage): self
  592.     {
  593.         if ($this->vehicleImages->removeElement($vehicleImage)) {
  594.             // set the owning side to null (unless already changed)
  595.             if ($vehicleImage->getVehicle() === $this) {
  596.                 $vehicleImage->setVehicle(null);
  597.             }
  598.         }
  599.         return $this;
  600.     }
  601.     public function getPaymentLeasing(): ?int
  602.     {
  603.         return $this->paymentLeasing;
  604.     }
  605.     public function setPaymentLeasing(?int $paymentLeasing): self
  606.     {
  607.         $this->paymentLeasing $paymentLeasing;
  608.         return $this;
  609.     }
  610.     public function getPartKind(): ?VehiclePartKind
  611.     {
  612.         return $this->partKind;
  613.     }
  614.     public function setPartKind(?VehiclePartKind $partKind): self
  615.     {
  616.         $this->partKind $partKind;
  617.         return $this;
  618.     }
  619.     public function getManufacturer(): ?VehicleManufacturer
  620.     {
  621.         return $this->manufacturer;
  622.     }
  623.     public function setManufacturer(?VehicleManufacturer $manufacturer): self
  624.     {
  625.         $this->manufacturer $manufacturer;
  626.         return $this;
  627.     }
  628.     public function getVehicleTip(): ?VehicleTip
  629.     {
  630.         return $this->vehicleTip;
  631.     }
  632.     public function setVehicleTip(?VehicleTip $vehicleTip): self
  633.     {
  634.         // unset the owning side of the relation if necessary
  635.         if ($vehicleTip === null && $this->vehicleTip !== null) {
  636.             $this->vehicleTip->setVehicle(null);
  637.         }
  638.         // set the owning side of the relation if necessary
  639.         if ($vehicleTip !== null && $vehicleTip->getVehicle() !== $this) {
  640.             $vehicleTip->setVehicle($this);
  641.         }
  642.         $this->vehicleTip $vehicleTip;
  643.         return $this;
  644.     }
  645.     public function getDealer(): ?Dealer
  646.     {
  647.         return $this->dealer;
  648.     }
  649.     public function setDealer(?Dealer $dealer): self
  650.     {
  651.         $this->dealer $dealer;
  652.         return $this;
  653.     }
  654.     public function getGearbox(): ?string
  655.     {
  656.         return $this->gearbox;
  657.     }
  658.     public function setGearbox(?string $gearbox): self
  659.     {
  660.         $this->gearbox $gearbox;
  661.         return $this;
  662.     }
  663.     /**
  664.      * @return Collection<int, VehicleForm>
  665.      */
  666.     public function getVehicleForms(): Collection
  667.     {
  668.         return $this->vehicleForms;
  669.     }
  670.     public function addVehicleForm(VehicleForm $vehicleForm): self
  671.     {
  672.         if (!$this->vehicleForms->contains($vehicleForm)) {
  673.             $this->vehicleForms->add($vehicleForm);
  674.             $vehicleForm->setVehicle($this);
  675.         }
  676.         return $this;
  677.     }
  678.     public function removeVehicleForm(VehicleForm $vehicleForm): self
  679.     {
  680.         if ($this->vehicleForms->removeElement($vehicleForm)) {
  681.             // set the owning side to null (unless already changed)
  682.             if ($vehicleForm->getVehicle() === $this) {
  683.                 $vehicleForm->setVehicle(null);
  684.             }
  685.         }
  686.         return $this;
  687.     }
  688.     public function getHiddenAt(): ?DateTimeImmutable
  689.     {
  690.         return $this->hiddenAt;
  691.     }
  692.     public function setHiddenAt(?DateTimeImmutable $hiddenAt): self
  693.     {
  694.         $this->hiddenAt $hiddenAt;
  695.         return $this;
  696.     }
  697.     public function getSeoSlug(): ?string
  698.     {
  699.         return $this->seoSlug;
  700.     }
  701.     public function setSeoSlug(?string $seoSlug): self
  702.     {
  703.         $this->seoSlug $seoSlug;
  704.         return $this;
  705.     }
  706.     public function getSeoTitle(): ?string
  707.     {
  708.         return $this->seoTitle;
  709.     }
  710.     public function setSeoTitle(?string $seoTitle): self
  711.     {
  712.         $this->seoTitle $seoTitle;
  713.         return $this;
  714.     }
  715.     public function getSeoDescription(): ?string
  716.     {
  717.         return $this->seoDescription;
  718.     }
  719.     public function setSeoDescription(?string $seoDescription): self
  720.     {
  721.         $this->seoDescription $seoDescription;
  722.         return $this;
  723.     }
  724.     public function getSeoH1(): ?string
  725.     {
  726.         return $this->seoH1;
  727.     }
  728.     public function setSeoH1(?string $seoH1): self
  729.     {
  730.         $this->seoH1 $seoH1;
  731.         return $this;
  732.     }
  733.     public function getUrlGeneratedAt(): ?DateTimeImmutable
  734.     {
  735.         return $this->urlGeneratedAt;
  736.     }
  737.     public function setUrlGeneratedAt(?DateTimeImmutable $urlGeneratedAt): self
  738.     {
  739.         $this->urlGeneratedAt $urlGeneratedAt;
  740.         return $this;
  741.     }
  742. }