src/Entity/Vehicle.php line 44

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the VPAutoDeclareSaleBundle package.
  4.  *
  5.  * (c) CNSX <http://www.cnsx.net/>
  6.  *
  7.  */
  8. namespace App\Entity;
  9. use Doctrine\Common\Collections\ArrayCollection;
  10. use Doctrine\Common\Collections\Collection;
  11. use Doctrine\ORM\EntityNotFoundException;
  12. use Doctrine\ORM\Mapping as ORM;
  13. use Gedmo\Mapping\Annotation as Gedmo;
  14. use Gedmo\Sluggable\Util\Urlizer;
  15. use Symfony\Component\Serializer\Annotation\Groups;
  16. use Symfony\Component\Validator\Constraints as Assert;
  17. /**
  18.  * @ORM\Entity(repositoryClass="App\Repository\VehicleRepository")
  19.  *
  20.  * @ORM\InheritanceType("JOINED")
  21.  *
  22.  * @ORM\DiscriminatorColumn(name="discr", type="string")
  23.  *
  24.  * @ORM\DiscriminatorMap({"vehicle" = "Vehicle", "external_vehicle" = "ExternalVehicle"})
  25.  *
  26.  * @ORM\Table(
  27.  *     name="vehicle",
  28.  *     indexes={
  29.  *
  30.  *         @ORM\Index(columns={"etincelleId"}),
  31.  *         @ORM\Index(columns={"salingState"}),
  32.  *         @ORM\Index(columns={"lot"}),
  33.  *         @ORM\Index(columns={"maker"}),
  34.  *         @ORM\Index(columns={"modelGroup"})
  35.  *     }
  36.  * )
  37.  *
  38.  * @ORM\HasLifecycleCallbacks
  39.  */
  40. class Vehicle
  41. {
  42.     public const SALING_STATE_NONE 'NC';
  43.     public const SALING_STATE_CURRENT 'En cours';
  44.     public const SALING_STATE_RETIRE 'Retiré';
  45.     public const SALING_STATE_ADJUGE 'Adjugé';
  46.     public const SALING_STATE_EXCLUS 'Exclus';
  47.     public const SALING_STATE_SUPPRIME 'Supprimé';
  48.     public const SALING_STATE_NO_STARTING_PRICE 'Absence mise à prix';
  49.     public const TARIFICATION_TYPE_VOLUNTARY 'Volontaire';
  50.     public const TARIFICATION_TYPE_COMPULSORY 'Judiciaire';
  51.     public const SELLER_STATE_WAITING_CALLBACK 'Attente vendeur';
  52.     public const SELLER_STATE_WAITING_SALESMAN 'Attente commercial';
  53.     public const SELLER_STATE_CLOSE 'Clôturé';
  54.     public const PHOTOS_PUBLIC 'public';
  55.     public const PHOTOS_EXPERTISE 'expertise';
  56.     public const IDENTIFICATION_TYPE_CARD 'CG';
  57.     public const IDENTIFICATION_TYPE_SHEET 'ID';
  58.     public const IDENTIFICATION_TYPE_DUPLICATE 'DUP';
  59.     public const SELLER_NOT_ELIGIBLE_POST_SALE = ['SINEQUAE'];
  60.     public const PAGER_MAX 96;
  61.     public const RESULTS_MAX 48;
  62.     public const MAX_ANIMATION_PERCENT 5;
  63.     public static $freeSearchItems = ['v.class''v.maker''v.model''vc.name''o.name'];
  64.     /**
  65.      * @ORM\Id
  66.      *
  67.      * @ORM\Column(type="string")
  68.      *
  69.      * @ORM\GeneratedValue(strategy="NONE")
  70.      *
  71.      * @Groups({"read"})
  72.      */
  73.     protected $id;
  74.     /**
  75.      * @ORM\Column(type="string")
  76.      *
  77.      * @Groups({"read"})
  78.      */
  79.     protected $vehicleId;
  80.     /**
  81.      * Locale.
  82.      *
  83.      * @Gedmo\Locale
  84.      */
  85.     protected $locale;
  86.     /**
  87.      * @ORM\OneToMany(targetEntity="App\Entity\VehicleAlert", mappedBy="vehicle", cascade={"remove"})
  88.      **/
  89.     protected $usersToAlert;
  90.     /**
  91.      * @ORM\OneToMany(targetEntity="App\Entity\Selection", mappedBy="vehicle", cascade={"remove"})
  92.      **/
  93.     protected $selections;
  94.     /**
  95.      * @ORM\OneToMany(targetEntity="App\Entity\SmsAlert", mappedBy="vehicle", cascade={"remove"})
  96.      **/
  97.     protected $smsAlerts;
  98.     /**
  99.      * @ORM\ManyToOne(targetEntity="App\Entity\SaleEvent", inversedBy="vehicles",fetch="EAGER", cascade={"persist"})
  100.      *
  101.      * @ORM\JoinColumn(nullable=false)
  102.      *
  103.      * @Groups({"read"})
  104.      */
  105.     protected $event;
  106.     /**
  107.      * @var Auction
  108.      *
  109.      * @ORM\OneToOne(targetEntity="App\Entity\Auction", mappedBy="vehicle", cascade={"persist", "remove"})
  110.      */
  111.     protected $auction;
  112.     /**
  113.      * @ORM\OneToMany(targetEntity="App\Entity\PurchaseInstruction", mappedBy="vehicle", cascade={"remove"})
  114.      *
  115.      * @ORM\OrderBy({"amount" = "desc", "updatedAt" = "asc"})
  116.      */
  117.     protected $purchaseInstructions;
  118.     /**
  119.      * @ORM\Column(type="array", nullable=true)
  120.      *
  121.      * @Groups({"read"})
  122.      **/
  123.     protected $photos;
  124.     /**
  125.      * @ORM\ManyToMany(targetEntity="App\Entity\Option", cascade={"persist"})
  126.      *
  127.      * @ORM\JoinTable(name="vehicle_option")
  128.      *
  129.      * @ORM\OrderBy({"weight" = "asc"})
  130.      *
  131.      * @Groups({"read"})
  132.      */
  133.     protected $options;
  134.     /**
  135.      * @ORM\Column(type="integer", nullable=true)
  136.      *
  137.      * @Groups({"read"})
  138.      */
  139.     protected $lot;
  140.     /**
  141.      * @ORM\Column(type="string", nullable=true)
  142.      */
  143.     protected $lotComplement;
  144.     /**
  145.      * @ORM\Column(type="boolean", name="isranked")
  146.      */
  147.     protected $ordered;
  148.     /**
  149.      * @ORM\Column(type="string", nullable=true)
  150.      *
  151.      * @Groups({"read"})
  152.      **/
  153.     protected $salingState self::SALING_STATE_NONE;
  154.     /**
  155.      * @ORM\ManyToOne(targetEntity="App\Entity\User")
  156.      *
  157.      * @ORM\JoinColumn(name="winner_id", referencedColumnName="id")
  158.      */
  159.     protected $winner;
  160.     /**
  161.      * @ORM\Column(type="string", nullable=true)
  162.      */
  163.     protected $class;
  164.     /**
  165.      * @ORM\Column(type="string", nullable=true)
  166.      *
  167.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  168.      *
  169.      * @Groups({"read"})
  170.      */
  171.     protected $maker;
  172.     /**
  173.      * @ORM\Column(type="string", nullable=true)
  174.      *
  175.      * @Groups({"read"})
  176.      */
  177.     protected $makerSlug;
  178.     /**
  179.      * @ORM\Column(type="string", nullable=true)
  180.      *
  181.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  182.      *
  183.      * @Groups({"read"})
  184.      */
  185.     protected $modelGroup;
  186.     /**
  187.      * @ORM\Column(type="string", nullable=true)
  188.      *
  189.      * @Groups({"read"})
  190.      */
  191.     protected $modelGroupSlug;
  192.     /**
  193.      * @ORM\Column(type="string", nullable=true)
  194.      *
  195.      * @Groups({"read"})
  196.      */
  197.     protected $segment;
  198.     /**
  199.      * @ORM\Column(type="string", nullable=true)
  200.      *
  201.      * @Groups({"read"})
  202.      */
  203.     protected $segmentSlug;
  204.     /**
  205.      * @ORM\Column(type="string", nullable=true)
  206.      *
  207.      * @Groups({"read"})
  208.      */
  209.     protected $segmentSize;
  210.     /**
  211.      * @ORM\Column(type="string", nullable=true)
  212.      *
  213.      * @Groups({"read"})
  214.      */
  215.     protected $segmentSizeSlug;
  216.     /**
  217.      * @ORM\Column(type="string", nullable=true)
  218.      *
  219.      * @Groups({"read"})
  220.      */
  221.     protected $segmentBody;
  222.     /**
  223.      * @var Transmission
  224.      *
  225.      * @ORM\ManyToOne(targetEntity="App\Entity\Transmission", cascade={"persist"})
  226.      *
  227.      * @ORM\JoinColumn(name="transmission_id", referencedColumnName="id", nullable=true)
  228.      *
  229.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  230.      *
  231.      * @Groups({"read"})
  232.      */
  233.     protected $segmentTransmission;
  234.     /**
  235.      * @ORM\ManyToOne(targetEntity="App\Entity\Category", cascade={"persist"})
  236.      *
  237.      * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
  238.      *
  239.      * @Groups({"read"})
  240.      */
  241.     protected $category;
  242.     /**
  243.      * @ORM\Column(type="string", nullable=true)
  244.      *
  245.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  246.      *
  247.      * @Groups({"read"})
  248.      **/
  249.     protected $model;
  250.     /**
  251.      * @ORM\Column(type="string", nullable=true)
  252.      *
  253.      * @Groups({"read"})
  254.      **/
  255.     protected $typeCode;
  256.     /**
  257.      * @ORM\Column(type="integer", nullable=true)
  258.      *
  259.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  260.      *
  261.      * @Groups({"read"})
  262.      **/
  263.     protected $millesime;
  264.     /**
  265.      * @ORM\Column(type="date", nullable=true)
  266.      *
  267.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  268.      *
  269.      * @Groups({"read"})
  270.      **/
  271.     protected $registrationDate;
  272.     /**
  273.      * @ORM\Column(type="integer", nullable=true)
  274.      *
  275.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  276.      *
  277.      * @Groups({"read"})
  278.      **/
  279.     protected $kilometers;
  280.     /**
  281.      * @ORM\Column(type="integer", nullable=true)
  282.      **/
  283.     protected $taxHorsepower;
  284.     /**
  285.      * @var Energy
  286.      *
  287.      * @ORM\ManyToOne(targetEntity="App\Entity\Energy", cascade={"persist"})
  288.      *
  289.      * @ORM\JoinColumn(name="energy_id", referencedColumnName="id", nullable=true)
  290.      *
  291.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  292.      *
  293.      * @Groups({"read"})
  294.      */
  295.     protected $energy;
  296.     /**
  297.      * @ORM\Column(type="string", nullable=true)
  298.      *
  299.      * @Groups({"read"})
  300.      **/
  301.     protected $bodyType;
  302.     /**
  303.      * @ORM\Column(type="text", nullable=true)
  304.      **/
  305.     protected $stateDetails;
  306.     /**
  307.      * @ORM\Column(type="string", nullable=true)
  308.      **/
  309.     protected $guarantee;
  310.     /**
  311.      * @ORM\Column(type="boolean", nullable=true)
  312.      **/
  313.     protected $guaranteed;
  314.     /**
  315.      * @ORM\Column(type="decimal", scale=1, nullable=true)
  316.      **/
  317.     protected $stateRating;
  318.     /**
  319.      * @ORM\Column(type="string", nullable=true)
  320.      **/
  321.     protected $afnor;
  322.     /**
  323.      * @ORM\Column(type="integer")
  324.      */
  325.     protected $etincelleId;
  326.     /**
  327.      * @ORM\Column(type="string", nullable=true)
  328.      */
  329.     protected $iridiumId;
  330.     /**
  331.      * @ORM\Column(type="boolean", nullable=true)
  332.      **/
  333.     protected $vat;
  334.     /**
  335.      * @ORM\Column(type="integer", nullable=true)
  336.      *
  337.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  338.      *
  339.      * @Groups({"read"})
  340.      **/
  341.     protected $seatCount;
  342.     /**
  343.      * @ORM\Column(type="text", nullable=true)
  344.      *
  345.      * @Gedmo\Translatable
  346.      **/
  347.     protected $observation;
  348.     /**
  349.      * @ORM\Column(type="text", nullable=true)
  350.      **/
  351.     protected $motFileUrl;
  352.     /**
  353.      * @ORM\Column(type="text", nullable=true)
  354.      **/
  355.     protected $maintenanceFileUrl;
  356.     /**
  357.      * @ORM\Column(type="text", nullable=true)
  358.      **/
  359.     protected $roadTestFileUrl;
  360.     /**
  361.      * @ORM\Column(type="text", nullable=true)
  362.      **/
  363.     protected $bilanExpertFileUrl;
  364.     /**
  365.      * @ORM\Column(type="text", nullable=true)
  366.      */
  367.     protected $photo3dExteriorUrl;
  368.     /**
  369.      * @ORM\Column(type="text", nullable=true)
  370.      */
  371.     protected $photo3dExteriorExtraUrl;
  372.     /**
  373.      * @ORM\Column(type="text", nullable=true)
  374.      **/
  375.     protected $explodedViewFileUrl;
  376.     /**
  377.      * @ORM\Column(type="text", nullable=true)
  378.      **/
  379.     protected $dekraUrl;
  380.     /**
  381.      * @ORM\Column(type="text", nullable=true)
  382.      **/
  383.     protected $inspectionReportUrl;
  384.     /**
  385.      * @ORM\Column(type="integer", nullable=true)
  386.      **/
  387.     protected $argusPrice;
  388.     /**
  389.      * @ORM\Column(type="integer", nullable=true)
  390.      **/
  391.     protected $argusTransactionPrice;
  392.     /**
  393.      * @ORM\Column(type="integer", nullable=true)
  394.      **/
  395.     protected $argusAnnoncePrice;
  396.     /**
  397.      * @ORM\Column(type="integer", nullable=true)
  398.      **/
  399.     protected $argusDatedPrice;
  400.     /**
  401.      * @ORM\Column(type="integer", nullable=true)
  402.      **/
  403.     protected $argusKmPrice;
  404.     /**
  405.      * @ORM\Column(type="integer", nullable=true)
  406.      **/
  407.     protected $spotPrice;
  408.     /**
  409.      * @ORM\Column(type="integer", nullable=true)
  410.      **/
  411.     protected $reconditioningPrice;
  412.     /**
  413.      * @ORM\Column(type="integer", nullable=true)
  414.      *
  415.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  416.      **/
  417.     protected $estimationPrice;
  418.     /**
  419.      * @ORM\Column(type="integer", nullable=true)
  420.      **/
  421.     protected $estimationPriceMin;
  422.     /**
  423.      * @ORM\Column(type="integer", nullable=true)
  424.      **/
  425.     protected $initialReservePrice;
  426.     /**
  427.      * @ORM\Column(type="integer", nullable=true)
  428.      **/
  429.     protected $initialReservePriceHF;
  430.     /**
  431.      * @ORM\Column(type="integer", nullable=true)
  432.      *
  433.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  434.      **/
  435.     protected $reservePrice;
  436.     /**
  437.      * @ORM\Column(type="integer", nullable=true)
  438.      **/
  439.     protected $reservePriceHF;
  440.     /**
  441.      * @ORM\Column(type="integer", nullable=true)
  442.      **/
  443.     protected $oldReservePrice;
  444.     /**
  445.      * @ORM\Column(type="integer", nullable=true)
  446.      **/
  447.     protected $oldReservePriceHF;
  448.     /**
  449.      * @ORM\Column(type="integer")
  450.      */
  451.     protected $deltaReservePrice 0;
  452.     /**
  453.      * @ORM\Column(type="integer")
  454.      */
  455.     protected $deltaFees 0;
  456.     /**
  457.      * @ORM\Column(type="integer", nullable=true)
  458.      **/
  459.     protected $unusedPrice;
  460.     /**
  461.      * @ORM\Column(type="integer", nullable=true)
  462.      *
  463.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  464.      **/
  465.     protected $startingPrice;
  466.     /**
  467.      * @ORM\Column(type="integer", nullable=true)
  468.      */
  469.     protected $buyoutPrice;
  470.     /**
  471.      * @ORM\Column(type="integer", nullable=true)
  472.      **/
  473.     protected $unsoldPrice;
  474.     /**
  475.      * @ORM\Column(type="integer", nullable=true)
  476.      **/
  477.     protected $unsoldOnlinePrice;
  478.     /**
  479.      * @ORM\Column(type="integer", nullable=true)
  480.      **/
  481.     protected $lastHammerPrice;
  482.     /**
  483.      * @ORM\Column(type="integer", nullable=true)
  484.      */
  485.     protected $finalAmount;
  486.     /**
  487.      * @ORM\Column(type="integer", nullable=true)
  488.      **/
  489.     protected $unsoldCount;
  490.     /**
  491.      * @ORM\Column(type="integer", nullable=true)
  492.      **/
  493.     protected $unsoldOnlineCount;
  494.     /**
  495.      * @ORM\Column(type="boolean", nullable=true)
  496.      *
  497.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  498.      **/
  499.     protected $broken;
  500.     /**
  501.      * @ORM\Column(type="boolean", nullable=true)
  502.      **/
  503.     protected $duplicateKeys;
  504.     /**
  505.      * @ORM\Column(type="integer", nullable=true)
  506.      *
  507.      * @Groups({"read"})
  508.      **/
  509.     protected $co2;
  510.     /**
  511.      * @ORM\Column(type="string", nullable=true)
  512.      *
  513.      * @Groups({"read"})
  514.      **/
  515.     protected $euroEmissionStandard;
  516.     /**
  517.      * @ORM\Column(type="string", nullable=true)
  518.      **/
  519.     protected $shortModel;
  520.     /**
  521.      * @ORM\Column(type="string", nullable=true)
  522.      **/
  523.     protected $version;
  524.     /**
  525.      * @ORM\Column(type="integer", nullable=true)
  526.      *
  527.      * @Groups({"read"})
  528.      **/
  529.     protected $length;
  530.     /**
  531.      * @ORM\Column(type="integer", nullable=true)
  532.      *
  533.      * @Groups({"read"})
  534.      **/
  535.     protected $width;
  536.     /**
  537.      * @ORM\Column(type="integer", nullable=true)
  538.      *
  539.      * @Groups({"read"})
  540.      **/
  541.     protected $height;
  542.     /**
  543.      * @ORM\Column(type="string")
  544.      */
  545.     protected $tarification;
  546.     /**
  547.      * @ORM\Column(type="string", nullable=true)
  548.      **/
  549.     protected $tarificationType;
  550.     /**
  551.      * @ORM\Column(type="string", nullable=true)
  552.      **/
  553.     protected $zipCodeLocation;
  554.     /**
  555.      * @ORM\Column(type="string", nullable=true)
  556.      **/
  557.     protected $cityLocation;
  558.     /**
  559.      * @ORM\Column(type="boolean")
  560.      **/
  561.     protected $lotOpen false;
  562.     /**
  563.      * @ORM\Column(type="boolean")
  564.      */
  565.     protected $justOpened false;
  566.     /**
  567.      * @ORM\Column(type="integer")
  568.      */
  569.     protected $nbViews 0;
  570.     /**
  571.      * @ORM\Column(type="boolean", nullable=true)
  572.      */
  573.     protected $noShipping;
  574.     /**
  575.      * @ORM\Column(type="string", nullable=true)
  576.      */
  577.     protected $salesperson;
  578.     /**
  579.      * @ORM\Column(type="date", nullable=true)
  580.      **/
  581.     protected $etincelleCreatedAt;
  582.     /**
  583.      * @ORM\Column(type="string", nullable=true)
  584.      **/
  585.     protected $etincelleSalingState;
  586.     /**
  587.      * @ORM\Column(type="string", nullable=true)
  588.      **/
  589.     protected $etincelleSalingStateComplement;
  590.     /**
  591.      * @ORM\Column(type="boolean", nullable=true)
  592.      */
  593.     protected $urgent;
  594.     /**
  595.      * @ORM\Column(type="date", nullable=true)
  596.      **/
  597.     protected $mandateDate;
  598.     /**
  599.      * @ORM\Column(type="date", nullable=true)
  600.      **/
  601.     protected $soldDate;
  602.     /**
  603.      * @ORM\Column(type="string", nullable=true)
  604.      *
  605.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  606.      **/
  607.     protected $registrationPlate;
  608.     /**
  609.      * @ORM\Column(type="boolean", nullable=true)
  610.      */
  611.     protected $adjustable;
  612.     /**
  613.      * @ORM\Column(type="integer", nullable=true)
  614.      *
  615.      * @Groups({"read"})
  616.      **/
  617.     protected $emptyWeight;
  618.     /**
  619.      * @ORM\Column(type="integer", nullable=true)
  620.      **/
  621.     protected $liftingCapacity;
  622.     /**
  623.      * @ORM\Column(type="integer", nullable=true)
  624.      **/
  625.     protected $liftingHeight;
  626.     /**
  627.      * @ORM\Column(type="integer", nullable=true)
  628.      **/
  629.     protected $engineActualHourCount;
  630.     /**
  631.      * @ORM\Column(type="integer", nullable=true)
  632.      **/
  633.     protected $wheelBase;
  634.     /**
  635.      * @ORM\Column(type="integer", nullable=true)
  636.      **/
  637.     protected $cylinderCount;
  638.     /**
  639.      * @ORM\Column(type="integer", nullable=true)
  640.      *
  641.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  642.      *
  643.      * @Groups({"read"})
  644.      **/
  645.     protected $doorCount;
  646.     /**
  647.      * @ORM\Column(type="integer", nullable=true)
  648.      *
  649.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  650.      *
  651.      * @Groups({"read"})
  652.      **/
  653.     protected $gearCount;
  654.     /**
  655.      * @ORM\Column(type="string", nullable=true)
  656.      *
  657.      * @Groups({"read"})
  658.      **/
  659.     protected $driveWheel;
  660.     /**
  661.      * @ORM\Column(type="integer", nullable=true)
  662.      **/
  663.     protected $loadWeight;
  664.     /**
  665.      * @ORM\Column(type="integer", nullable=true)
  666.      *
  667.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  668.      *
  669.      * @Groups({"read"})
  670.      **/
  671.     protected $horsePower;
  672.     /**
  673.      * @ORM\Column(type="string", nullable=true)
  674.      *
  675.      * @Groups({"read"})
  676.      **/
  677.     protected $gearbox;
  678.     /**
  679.      * @ORM\Column(type="string", nullable=true)
  680.      **/
  681.     protected $maintenanceBookState;
  682.     /**
  683.      * @ORM\Column(type="string", nullable=true)
  684.      **/
  685.     protected $maintenanceFileState;
  686.     /**
  687.      * @ORM\Column(type="boolean", nullable=true)
  688.      **/
  689.     protected $makerGuarantee;
  690.     /**
  691.      * @ORM\Column(type="date", nullable=true)
  692.      **/
  693.     protected $makerGuaranteeExpiredAt;
  694.     /**
  695.      * @ORM\Column(type="integer", nullable=true)
  696.      **/
  697.     protected $makerGuaranteeKilometers;
  698.     /**
  699.      * @ORM\Column(type="boolean", nullable=true)
  700.      */
  701.     protected $premiumGuarantee;
  702.     /**
  703.      * @ORM\Column(type="string", nullable=true)
  704.      */
  705.     protected $premiumGuaranteeDescription;
  706.     /**
  707.      * @ORM\Column(type="string", length=1, nullable=true)
  708.      **/
  709.     protected $segmentFirst;
  710.     /**
  711.      * @ORM\Column(type="boolean", nullable=true)
  712.      **/
  713.     protected $firstHand;
  714.     /**
  715.      * @ORM\Column(type="string", nullable=true)
  716.      **/
  717.     protected $argusOID;
  718.     /**
  719.      * @ORM\Column(type="string", nullable=true)
  720.      *
  721.      * @Groups({"read"})
  722.      **/
  723.     protected $natCode;
  724.     /**
  725.      * @ORM\Column(type="boolean", nullable=true)
  726.      **/
  727.     protected $damaged;
  728.     /**
  729.      * @ORM\Column(type="text", nullable=true)
  730.      **/
  731.     protected $sellerObservation;
  732.     /**
  733.      * @ORM\Column(type="boolean", nullable=true)
  734.      **/
  735.     protected $trainingVehicle;
  736.     /**
  737.      * @ORM\Column(type="boolean", nullable=true)
  738.      **/
  739.     protected $taxi;
  740.     /**
  741.      * @ORM\Column(type="boolean", nullable=true)
  742.      **/
  743.     protected $mechanicallyDamaged;
  744.     /**
  745.      * @ORM\Column(type="decimal", scale=1, nullable=true)
  746.      **/
  747.     protected $innerStateRating;
  748.     /**
  749.      * @ORM\Column(type="decimal", scale=1, nullable=true)
  750.      **/
  751.     protected $expertiseRating;
  752.     /**
  753.      * @ORM\Column(type="boolean", nullable=true)
  754.      */
  755.     protected $highlight;
  756.     /**
  757.      * @ORM\Column(type="boolean", nullable=true)
  758.      */
  759.     protected $catalog;
  760.     /**
  761.      * @ORM\Column(type="boolean", nullable=true)
  762.      */
  763.     protected $catalogHighlight;
  764.     /**
  765.      * @ORM\Column(type="boolean", nullable=true)
  766.      */
  767.     protected $star;
  768.     /**
  769.      * @ORM\Column(type="boolean", nullable=true)
  770.      */
  771.     protected $starElectro false;
  772.     /**
  773.      * @ORM\ManyToOne(targetEntity="App\Entity\Seller", inversedBy="vehicles", cascade={"persist"})
  774.      *
  775.      * @ORM\JoinColumn(name="seller_id", referencedColumnName="id")
  776.      *
  777.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  778.      */
  779.     protected $seller;
  780.     /**
  781.      * @ORM\OneToMany(targetEntity="App\Entity\VehicleBehaviour", mappedBy="vehicle", cascade={"remove"})
  782.      */
  783.     protected $behaviours;
  784.     /**
  785.      * @ORM\Column(type="string", nullable=true)
  786.      */
  787.     protected $sellerCallback self::SELLER_STATE_WAITING_CALLBACK;
  788.     /**
  789.      * @ORM\Column(type="boolean")
  790.      */
  791.     protected $sentToSap false;
  792.     /**
  793.      * @ORM\Column(type="string", length=5, nullable=true)
  794.      *
  795.      * @Groups({"read"})
  796.      */
  797.     protected $critair;
  798.     /**
  799.      * @ORM\Column(type="boolean", nullable=true)
  800.      */
  801.     protected $deliveryRequest;
  802.     /**
  803.      * @ORM\Column(type="string", length=20, nullable=true)
  804.      */
  805.     protected $identificationType;
  806.     /**
  807.      * @ORM\Column(type="integer", nullable=true)
  808.      **/
  809.     protected $etincelleReservePrice;
  810.     /**
  811.      * @ORM\Column(type="integer", nullable=true)
  812.      **/
  813.     protected $sellerEstimationPrice;
  814.     /**
  815.      * @ORM\Column(type="integer", nullable=true)
  816.      **/
  817.     protected $etincelleReservePriceHF;
  818.     /**
  819.      * @ORM\Column(type="integer", nullable=true)
  820.      **/
  821.     protected $sellerEstimationPriceHF;
  822.     /**
  823.      * @ORM\Column(type="integer", nullable=true)
  824.      **/
  825.     protected $estimationPriceHF;
  826.     /**
  827.      * @ORM\Column(type="text", nullable=true)
  828.      **/
  829.     protected $cocFileUrl;
  830.     /**
  831.      * @ORM\Column(type="text", nullable=true)
  832.      **/
  833.     protected $carpassFileUrl;
  834.     /**
  835.      * @ORM\Column(type="string", nullable=true)
  836.      **/
  837.     protected $firstCountryRegistration;
  838.     /**
  839.      * @ORM\Column(type="string", nullable=true)
  840.      **/
  841.     protected $co2Standard;
  842.     /**
  843.      * @ORM\Column(type="string", nullable=true)
  844.      *
  845.      * @Assert\NotBlank(groups={"api_iridium_vehicle"})
  846.      */
  847.     private $vin;
  848.     /**
  849.      * @ORM\ManyToOne(targetEntity="App\Entity\Color", cascade={"persist"})
  850.      *
  851.      * @ORM\JoinColumn(name="color_id", referencedColumnName="id", nullable=true)
  852.      */
  853.     private $color;
  854.     /**
  855.      * @ORM\Column(type="string", nullable=true)
  856.      **/
  857.     private $dataHubUUID;
  858.     /**
  859.      * @ORM\Column(type="string", nullable=true)
  860.      **/
  861.     private $sapFile;
  862.     public function __construct()
  863.     {
  864.         $this->usersToAlert = new ArrayCollection();
  865.         $this->selections = new ArrayCollection();
  866.         $this->purchaseInstructions = new ArrayCollection();
  867.         $this->options = new ArrayCollection();
  868.         $this->behaviours = new ArrayCollection();
  869.         $this->ordered false;
  870.         $this->deliveryRequest false;
  871.     }
  872.     /**
  873.      * Set slugs.
  874.      *
  875.      * @ORM\PrePersist()
  876.      *
  877.      * @ORM\PreUpdate()
  878.      */
  879.     public function initSlugs(): void
  880.     {
  881.         $this->makerSlug $this->maker Urlizer::urlize($this->maker) : null;
  882.         $this->modelGroupSlug $this->modelGroup Urlizer::urlize($this->modelGroup) : null;
  883.         $this->segmentSlug $this->segment Urlizer::urlize($this->segment) : null;
  884.         $this->segmentSizeSlug $this->segmentSize Urlizer::urlize($this->segmentSize) : null;
  885.     }
  886.     public function getId()
  887.     {
  888.         return $this->id;
  889.     }
  890.     public function setId($id): void
  891.     {
  892.         $this->id $id;
  893.     }
  894.     public function getVehicleId()
  895.     {
  896.         return $this->vehicleId;
  897.     }
  898.     public function setVehicleId($vehicleId): void
  899.     {
  900.         $this->vehicleId $vehicleId;
  901.     }
  902.     public function getLocale()
  903.     {
  904.         return $this->locale;
  905.     }
  906.     public function setLocale($locale): void
  907.     {
  908.         $this->locale $locale;
  909.     }
  910.     public function setAlerts(ArrayCollection $alerts): void
  911.     {
  912.         $this->usersToAlert $alerts;
  913.     }
  914.     public function getAlerts()
  915.     {
  916.         return $this->usersToAlert;
  917.     }
  918.     public function setSelections(ArrayCollection $selections): void
  919.     {
  920.         $this->selections $selections;
  921.     }
  922.     public function getSelections()
  923.     {
  924.         return $this->selections;
  925.     }
  926.     public function removeSelection(Selection $selection)
  927.     {
  928.         return $this->selections->removeElement($selection);
  929.     }
  930.     public function setSmsAlerts(ArrayCollection $smsAlerts): void
  931.     {
  932.         $this->smsAlerts $smsAlerts;
  933.     }
  934.     public function getSmsAlerts()
  935.     {
  936.         return $this->smsAlerts;
  937.     }
  938.     public function removeSmsAlert(SmsAlert $smsAlert)
  939.     {
  940.         return $this->smsAlerts->removeElement($smsAlert);
  941.     }
  942.     public function setEvent(SaleEvent $event): void
  943.     {
  944.         $this->event $event;
  945.     }
  946.     public function getEvent()
  947.     {
  948.         return $this->event;
  949.     }
  950.     public function getSale(): ?Sale
  951.     {
  952.         try {
  953.             return $this->event->getSale();
  954.         } catch (EntityNotFoundException) {
  955.             return null;
  956.         }
  957.     }
  958.     public function getAuction()
  959.     {
  960.         return $this->auction;
  961.     }
  962.     public function setAuction(Auction $auction): void
  963.     {
  964.         $this->auction $auction;
  965.     }
  966.     public function getAuctionOpen(?\DateTime $at null$delay 0)
  967.     {
  968.         if (null === $this->auction) {
  969.             return false;
  970.         }
  971.         $at $at $at->format('U') : (time() * 1000);
  972.         if (null === $this->auction->getClosedAt()) {
  973.             return false;
  974.         }
  975.         if (true === $this->auction->isPaused()) {
  976.             return true;
  977.         }
  978.         return (($this->auction->getClosedAt()->format('U') * 1000) + $this->auction->getPausedMs() + $delay 1000) > (time() * 1000);
  979.     }
  980.     public function isAuctionOpen(?\DateTime $at null)
  981.     {
  982.         return (bool) $this->getAuctionOpen($at2);
  983.     }
  984.     public function setAuctionOpen($open$startSecond 15$auctionSecond 10)
  985.     {
  986.         if ($open) {
  987.             if ($this->justOpened) {
  988.                 $second false !== $startSecond ?
  989.                     $startSecond :
  990.                     $auctionSecond;
  991.             } else {
  992.                 $second $auctionSecond;
  993.             }
  994.             if (null === $this->auction->getOpenedAt() || !$this->isAuctionOpen()) {
  995.                 $this->auction->setOpenedAt(new \DateTime());
  996.             }
  997.             $dt = new \DateTime();
  998.             $dt->modify(sprintf('+%d second'$second));
  999.             $this->auction->setClosedAt($dt);
  1000.             $this->justOpened false;
  1001.         } else {
  1002.             $this->auction->setOpenedAt(null);
  1003.             $this->auction->setClosedAt(null);
  1004.             $this->justOpened false;
  1005.         }
  1006.         return $this;
  1007.     }
  1008.     public function getPurchaseInstructions()
  1009.     {
  1010.         $purchaseInstructions = [];
  1011.         // Take only the current purchase instructions, not for every sale
  1012.         foreach ($this->purchaseInstructions as $instruction) {
  1013.             if ($instruction->getSale()->getId() == $this->getSale()->getId()) {
  1014.                 $purchaseInstructions[] = $instruction;
  1015.             }
  1016.         }
  1017.         return $purchaseInstructions;
  1018.     }
  1019.     /**
  1020.      * Reindex the array to avoid issues when reading the pis.
  1021.      *
  1022.      * @see \App\Controller\Frontend\PurchaseInstructionController::boxAction
  1023.      */
  1024.     public function getValidPurchaseInstructions()
  1025.     {
  1026.         $purchaseInstructions array_filter(
  1027.             $this->purchaseInstructions->toArray(),
  1028.             fn ($pi) => PurchaseInstruction::ACCEPTED === $pi->getStatus() || PurchaseInstruction::WON === $pi->getStatus()
  1029.         );
  1030.         return array_values($purchaseInstructions);
  1031.     }
  1032.     public function getAllPurchaseInstructions()
  1033.     {
  1034.         return $this->purchaseInstructions;
  1035.     }
  1036.     public function getHighestPurchaseInstruction()
  1037.     {
  1038.         $pis $this->getValidPurchaseInstructions();
  1039.         if (!is_array($pis) || count($pis) <= 0) {
  1040.             return null;
  1041.         }
  1042.         return $pis[0];
  1043.     }
  1044.     public function getPurchaseInstructionAfterSale()
  1045.     {
  1046.         $purchaseInstructions array_filter(
  1047.             $this->purchaseInstructions->toArray(),
  1048.             fn ($pi) => PurchaseInstruction::ACCEPTED === $pi->getStatus() && $pi->getSale()->getId() == $this->getSale()->getId() && $this->auction->getClosedAt() < $pi->getUpdatedAt()
  1049.         );
  1050.         return array_values($purchaseInstructions);
  1051.     }
  1052.     public function getHighestPurchaseInstructionAfterSale()
  1053.     {
  1054.         $pis $this->getPurchaseInstructionAfterSale();
  1055.         if (!is_array($pis) || count($pis) <= 0) {
  1056.             return null;
  1057.         }
  1058.         return $pis[0];
  1059.     }
  1060.     public function setPurchaseInstructions(Collection $purchaseInstructions): void
  1061.     {
  1062.         $this->purchaseInstructions $purchaseInstructions;
  1063.     }
  1064.     public function setPhotos($photos): void
  1065.     {
  1066.         $this->photos $photos;
  1067.     }
  1068.     public function getPhotos()
  1069.     {
  1070.         return $this->photos;
  1071.     }
  1072.     public function getPublicPhotos()
  1073.     {
  1074.         return $this->photos[self::PHOTOS_PUBLIC] ?? null;
  1075.     }
  1076.     public function getExpertisePhotos()
  1077.     {
  1078.         return $this->photos[self::PHOTOS_EXPERTISE] ?? null;
  1079.     }
  1080.     public function addOption(Option $option): void
  1081.     {
  1082.         if (!$this->options->contains($option)) {
  1083.             $this->options[] = $option;
  1084.         }
  1085.     }
  1086.     public function getOptions()
  1087.     {
  1088.         return $this->options;
  1089.     }
  1090.     public function setOptions($options): void
  1091.     {
  1092.         $this->options $options;
  1093.     }
  1094.     public function clearOptions(): void
  1095.     {
  1096.         $this->options->clear();
  1097.     }
  1098.     public function clearPhotos(): void
  1099.     {
  1100.         $this->photos->clear();
  1101.     }
  1102.     public function getLot()
  1103.     {
  1104.         return $this->lot;
  1105.     }
  1106.     public function setLot($lot): void
  1107.     {
  1108.         $this->lot $lot;
  1109.     }
  1110.     public function getLotComplement()
  1111.     {
  1112.         return $this->lotComplement;
  1113.     }
  1114.     public function setLotComplement($lotComplement): void
  1115.     {
  1116.         $this->lotComplement $lotComplement;
  1117.     }
  1118.     public function isOrdered()
  1119.     {
  1120.         return (bool) $this->ordered;
  1121.     }
  1122.     public function setOrdered($ordered): void
  1123.     {
  1124.         $this->ordered $ordered;
  1125.     }
  1126.     public function getSalingState()
  1127.     {
  1128.         return $this->salingState;
  1129.     }
  1130.     public function setSalingState($state): void
  1131.     {
  1132.         $this->salingState $state;
  1133.     }
  1134.     public function getWinner()
  1135.     {
  1136.         return $this->winner;
  1137.     }
  1138.     public function setWinner($winner null): void
  1139.     {
  1140.         $this->winner $winner;
  1141.     }
  1142.     public function getClass()
  1143.     {
  1144.         return $this->class;
  1145.     }
  1146.     public function setClass($class): void
  1147.     {
  1148.         $this->class $class;
  1149.     }
  1150.     public function getMaker()
  1151.     {
  1152.         return $this->maker;
  1153.     }
  1154.     public function setMaker($maker): void
  1155.     {
  1156.         $this->maker $maker;
  1157.     }
  1158.     public function getMakerSlug()
  1159.     {
  1160.         return $this->makerSlug;
  1161.     }
  1162.     public function setMakerSlug($makerSlug): void
  1163.     {
  1164.         $this->makerSlug $makerSlug;
  1165.     }
  1166.     public function getModelGroup()
  1167.     {
  1168.         return $this->modelGroup;
  1169.     }
  1170.     public function setModelGroup($modelGroup): void
  1171.     {
  1172.         $this->modelGroup $modelGroup;
  1173.     }
  1174.     public function getModelGroupSlug()
  1175.     {
  1176.         return $this->modelGroupSlug;
  1177.     }
  1178.     public function setModelGroupSlug($modelGroupSlug): void
  1179.     {
  1180.         $this->modelGroupSlug $modelGroupSlug;
  1181.     }
  1182.     public function getSegment()
  1183.     {
  1184.         return $this->segment;
  1185.     }
  1186.     public function setSegment($segment): void
  1187.     {
  1188.         $this->segment $segment;
  1189.     }
  1190.     public function getSegmentSlug()
  1191.     {
  1192.         return $this->segmentSlug;
  1193.     }
  1194.     public function setSegmentSlug($segmentSlug): void
  1195.     {
  1196.         $this->segmentSlug $segmentSlug;
  1197.     }
  1198.     public function getSegmentSize()
  1199.     {
  1200.         return $this->segmentSize;
  1201.     }
  1202.     public function setSegmentSize($segmentSize): void
  1203.     {
  1204.         $this->segmentSize $segmentSize;
  1205.     }
  1206.     public function getSegmentSizeSlug()
  1207.     {
  1208.         return $this->segmentSizeSlug;
  1209.     }
  1210.     public function setSegmentSizeSlug($segmentSizeSlug): void
  1211.     {
  1212.         $this->segmentSizeSlug $segmentSizeSlug;
  1213.     }
  1214.     public function getSegmentBody()
  1215.     {
  1216.         return $this->segmentBody;
  1217.     }
  1218.     public function setSegmentBody($segmentBody): void
  1219.     {
  1220.         $this->segmentBody $segmentBody;
  1221.     }
  1222.     public function getSegmentTransmission()
  1223.     {
  1224.         return $this->segmentTransmission;
  1225.     }
  1226.     public function setSegmentTransmission(Transmission $segmentTransmission): void
  1227.     {
  1228.         $this->segmentTransmission $segmentTransmission;
  1229.     }
  1230.     public function getCategory()
  1231.     {
  1232.         return $this->category;
  1233.     }
  1234.     public function setCategory(Category $category): void
  1235.     {
  1236.         $this->category $category;
  1237.     }
  1238.     public function getModel()
  1239.     {
  1240.         return $this->model;
  1241.     }
  1242.     public function setModel($model): void
  1243.     {
  1244.         $this->model $model;
  1245.     }
  1246.     public function getTypeCode()
  1247.     {
  1248.         return $this->typeCode;
  1249.     }
  1250.     public function setTypeCode($typeCode): void
  1251.     {
  1252.         $this->typeCode $typeCode;
  1253.     }
  1254.     public function getMillesime()
  1255.     {
  1256.         return $this->millesime;
  1257.     }
  1258.     public function setMillesime($millesime): void
  1259.     {
  1260.         $this->millesime $millesime;
  1261.     }
  1262.     public function getRegistrationDate()
  1263.     {
  1264.         return $this->registrationDate;
  1265.     }
  1266.     public function setRegistrationdate($registrationDate): void
  1267.     {
  1268.         $this->registrationDate $registrationDate;
  1269.     }
  1270.     public function getKilometers()
  1271.     {
  1272.         return $this->kilometers;
  1273.     }
  1274.     public function setKilometers($kilometers): void
  1275.     {
  1276.         $this->kilometers $kilometers;
  1277.     }
  1278.     public function getTaxHorsepower()
  1279.     {
  1280.         return $this->taxHorsepower;
  1281.     }
  1282.     public function setTaxHorsepower($taxHorsepower): void
  1283.     {
  1284.         $this->taxHorsepower $taxHorsepower;
  1285.     }
  1286.     public function getEnergy()
  1287.     {
  1288.         return $this->energy;
  1289.     }
  1290.     public function setEnergy(Energy $energy): void
  1291.     {
  1292.         $this->energy $energy;
  1293.     }
  1294.     public function getBodyType()
  1295.     {
  1296.         return $this->bodyType;
  1297.     }
  1298.     public function setBodyType($bodyType): void
  1299.     {
  1300.         $this->bodyType $bodyType;
  1301.     }
  1302.     /**
  1303.      * @return Color
  1304.      */
  1305.     public function getColor()
  1306.     {
  1307.         return $this->color;
  1308.     }
  1309.     public function setColor(Color $color): void
  1310.     {
  1311.         $this->color $color;
  1312.     }
  1313.     public function getStateDetails()
  1314.     {
  1315.         return $this->stateDetails;
  1316.     }
  1317.     public function setStateDetails($stateDetails): void
  1318.     {
  1319.         $this->stateDetails $stateDetails;
  1320.     }
  1321.     public function getGuarantee()
  1322.     {
  1323.         return $this->guarantee;
  1324.     }
  1325.     public function setGuarantee($guarantee): void
  1326.     {
  1327.         $this->guarantee $guarantee;
  1328.     }
  1329.     public function isGuaranteed()
  1330.     {
  1331.         return (bool) $this->guaranteed;
  1332.     }
  1333.     public function setGuaranteed($guaranteed): void
  1334.     {
  1335.         $this->guaranteed $guaranteed;
  1336.     }
  1337.     public function getPremiumGuarantee()
  1338.     {
  1339.         return $this->premiumGuarantee;
  1340.     }
  1341.     public function setPremiumGuarantee($guarantee): void
  1342.     {
  1343.         $this->premiumGuarantee $guarantee;
  1344.     }
  1345.     public function hasPremiumGuarantee()
  1346.     {
  1347.         return (bool) $this->premiumGuarantee;
  1348.     }
  1349.     public function getPremiumGuaranteeDescription()
  1350.     {
  1351.         return $this->premiumGuaranteeDescription;
  1352.     }
  1353.     public function setPremiumGuaranteeDescription($description): void
  1354.     {
  1355.         $this->premiumGuaranteeDescription $description;
  1356.     }
  1357.     public function getStateRating()
  1358.     {
  1359.         return $this->stateRating;
  1360.     }
  1361.     public function setStateRating($stateRating): void
  1362.     {
  1363.         $this->stateRating $stateRating;
  1364.     }
  1365.     public function getAfnor()
  1366.     {
  1367.         return $this->afnor;
  1368.     }
  1369.     public function setAfnor($afnor): void
  1370.     {
  1371.         $this->afnor $afnor;
  1372.     }
  1373.     public function getEtincelleId()
  1374.     {
  1375.         return $this->etincelleId;
  1376.     }
  1377.     public function setEtincelleId($etincelleId): void
  1378.     {
  1379.         $this->etincelleId $etincelleId;
  1380.     }
  1381.     public function getIridiumId()
  1382.     {
  1383.         return $this->iridiumId;
  1384.     }
  1385.     public function setIridiumId($iridiumId): void
  1386.     {
  1387.         $this->iridiumId $iridiumId;
  1388.     }
  1389.     public function getVin()
  1390.     {
  1391.         return $this->vin;
  1392.     }
  1393.     public function setVin(string $vin): void
  1394.     {
  1395.         $this->vin $vin;
  1396.     }
  1397.     public function hasVat()
  1398.     {
  1399.         return (bool) $this->vat;
  1400.     }
  1401.     public function setVat($vat): void
  1402.     {
  1403.         $this->vat $vat;
  1404.     }
  1405.     public function getSeatCount()
  1406.     {
  1407.         return $this->seatCount;
  1408.     }
  1409.     public function setSeatCount($seatCount): void
  1410.     {
  1411.         $this->seatCount $seatCount;
  1412.     }
  1413.     public function getObservation()
  1414.     {
  1415.         return $this->observation;
  1416.     }
  1417.     public function getObservationItems()
  1418.     {
  1419.         $items explode('-', (string) $this->getObservation());
  1420.         if (== count($items) && '' == $items[0]) {
  1421.             return '';
  1422.         }
  1423.         foreach ($items as $k => $item) {
  1424.             if (empty($item)) {
  1425.                 unset($items[$k]);
  1426.             }
  1427.         }
  1428.         return '<li>'.implode('</li><li>'$items).'</li>';
  1429.     }
  1430.     public function setObservation($observation): void
  1431.     {
  1432.         $this->observation $observation;
  1433.     }
  1434.     public function setMotFileUrl($motFileUrl): void
  1435.     {
  1436.         $this->motFileUrl $motFileUrl;
  1437.     }
  1438.     public function getMotFileUrl()
  1439.     {
  1440.         return $this->motFileUrl;
  1441.     }
  1442.     public function hasMotFile()
  1443.     {
  1444.         return (bool) $this->motFileUrl;
  1445.     }
  1446.     public function getMaintenanceFileUrl()
  1447.     {
  1448.         return $this->maintenanceFileUrl;
  1449.     }
  1450.     public function setMaintenanceFileUrl($maintenanceFileUrl): void
  1451.     {
  1452.         $this->maintenanceFileUrl $maintenanceFileUrl;
  1453.     }
  1454.     public function hasMaintenanceFile()
  1455.     {
  1456.         return (bool) $this->maintenanceFileUrl;
  1457.     }
  1458.     public function getRoadTestFileUrl()
  1459.     {
  1460.         return $this->roadTestFileUrl;
  1461.     }
  1462.     public function setRoadTestFileUrl($roadTestFileUrl): void
  1463.     {
  1464.         $this->roadTestFileUrl $roadTestFileUrl;
  1465.     }
  1466.     public function hasRoadTestFile()
  1467.     {
  1468.         return (bool) $this->roadTestFileUrl;
  1469.     }
  1470.     public function getBilanExpertFileUrl()
  1471.     {
  1472.         return $this->bilanExpertFileUrl;
  1473.     }
  1474.     public function hasBilanExpertFile()
  1475.     {
  1476.         return (bool) $this->bilanExpertFileUrl;
  1477.     }
  1478.     public function setBilanExpertFileUrl($bilanExpertFileUrl): void
  1479.     {
  1480.         $this->bilanExpertFileUrl $bilanExpertFileUrl;
  1481.     }
  1482.     public function getPhoto3dExteriorUrl()
  1483.     {
  1484.         return $this->photo3dExteriorUrl;
  1485.     }
  1486.     public function setPhoto3dExteriorUrl($photo3dExteriorUrl): void
  1487.     {
  1488.         $this->photo3dExteriorUrl $photo3dExteriorUrl;
  1489.     }
  1490.     public function getPhoto3dExteriorExtraUrl()
  1491.     {
  1492.         return $this->photo3dExteriorExtraUrl;
  1493.     }
  1494.     public function setPhoto3dExteriorExtraUrl($photo3dExteriorExtraUrl): void
  1495.     {
  1496.         $this->photo3dExteriorExtraUrl $photo3dExteriorExtraUrl;
  1497.     }
  1498.     public function hasPhoto3d()
  1499.     {
  1500.         return (bool) $this->photo3dExteriorUrl;
  1501.     }
  1502.     public function getExplodedViewFileUrl()
  1503.     {
  1504.         return $this->explodedViewFileUrl;
  1505.     }
  1506.     public function setExplodedViewFileUrl($explodedViewFileUrl): void
  1507.     {
  1508.         $this->explodedViewFileUrl $explodedViewFileUrl;
  1509.     }
  1510.     public function hasExplodedViewFile()
  1511.     {
  1512.         return (bool) $this->explodedViewFileUrl;
  1513.     }
  1514.     public function getDekraUrl()
  1515.     {
  1516.         return $this->dekraUrl;
  1517.     }
  1518.     public function setDekraUrl($dekraUrl): void
  1519.     {
  1520.         $this->dekraUrl $dekraUrl;
  1521.     }
  1522.     public function hasInspectionReport()
  1523.     {
  1524.         return (bool) $this->inspectionReportUrl;
  1525.     }
  1526.     public function getInspectionReportUrl()
  1527.     {
  1528.         return $this->inspectionReportUrl;
  1529.     }
  1530.     public function setInspectionReportUrl($inspectionReportUrl): void
  1531.     {
  1532.         $this->inspectionReportUrl $inspectionReportUrl;
  1533.     }
  1534.     public function getArgusPrice()
  1535.     {
  1536.         return $this->argusPrice;
  1537.     }
  1538.     public function setArgusPrice($argusPrice): void
  1539.     {
  1540.         $this->argusPrice $argusPrice;
  1541.     }
  1542.     public function getArgusTransactionPrice()
  1543.     {
  1544.         return $this->argusTransactionPrice;
  1545.     }
  1546.     public function setArgusTransactionPrice($argusTransactionPrice): void
  1547.     {
  1548.         $this->argusTransactionPrice $argusTransactionPrice;
  1549.     }
  1550.     public function getArgusAnnoncePrice()
  1551.     {
  1552.         return $this->argusAnnoncePrice;
  1553.     }
  1554.     public function setArgusAnnoncePrice($argusAnnoncePrice): void
  1555.     {
  1556.         $this->argusAnnoncePrice $argusAnnoncePrice;
  1557.     }
  1558.     public function getArgusDatedPrice()
  1559.     {
  1560.         return $this->argusDatedPrice;
  1561.     }
  1562.     public function setArgusDatedPrice($argusDatedPrice): void
  1563.     {
  1564.         $this->argusDatedPrice $argusDatedPrice;
  1565.     }
  1566.     public function getArgusKmPrice()
  1567.     {
  1568.         return $this->argusKmPrice;
  1569.     }
  1570.     public function setArgusKmPrice($argusKmPrice): void
  1571.     {
  1572.         $this->argusKmPrice $argusKmPrice;
  1573.     }
  1574.     public function getSpotPrice()
  1575.     {
  1576.         return $this->spotPrice;
  1577.     }
  1578.     public function setSpotPrice($spotPrice): void
  1579.     {
  1580.         $this->spotPrice $spotPrice;
  1581.     }
  1582.     public function getDatedQuote()
  1583.     {
  1584.         return max($this->argusDatedPriceround($this->spotPrice 100) * 100);
  1585.     }
  1586.     public function getReconditioningPrice()
  1587.     {
  1588.         return $this->reconditioningPrice;
  1589.     }
  1590.     public function setReconditioningPrice($reconditioningPrice): void
  1591.     {
  1592.         $this->reconditioningPrice $reconditioningPrice;
  1593.     }
  1594.     public function getEstimationPrice()
  1595.     {
  1596.         return $this->estimationPrice;
  1597.     }
  1598.     public function setEstimationPrice($estimationPrice): void
  1599.     {
  1600.         $this->estimationPrice $estimationPrice;
  1601.     }
  1602.     public function getEstimationPriceMin()
  1603.     {
  1604.         return $this->estimationPriceMin;
  1605.     }
  1606.     public function setEstimationPriceMin($estimationPriceMin): void
  1607.     {
  1608.         $this->estimationPriceMin $estimationPriceMin;
  1609.     }
  1610.     public function getEstimationPriceHF()
  1611.     {
  1612.         return $this->estimationPriceHF;
  1613.     }
  1614.     public function setEstimationPriceHF($estimationPriceHF): void
  1615.     {
  1616.         $this->estimationPriceHF $estimationPriceHF;
  1617.     }
  1618.     public function getInitialReservePrice()
  1619.     {
  1620.         return $this->initialReservePrice;
  1621.     }
  1622.     public function setInitialReservePrice($initialReservePrice): void
  1623.     {
  1624.         $this->initialReservePrice $initialReservePrice;
  1625.     }
  1626.     public function getInitialReservePriceHF()
  1627.     {
  1628.         return $this->initialReservePriceHF;
  1629.     }
  1630.     public function setInitialReservePriceHF($initialReservePriceHF): void
  1631.     {
  1632.         $this->initialReservePriceHF $initialReservePriceHF;
  1633.     }
  1634.     public function getReservePrice()
  1635.     {
  1636.         return $this->reservePrice;
  1637.     }
  1638.     public function setReservePrice($reservePrice): void
  1639.     {
  1640.         $this->reservePrice $reservePrice;
  1641.     }
  1642.     public function getReservePriceHF()
  1643.     {
  1644.         return $this->reservePriceHF;
  1645.     }
  1646.     public function setReservePriceHF($reservePriceHF): void
  1647.     {
  1648.         $this->reservePriceHF $reservePriceHF;
  1649.     }
  1650.     public function getDeltaReservePrice()
  1651.     {
  1652.         return $this->deltaReservePrice;
  1653.     }
  1654.     public function setOldReservePrice($oldReservePrice): void
  1655.     {
  1656.         $this->oldReservePrice $oldReservePrice;
  1657.     }
  1658.     public function getOldReservePrice()
  1659.     {
  1660.         return $this->oldReservePrice;
  1661.     }
  1662.     public function getOldReservePriceHF()
  1663.     {
  1664.         return $this->oldReservePriceHF;
  1665.     }
  1666.     public function setOldReservePriceHF($oldReservePriceHF): void
  1667.     {
  1668.         $this->oldReservePriceHF $oldReservePriceHF;
  1669.     }
  1670.     public function setDeltaReservePrice($deltaReservePrice): void
  1671.     {
  1672.         $this->deltaReservePrice $deltaReservePrice;
  1673.     }
  1674.     public function getDeltaFees()
  1675.     {
  1676.         return $this->deltaFees;
  1677.     }
  1678.     public function setDeltaFees($deltaFees): void
  1679.     {
  1680.         $this->deltaFees $deltaFees;
  1681.     }
  1682.     public function getDeltaAdjustment()
  1683.     {
  1684.         return ($this->deltaFees $this->deltaReservePrice) * (-1);
  1685.     }
  1686.     public function getUnusedPrice()
  1687.     {
  1688.         return $this->unusedPrice;
  1689.     }
  1690.     public function setUnusedPrice($unusedPrice): void
  1691.     {
  1692.         $this->unusedPrice $unusedPrice;
  1693.     }
  1694.     public function getStartingPrice(): int
  1695.     {
  1696.         return intval($this->startingPrice);
  1697.     }
  1698.     public function setStartingPrice($startingPrice): void
  1699.     {
  1700.         $this->startingPrice $startingPrice;
  1701.     }
  1702.     public function getBuyoutPrice()
  1703.     {
  1704.         return $this->buyoutPrice;
  1705.     }
  1706.     public function setBuyoutPrice($buyoutPrice): void
  1707.     {
  1708.         $this->buyoutPrice $buyoutPrice;
  1709.     }
  1710.     public function getUnsoldPrice()
  1711.     {
  1712.         return $this->unsoldPrice;
  1713.     }
  1714.     public function setUnsoldPrice($unsoldPrice): void
  1715.     {
  1716.         $this->unsoldPrice $unsoldPrice;
  1717.     }
  1718.     public function getUnsoldOnlinePrice()
  1719.     {
  1720.         return $this->unsoldOnlinePrice;
  1721.     }
  1722.     public function setUnsoldOnlinePrice($unsoldOnlinePrice): void
  1723.     {
  1724.         $this->unsoldOnlinePrice $unsoldOnlinePrice;
  1725.     }
  1726.     public function getLastHammerPrice()
  1727.     {
  1728.         return $this->lastHammerPrice;
  1729.     }
  1730.     public function setLastHammerPrice($lastHammerPrice): void
  1731.     {
  1732.         $this->lastHammerPrice $lastHammerPrice;
  1733.     }
  1734.     public function getFinalAmount()
  1735.     {
  1736.         return $this->finalAmount;
  1737.     }
  1738.     public function setFinalAmount($finalAmount): void
  1739.     {
  1740.         $this->finalAmount $finalAmount;
  1741.     }
  1742.     public function getUnsoldCount()
  1743.     {
  1744.         return $this->unsoldCount;
  1745.     }
  1746.     public function setUnsoldCount($unsoldCount): void
  1747.     {
  1748.         $this->unsoldCount $unsoldCount;
  1749.     }
  1750.     public function getUnsoldOnlineCount()
  1751.     {
  1752.         return $this->unsoldOnlineCount;
  1753.     }
  1754.     public function setUnsoldOnlineCount($unsoldOnlineCount): void
  1755.     {
  1756.         $this->unsoldOnlineCount $unsoldOnlineCount;
  1757.     }
  1758.     public function isBroken()
  1759.     {
  1760.         return (bool) $this->broken;
  1761.     }
  1762.     public function setBroken($broken): void
  1763.     {
  1764.         $this->broken $broken;
  1765.     }
  1766.     public function hasDuplicateKeys()
  1767.     {
  1768.         return (bool) $this->duplicateKeys;
  1769.     }
  1770.     public function setDuplicateKeys($duplicateKeys): void
  1771.     {
  1772.         $this->duplicateKeys $duplicateKeys;
  1773.     }
  1774.     public function getCo2()
  1775.     {
  1776.         return $this->co2;
  1777.     }
  1778.     public function setCo2($co2): void
  1779.     {
  1780.         $this->co2 $co2;
  1781.     }
  1782.     public function getEuroEmissionStandard()
  1783.     {
  1784.         return $this->euroEmissionStandard;
  1785.     }
  1786.     public function setEuroEmissionStandard($euroEmissionStandard): void
  1787.     {
  1788.         $this->euroEmissionStandard $euroEmissionStandard;
  1789.     }
  1790.     public function getShortModel()
  1791.     {
  1792.         return $this->shortModel;
  1793.     }
  1794.     public function setShortModel($shortModel): void
  1795.     {
  1796.         $this->shortModel $shortModel;
  1797.     }
  1798.     public function getVersion()
  1799.     {
  1800.         return $this->version;
  1801.     }
  1802.     public function setVersion($version): void
  1803.     {
  1804.         $this->version $version;
  1805.     }
  1806.     public function getLength()
  1807.     {
  1808.         return $this->length;
  1809.     }
  1810.     public function setLength($length): void
  1811.     {
  1812.         $this->length $length;
  1813.     }
  1814.     public function getWidth()
  1815.     {
  1816.         return $this->width;
  1817.     }
  1818.     public function setWidth($width): void
  1819.     {
  1820.         $this->width $width;
  1821.     }
  1822.     public function getHeight()
  1823.     {
  1824.         return $this->height;
  1825.     }
  1826.     public function setHeight($height): void
  1827.     {
  1828.         $this->height $height;
  1829.     }
  1830.     public function setTarification($tarification): void
  1831.     {
  1832.         $this->tarification $tarification;
  1833.     }
  1834.     public function getTarification()
  1835.     {
  1836.         return $this->tarification;
  1837.     }
  1838.     public function getTarificationType()
  1839.     {
  1840.         return $this->tarificationType;
  1841.     }
  1842.     public function setTarificationType($tarificationType): void
  1843.     {
  1844.         $this->tarificationType $tarificationType;
  1845.     }
  1846.     public function getZipCodeLocation()
  1847.     {
  1848.         return $this->zipCodeLocation;
  1849.     }
  1850.     public function setZipCodeLocation($zipCodeLocation)
  1851.     {
  1852.         return $this->zipCodeLocation str_pad((string) $zipCodeLocation2'0'STR_PAD_LEFT);
  1853.     }
  1854.     public function getCityLocation()
  1855.     {
  1856.         return $this->cityLocation;
  1857.     }
  1858.     public function setCityLocation($cityLocation): void
  1859.     {
  1860.         $this->cityLocation $cityLocation;
  1861.     }
  1862.     public function getLocalization()
  1863.     {
  1864.         return $this->zipCodeLocation.((!empty($this->zipCodeLocation) && !empty($this->cityLocation)) ? ' - ' '').$this->cityLocation;
  1865.     }
  1866.     public function getLotOpen()
  1867.     {
  1868.         return $this->getSale()->getOpenedVehicle() === $this;
  1869.     }
  1870.     public function isLotOpen()
  1871.     {
  1872.         return $this->getLotOpen();
  1873.     }
  1874.     public function setLotOpen($open)
  1875.     {
  1876.         if ($open) {
  1877.             $this->getSale()->setOpenedVehicle($this);
  1878.         } else {
  1879.             $this->getSale()->setOpenedVehicle(null);
  1880.         }
  1881.         return $this;
  1882.     }
  1883.     public function isJustOpened()
  1884.     {
  1885.         return $this->justOpened;
  1886.     }
  1887.     public function setJustOpened($justOpened): void
  1888.     {
  1889.         $this->justOpened = (bool) $justOpened;
  1890.     }
  1891.     public function getNbViews()
  1892.     {
  1893.         return $this->nbViews;
  1894.     }
  1895.     public function setNbViews($nbViews): void
  1896.     {
  1897.         $this->nbViews $nbViews;
  1898.     }
  1899.     public function addOneToNbViews(): void
  1900.     {
  1901.         ++$this->nbViews;
  1902.     }
  1903.     public function isNoShipping()
  1904.     {
  1905.         return (bool) $this->noShipping;
  1906.     }
  1907.     public function setNoShipping($noShipping): void
  1908.     {
  1909.         $this->noShipping $noShipping;
  1910.     }
  1911.     public function getSalesperson()
  1912.     {
  1913.         return $this->salesperson;
  1914.     }
  1915.     public function setSalesperson($salesperson): void
  1916.     {
  1917.         $this->salesperson $salesperson;
  1918.     }
  1919.     public function getEtincelleCreatedAt()
  1920.     {
  1921.         return $this->etincelleCreatedAt;
  1922.     }
  1923.     public function setEtincelleCreatedAt($etincelleCreatedAt): void
  1924.     {
  1925.         $this->etincelleCreatedAt $etincelleCreatedAt;
  1926.     }
  1927.     public function getEtincelleSalingState($etincelleSalingState): void
  1928.     {
  1929.         $this->etincelleSalingState $etincelleSalingState;
  1930.     }
  1931.     public function setEtincelleSalingState($etincelleSalingState): void
  1932.     {
  1933.         $this->etincelleSalingState $etincelleSalingState;
  1934.     }
  1935.     public function getEtincelleSalingStateComplement($etincelleSalingStateComplement): void
  1936.     {
  1937.         $this->etincelleSalingStateComplement $etincelleSalingStateComplement;
  1938.     }
  1939.     public function setEtincelleSalingStateComplement($etincelleSalingStateComplement): void
  1940.     {
  1941.         $this->etincelleSalingStateComplement $etincelleSalingStateComplement;
  1942.     }
  1943.     public function isUrgent()
  1944.     {
  1945.         return (bool) $this->urgent;
  1946.     }
  1947.     public function setUrgent($urgent): void
  1948.     {
  1949.         $this->urgent $urgent;
  1950.     }
  1951.     public function getMandateDate()
  1952.     {
  1953.         return $this->mandateDate;
  1954.     }
  1955.     public function setMandateDate($mandateDate): void
  1956.     {
  1957.         $this->mandateDate $mandateDate;
  1958.     }
  1959.     public function getSoldDate()
  1960.     {
  1961.         return $this->soldDate;
  1962.     }
  1963.     public function setSoldDate($soldDate): void
  1964.     {
  1965.         $this->soldDate $soldDate;
  1966.     }
  1967.     public function getRegistrationPlate()
  1968.     {
  1969.         return $this->registrationPlate;
  1970.     }
  1971.     public function setRegistrationPlate($registrationPlate): void
  1972.     {
  1973.         $this->registrationPlate $registrationPlate;
  1974.     }
  1975.     public function isAdjustable()
  1976.     {
  1977.         return (bool) $this->adjustable;
  1978.     }
  1979.     public function setAdjustable($adjustable): void
  1980.     {
  1981.         $this->adjustable $adjustable;
  1982.     }
  1983.     public function getEmptyWeight()
  1984.     {
  1985.         return $this->emptyWeight;
  1986.     }
  1987.     public function setEmptyWeight($emptyWeight): void
  1988.     {
  1989.         $this->emptyWeight $emptyWeight;
  1990.     }
  1991.     public function getLiftingCapacity()
  1992.     {
  1993.         return $this->liftingCapacity;
  1994.     }
  1995.     public function setLiftingCapacity($liftingCapacity): void
  1996.     {
  1997.         $this->liftingCapacity $liftingCapacity;
  1998.     }
  1999.     public function getLiftingHeight()
  2000.     {
  2001.         return $this->liftingHeight;
  2002.     }
  2003.     public function setLiftingHeight($liftingHeight): void
  2004.     {
  2005.         $this->liftingHeight $liftingHeight;
  2006.     }
  2007.     public function getEngineActualHourCount()
  2008.     {
  2009.         return $this->engineActualHourCount;
  2010.     }
  2011.     public function setEngineActualHourCount($engineActualHourCount): void
  2012.     {
  2013.         $this->engineActualHourCount $engineActualHourCount;
  2014.     }
  2015.     public function getWheelBase()
  2016.     {
  2017.         return $this->wheelBase;
  2018.     }
  2019.     public function setWheelBase($wheelBase): void
  2020.     {
  2021.         $this->wheelBase $wheelBase;
  2022.     }
  2023.     public function getCylinderCount()
  2024.     {
  2025.         return $this->cylinderCount;
  2026.     }
  2027.     public function setCylinderCount($cylinderCount): void
  2028.     {
  2029.         $this->cylinderCount $cylinderCount;
  2030.     }
  2031.     public function getDoorCount()
  2032.     {
  2033.         return $this->doorCount;
  2034.     }
  2035.     public function setDoorCount($doorCount): void
  2036.     {
  2037.         $this->doorCount $doorCount;
  2038.     }
  2039.     public function getGearCount()
  2040.     {
  2041.         return $this->gearCount;
  2042.     }
  2043.     public function setGearCount($gearCount): void
  2044.     {
  2045.         $this->gearCount $gearCount;
  2046.     }
  2047.     public function getDriveWheel()
  2048.     {
  2049.         return $this->driveWheel;
  2050.     }
  2051.     public function setDriveWheel($driveWheel): void
  2052.     {
  2053.         $this->driveWheel $driveWheel;
  2054.     }
  2055.     public function getLoadWeight()
  2056.     {
  2057.         return $this->loadWeight;
  2058.     }
  2059.     public function setLoadWeight($loadWeight): void
  2060.     {
  2061.         $this->loadWeight $loadWeight;
  2062.     }
  2063.     public function getHorsePower()
  2064.     {
  2065.         return $this->horsePower;
  2066.     }
  2067.     public function setHorsePower($horsePower): void
  2068.     {
  2069.         $this->horsePower $horsePower;
  2070.     }
  2071.     public function getGearbox()
  2072.     {
  2073.         return $this->gearbox;
  2074.     }
  2075.     public function setGearbox($gearbox): void
  2076.     {
  2077.         $this->gearbox $gearbox;
  2078.     }
  2079.     public function getMaintenanceBookState()
  2080.     {
  2081.         return $this->maintenanceBookState;
  2082.     }
  2083.     public function setMaintenanceBookState($maintenanceBookState): void
  2084.     {
  2085.         $this->maintenanceBookState $maintenanceBookState;
  2086.     }
  2087.     public function getMaintenanceFileState()
  2088.     {
  2089.         return $this->maintenanceFileState;
  2090.     }
  2091.     public function setMaintenanceFileState($maintenanceFileState): void
  2092.     {
  2093.         $this->maintenanceFileState $maintenanceFileState;
  2094.     }
  2095.     public function hasMaintenanceFileState()
  2096.     {
  2097.         return (bool) $this->maintenanceFileState;
  2098.     }
  2099.     public function hasMakerGuarantee()
  2100.     {
  2101.         return (bool) $this->makerGuarantee;
  2102.     }
  2103.     public function getMakerGuarantee()
  2104.     {
  2105.         return $this->makerGuarantee;
  2106.     }
  2107.     public function setMakerGuarantee($makerGuarantee): void
  2108.     {
  2109.         $this->makerGuarantee $makerGuarantee;
  2110.     }
  2111.     public function getMakerGuaranteeExpiredAt()
  2112.     {
  2113.         return $this->makerGuaranteeExpiredAt;
  2114.     }
  2115.     public function setMakerGuaranteeExpiredAt($makerGuaranteeExpiredAt): void
  2116.     {
  2117.         $this->makerGuaranteeExpiredAt $makerGuaranteeExpiredAt;
  2118.     }
  2119.     public function getMakerGuaranteeKilometers()
  2120.     {
  2121.         return $this->makerGuaranteeKilometers;
  2122.     }
  2123.     public function setMakerGuaranteeKilometers($makerGuaranteeKilometers): void
  2124.     {
  2125.         $this->makerGuaranteeKilometers $makerGuaranteeKilometers;
  2126.     }
  2127.     public function getSegmentFirst()
  2128.     {
  2129.         return $this->segmentFirst;
  2130.     }
  2131.     public function setSegmentFirst($segmentFirst): void
  2132.     {
  2133.         $this->segmentFirst $segmentFirst;
  2134.     }
  2135.     public function isFirstHand()
  2136.     {
  2137.         return (bool) $this->firstHand;
  2138.     }
  2139.     public function setFirstHand($firstHand): void
  2140.     {
  2141.         $this->firstHand $firstHand;
  2142.     }
  2143.     public function getArgusOID()
  2144.     {
  2145.         return $this->argusOID;
  2146.     }
  2147.     public function setArgusOID($argusOID): void
  2148.     {
  2149.         $this->argusOID $argusOID;
  2150.     }
  2151.     public function getNatCode()
  2152.     {
  2153.         return $this->natCode;
  2154.     }
  2155.     public function setNatCode($natCode): void
  2156.     {
  2157.         $this->natCode $natCode;
  2158.     }
  2159.     public function isDamaged()
  2160.     {
  2161.         return (bool) $this->damaged;
  2162.     }
  2163.     public function setDamaged($damaged): void
  2164.     {
  2165.         $this->damaged $damaged;
  2166.     }
  2167.     public function getSellerObservation()
  2168.     {
  2169.         return $this->sellerObservation;
  2170.     }
  2171.     public function setSellerObservation($sellerObservation): void
  2172.     {
  2173.         $this->sellerObservation $sellerObservation;
  2174.     }
  2175.     public function isTrainingVehicle()
  2176.     {
  2177.         return (bool) $this->trainingVehicle;
  2178.     }
  2179.     public function setTrainingVehicle($trainingVehicle): void
  2180.     {
  2181.         $this->trainingVehicle $trainingVehicle;
  2182.     }
  2183.     public function isTaxi()
  2184.     {
  2185.         return (bool) $this->taxi;
  2186.     }
  2187.     public function setTaxi($taxi): void
  2188.     {
  2189.         $this->taxi $taxi;
  2190.     }
  2191.     public function isMechanicallyDamaged()
  2192.     {
  2193.         return (bool) $this->mechanicallyDamaged;
  2194.     }
  2195.     public function setMechanicallyDamaged($mechanicallyDamaged): void
  2196.     {
  2197.         $this->mechanicallyDamaged $mechanicallyDamaged;
  2198.     }
  2199.     public function getInnerStateRating()
  2200.     {
  2201.         return $this->innerStateRating;
  2202.     }
  2203.     public function setInnerStateRating($innerStateRating): void
  2204.     {
  2205.         $this->innerStateRating $innerStateRating;
  2206.     }
  2207.     public function getExpertiseRating()
  2208.     {
  2209.         return $this->expertiseRating;
  2210.     }
  2211.     public function setExpertiseRating($expertiseRating): void
  2212.     {
  2213.         $this->expertiseRating $expertiseRating;
  2214.     }
  2215.     public function isHighlight()
  2216.     {
  2217.         return (bool) $this->highlight;
  2218.     }
  2219.     public function setHighlight($highlight): void
  2220.     {
  2221.         $this->highlight $highlight;
  2222.     }
  2223.     public function isCatalog()
  2224.     {
  2225.         return (bool) $this->catalog;
  2226.     }
  2227.     public function setCatalog($catalog): void
  2228.     {
  2229.         $this->catalog $catalog;
  2230.     }
  2231.     public function isCatalogHighlight()
  2232.     {
  2233.         return (bool) $this->catalogHighlight;
  2234.     }
  2235.     public function setCatalogHighlight($catalogHighlight): void
  2236.     {
  2237.         $this->catalogHighlight $catalogHighlight;
  2238.     }
  2239.     public function isStar()
  2240.     {
  2241.         return (bool) $this->star;
  2242.     }
  2243.     public function setStar($star): void
  2244.     {
  2245.         $this->star $star;
  2246.     }
  2247.     public function isStarElectro()
  2248.     {
  2249.         return (bool) $this->starElectro;
  2250.     }
  2251.     public function setStarElectro($starElectro): void
  2252.     {
  2253.         $this->starElectro $starElectro;
  2254.     }
  2255.     public function setSeller(Seller $seller): void
  2256.     {
  2257.         $this->seller $seller;
  2258.     }
  2259.     public function getSeller()
  2260.     {
  2261.         return $this->seller;
  2262.     }
  2263.     public function isSentToSap()
  2264.     {
  2265.         return (bool) $this->sentToSap;
  2266.     }
  2267.     public function setSentToSap($sentToSap): void
  2268.     {
  2269.         $this->sentToSap $sentToSap;
  2270.     }
  2271.     public function getCritair()
  2272.     {
  2273.         return $this->critair;
  2274.     }
  2275.     public function setCritair($critair): void
  2276.     {
  2277.         $this->critair $critair;
  2278.     }
  2279.     public function addBehaviour(VehicleBehaviour $behaviour)
  2280.     {
  2281.         $this->behaviours[] = $behaviour;
  2282.         $behaviour->setVehicle($this);
  2283.         return $this;
  2284.     }
  2285.     public function removeBehaviour(VehicleBehaviour $behaviour): void
  2286.     {
  2287.         $this->behaviours->removeElement($behaviour);
  2288.     }
  2289.     public function getBehaviours()
  2290.     {
  2291.         return $this->behaviours;
  2292.     }
  2293.     public function getSellerCallback()
  2294.     {
  2295.         return $this->sellerCallback;
  2296.     }
  2297.     public function setSellerCallback($sellerCallback): void
  2298.     {
  2299.         $this->sellerCallback $sellerCallback;
  2300.     }
  2301.     public function getDeliveryRequest()
  2302.     {
  2303.         return (bool) $this->deliveryRequest;
  2304.     }
  2305.     public function setDeliveryRequest($deliveryRequest): void
  2306.     {
  2307.         $this->deliveryRequest $deliveryRequest;
  2308.     }
  2309.     public function getIdentificationType()
  2310.     {
  2311.         return $this->identificationType;
  2312.     }
  2313.     public function setIdentificationType($identificationType): void
  2314.     {
  2315.         $this->identificationType $identificationType;
  2316.     }
  2317.     public function getEtincelleReservePrice()
  2318.     {
  2319.         return $this->etincelleReservePrice;
  2320.     }
  2321.     public function setEtincelleReservePrice($etincelleReservePrice): void
  2322.     {
  2323.         $this->etincelleReservePrice $etincelleReservePrice;
  2324.     }
  2325.     public function getEtincelleReservePriceHF()
  2326.     {
  2327.         return $this->etincelleReservePriceHF;
  2328.     }
  2329.     public function setEtincelleReservePriceHF($etincelleReservePriceHF): void
  2330.     {
  2331.         $this->etincelleReservePriceHF $etincelleReservePriceHF;
  2332.     }
  2333.     public function getSellerEstimationPrice()
  2334.     {
  2335.         return $this->sellerEstimationPrice;
  2336.     }
  2337.     public function setSellerEstimationPrice($sellerEstimationPrice): void
  2338.     {
  2339.         $this->sellerEstimationPrice $sellerEstimationPrice;
  2340.     }
  2341.     public function getSellerEstimationPriceHF()
  2342.     {
  2343.         return $this->sellerEstimationPriceHF;
  2344.     }
  2345.     public function setSellerEstimationPriceHF($sellerEstimationPriceHF): void
  2346.     {
  2347.         $this->sellerEstimationPriceHF $sellerEstimationPriceHF;
  2348.     }
  2349.     public function getCocFileUrl()
  2350.     {
  2351.         return $this->cocFileUrl;
  2352.     }
  2353.     public function hasCocFile()
  2354.     {
  2355.         return (bool) $this->cocFileUrl;
  2356.     }
  2357.     public function setCocFileUrl($cocFileUrl): void
  2358.     {
  2359.         $this->cocFileUrl $cocFileUrl;
  2360.     }
  2361.     public function getCarpassFileUrl()
  2362.     {
  2363.         return $this->carpassFileUrl;
  2364.     }
  2365.     public function hasCarpassFile()
  2366.     {
  2367.         return (bool) $this->carpassFileUrl;
  2368.     }
  2369.     public function setCarpassFileUrl($carpassFileUrl): void
  2370.     {
  2371.         $this->carpassFileUrl $carpassFileUrl;
  2372.     }
  2373.     public function getFirstCountryRegistration()
  2374.     {
  2375.         return $this->firstCountryRegistration;
  2376.     }
  2377.     public function setFirstCountryRegistration($firstCountryRegistration): void
  2378.     {
  2379.         $this->firstCountryRegistration $firstCountryRegistration;
  2380.     }
  2381.     public function getCo2Standard()
  2382.     {
  2383.         return $this->co2Standard;
  2384.     }
  2385.     public function setCo2Standard($co2Standard): void
  2386.     {
  2387.         $this->co2Standard $co2Standard;
  2388.     }
  2389.     public function getValueOfOption($option)
  2390.     {
  2391.         if (!isset($this->$option)) {
  2392.             return null;
  2393.         }
  2394.         return $this->$option;
  2395.     }
  2396.     public function isSellableOnline()
  2397.     {
  2398.         return Sale::TYPE_ONLINE === $this->event->getSale()->getType();
  2399.     }
  2400.     public function getPICount()
  2401.     {
  2402.         return count($this->purchaseInstructions);
  2403.     }
  2404.     public function getBidCount()
  2405.     {
  2406.         return count($this->auction->getBids());
  2407.     }
  2408.     public function hasOffer()
  2409.     {
  2410.         if (Sale::TYPE_ONLINE === $this->getSale()->getType()) {
  2411.             return $this->getBidCount() > 0;
  2412.         }
  2413.         return $this->getPICount() > 0;
  2414.     }
  2415.     public function isReserveReached()
  2416.     {
  2417.         if (Sale::OPTION_GP === $this->getSale()->getPublic()) {
  2418.             return true;
  2419.         }
  2420.         if (Sale::TYPE_ONLINE === $this->getSale()->getType()) {
  2421.             return $this->finalAmount >= $this->getReservePrice();
  2422.         }
  2423.         $hp $this->getHighestPurchaseInstruction();
  2424.         if (null !== $hp) {
  2425.             return $hp->getAmount() >= $this->getReservePrice();
  2426.         }
  2427.         return false;
  2428.     }
  2429.     public function isBuyoutReached()
  2430.     {
  2431.         if (
  2432.             Sale::TYPE_ONLINE !== $this->getSale()->getType()
  2433.             || !in_array($this->getSale()->getSalingType(), [Sale::SALING_STATE_MIXEDSale::SALING_STATE_BUYOUT])
  2434.         ) {
  2435.             return false;
  2436.         }
  2437.         return $this->finalAmount >= $this->buyoutPrice;
  2438.     }
  2439.     public function isClosed()
  2440.     {
  2441.         return self::SALING_STATE_ADJUGE === $this->getSalingState() ? true false;
  2442.     }
  2443.     public function getSlug()
  2444.     {
  2445.         $str sprintf('%s %s'$this->maker$this->model);
  2446.         $a = ['À''Á''Â''Ã''Ä''Å''Æ''Ç''È''É''Ê''Ë''Ì''Í''Î''Ï''Ð''Ñ''Ò''Ó''Ô''Õ''Ö''Ø''Ù''Ú''Û''Ü''Ý''ß''à''á''â''ã''ä''å''æ''ç''è''é''ê''ë''ì''í''î''ï''ñ''ò''ó''ô''õ''ö''ø''ù''ú''û''ü''ý''ÿ''A''a''A''a''A''a''C''c''C''c''C''c''C''c''D''d''Ð''d''E''e''E''e''E''e''E''e''E''e''G''g''G''g''G''g''G''g''H''h''H''h''I''i''I''i''I''i''I''i''I''i''?''?''J''j''K''k''L''l''L''l''L''l''?''?''L''l''N''n''N''n''N''n''?''O''o''O''o''O''o''Œ''œ''R''r''R''r''R''r''S''s''S''s''S''s''Š''š''T''t''T''t''T''t''U''u''U''u''U''u''U''u''U''u''U''u''W''w''Y''y''Ÿ''Z''z''Z''z''Ž''ž''?''ƒ''O''o''U''u''A''a''I''i''O''o''U''u''U''u''U''u''U''u''U''u''?''?''?''?''?''?'];
  2447.         $b = ['A''A''A''A''A''A''AE''C''E''E''E''E''I''I''I''I''D''N''O''O''O''O''O''O''U''U''U''U''Y''s''a''a''a''a''a''a''ae''c''e''e''e''e''i''i''i''i''n''o''o''o''o''o''o''u''u''u''u''y''y''A''a''A''a''A''a''C''c''C''c''C''c''C''c''D''d''D''d''E''e''E''e''E''e''E''e''E''e''G''g''G''g''G''g''G''g''H''h''H''h''I''i''I''i''I''i''I''i''I''i''IJ''ij''J''j''K''k''L''l''L''l''L''l''L''l''l''l''N''n''N''n''N''n''n''O''o''O''o''O''o''OE''oe''R''r''R''r''R''r''S''s''S''s''S''s''S''s''T''t''T''t''T''t''U''u''U''u''U''u''U''u''U''u''U''u''W''w''Y''y''Y''Z''z''Z''z''Z''z''s''f''O''o''U''u''A''a''I''i''O''o''U''u''U''u''U''u''U''u''U''u''A''a''AE''ae''O''o'];
  2448.         $slug strtolower((string) preg_replace(['/[^a-zA-Z0-9 -]/''/[ -]+/''/^-|-$/'], ['''-'''], str_replace($a$b$str)));
  2449.         return $slug;
  2450.     }
  2451.     public function getReadableVehicleOptions($delimiter ' ')
  2452.     {
  2453.         $options = [];
  2454.         foreach ($this->getOptions() as $vehicleOption) {
  2455.             $options[] = $vehicleOption->getName();
  2456.         }
  2457.         return implode($delimiter$options);
  2458.     }
  2459.     public function isCurrentlyLive()
  2460.     {
  2461.         $now = new \DateTime();
  2462.         return $this->getSale()->isLiveCompatible() && $this->getSale()->getStartDate() <= $now && $this->getSale()->getEndDate() >= $now;
  2463.     }
  2464.     public function isStartingPriceAvailable()
  2465.     {
  2466.         if (Sale::TYPE_ONLINE === $this->getSale()->getType()) {
  2467.             return $this->startingPrice 0;
  2468.         }
  2469.         return $this->startingPrice && $this->estimationPrice 0;
  2470.     }
  2471.     public function getFinalAmountOrInitialStartingPrice()
  2472.     {
  2473.         return $this->finalAmount $this->finalAmount $this->startingPrice;
  2474.     }
  2475.     public function isPiAvailable()
  2476.     {
  2477.         return $this->isStartingPriceAvailable() && in_array($this->salingState, [self::SALING_STATE_NONEself::SALING_STATE_RETIRE]);
  2478.     }
  2479.     public function getBiddingEndDateTime()
  2480.     {
  2481.         if (Sale::TYPE_ONLINE === $this->getSale()->getType()) {
  2482.             return $this->auction->getClosedAt();
  2483.         }
  2484.         return $this->event->getStartDateTime();
  2485.     }
  2486.     public function getMaxAnimationAmount()
  2487.     {
  2488.         $bidIncrement $this->getSale()->getBidIncrement();
  2489.         if ($this->estimationPrice $this->reservePrice) {
  2490.             $animMax $this->estimationPrice + ($this->estimationPrice self::MAX_ANIMATION_PERCENT 100);
  2491.             return (int) (floor($animMax $bidIncrement) * $bidIncrement);
  2492.         }
  2493.         return $this->reservePrice $bidIncrement;
  2494.     }
  2495.     public function getMandateDayCount()
  2496.     {
  2497.         $startDart $this->mandateDate ?: $this->etincelleCreatedAt;
  2498.         $endDate $this->soldDate ?: $this->getSale()->getEndDate();
  2499.         $nbjm $startDart->diff($endDate);
  2500.         return $nbjm->format('%R%a');
  2501.     }
  2502.     public function notEligibleForPostSale(): bool
  2503.     {
  2504.         if (in_array(mb_strtoupper((string) $this->getSeller()->getName()), self::SELLER_NOT_ELIGIBLE_POST_SALE)) {
  2505.             return true;
  2506.         }
  2507.         return false;
  2508.     }
  2509.     /**
  2510.      * @return null
  2511.      */
  2512.     public function getDataHubUUID()
  2513.     {
  2514.         return $this->dataHubUUID;
  2515.     }
  2516.     /**
  2517.      * @param null $dataHubUUID
  2518.      */
  2519.     public function setDataHubUUID($dataHubUUID): void
  2520.     {
  2521.         $this->dataHubUUID $dataHubUUID;
  2522.     }
  2523.     public function getSapFile(): ?string
  2524.     {
  2525.         return $this->sapFile;
  2526.     }
  2527.     public function setSapFile(?string $sapFile): void
  2528.     {
  2529.         $this->sapFile $sapFile;
  2530.     }
  2531. }