<?phpnamespace CoreBundle\Entity\Vehicles;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;/** * Equipment */class Equipment{ //TODO need some documentation const SORT_PRICE = 99999999999999999; /** * @var integer */ private $id; /** * @var integer */ private $temp_id; /** * @var string */ private $title; /** * @var integer */ private $state; /** * @var integer */ private $position = 0; /** * @var Collection */ private $options; /** * @var Vehicle */ private $vehicle; /** * Constructor */ public function __construct() { $this->options = new ArrayCollection(); } /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set tempId * * @param integer $tempId * * @return Equipment */ public function setTempId($tempId) { $this->temp_id = $tempId; return $this; } /** * Get tempId * * @return integer */ public function getTempId() { return $this->temp_id; } /** * Set title * * @param string $title * * @return Equipment */ public function setTitle($title) { $this->title = $title; return $this; } /** * Get title * * @return string */ public function getTitle() { return $this->title; } /** * Set state * * @param integer $state * * @return Equipment */ public function setState($state) { $this->state = $state; return $this; } /** * Get state * * @return integer */ public function getState() { return $this->state > 0; } /** * Set position * * @param integer $position * * @return Equipment */ public function setPosition($position) { $this->position = $position; return $this; } /** * Get position * * @return integer */ public function getPosition() { return $this->position; } /** * Add option * * @param EquipmentOptions $option * * @return Equipment */ public function addOption(EquipmentOptions $option) { $this->options[] = $option; return $this; } /** * Remove option * * @param EquipmentOptions $option */ public function removeOption(EquipmentOptions $option) { $this->options->removeElement($option); } /** * Get options * * @return Collection */ public function getOptions() { return $this->options; } /** * Set vehicle * * @param Vehicle $vehicle * * @return Equipment */ public function setVehicle(Vehicle $vehicle = null) { $this->vehicle = $vehicle; return $this; } /** * Get vehicle * * @return Vehicle */ public function getVehicle() { return $this->vehicle; } /** * @var Collection */ private $vehicle_items; /** * Add vehicleItem * * @param VehicleItem $vehicleItem * * @return Equipment */ public function addVehicleItem(VehicleItem $vehicleItem) { $this->vehicle_items[] = $vehicleItem; return $this; } public function getAdminName() { $state = $this->getState() ? '' : ' (отключена)'; return $this->getTitle().$state; } /** * Remove vehicleItem * * @param VehicleItem $vehicleItem */ public function removeVehicleItem(VehicleItem $vehicleItem) { $this->vehicle_items->removeElement($vehicleItem); } /** * Get vehicleItems * * @return Collection */ public function getVehicleItems() { return $this->vehicle_items; } public function __toString() { return (string) $this->title; } public function minPrice() { $minItem = $this->getMinVehicleItem(); if ($minItem) { return $minItem->calcPrice(); } return 0; } public function minFullPrice() { $minItem = $this->getMinVehicleItem(); if(!$minItem) { return 0; } return $minItem->fullPrice(); } public function minPreOrderPrice() { $minItem = $this->getMinVehicleItem(); if(!$minItem) { return 0; } return $minItem->getPreorderPrice(); } /** * @return bool|VehicleItem|mixed */ public function getMinVehicleItem() { $item = false; /** @var VehicleItem $vehicleItem */ foreach ($this->getVehicleItems() as $vehicleItem) { if(!$vehicleItem->getState()) { continue; } if(!$vehicleItem->getEquipment()->getState()) { continue; } if($vehicleItem->calcPrice() == 0) { continue; } if(!$item || $vehicleItem->calcPrice() < $item->calcPrice()) { $item = $vehicleItem; } } return $item; } public function maxPrice() { $minItem = $this->getMaxVehicleItem(); return $minItem ? $minItem->calcPrice() : 0; } /** * @return bool|VehicleItem|mixed */ public function getMaxVehicleItem() { $item = false; /** @var VehicleItem $vehicleItem */ foreach ($this->getVehicleItems() as $vehicleItem) { if(!$vehicleItem->getState()) { continue; } if($vehicleItem->calcPrice() == 0) { continue; } if(!$item || $vehicleItem->calcPrice() > $item->calcPrice()) { $item = $vehicleItem; } } return $item; }}