<?phpnamespace DcSiteBundle\Entity;use Application\Sonata\MediaBundle\Entity\Media;use CoreBundle\Entity\Dealer;use DcSiteBundle\Entity\Service\VehicleAccessory;use Application\Sonata\MediaBundle\Entity\Gallery;use CoreBundle\Entity\AccessoriesReview;use Doctrine\Common\Collections\Collection;use Doctrine\Common\Collections\ArrayCollection;class Accessories{    /**     * @var integer     */    private $id;    /**     * @var string     */    private $name_ru;    /**     * @var string     */    private $name_ua;    /**     * @var string     */    private $onec_uid;    /**     * @var integer     */    private $avail_count;    /**     * @var float     */    private $price;    /**     * @var AccessoriesGroup     */    private $group;    /**     * @var Media     */    private $image;    /**     * @var boolean     */    private $recommended;    /**     * @var Collection     */    private $content;    /**     * @var string     */    private $url;    /**     * @var Collection     */    private $groups;    /**     * @var Collection     */    private $select_groups;    public function __toString()    {        return (string) $this->name_ru;    }    /**     * Accessories constructor.     */    public function __construct()    {        $this->content = new ArrayCollection();        $this->content->add((new AccessoriesContent())->setLanguage('ru'));        $this->content->add((new AccessoriesContent())->setLanguage('ua'));        $this->cars = new ArrayCollection();        $this->accessory_vehicles = new ArrayCollection();    }    /**     * Get id     *     * @return integer     */    public function getId()    {        return $this->id;    }    /**     * Set name     *     * @param string $name     *     * @return Accessories     */    public function setNameRu($name)    {        $this->name_ru = $name;        return $this;    }    /**     * Get name     *     * @return string     */    public function getNameRu()    {        return $this->name_ru;    }    /**     * Set name     *     * @param string $name     *     * @return Accessories     */    public function setNameUa($name)    {        $this->name_ua = $name;        return $this;    }    /**     * Get name     *     * @return string     */    public function getNameUa()    {        return $this->name_ua;    }    /**     * Set onecUid     *     * @param string $onecUid     *     * @return Accessories     */    public function setOnecUid($onecUid)    {        $this->onec_uid = $onecUid;        return $this;    }    /**     * Get onecUid     *     * @return string     */    public function getOnecUid()    {        return $this->onec_uid;    }    /**     * Set availCount     *     * @param integer $availCount     *     * @return Accessories     */    public function setAvailCount($availCount)    {        $this->avail_count = $availCount;        return $this;    }    /**     * Get availCount     *     * @return integer     */    public function getAvailCount()    {        return $this->avail_count;    }    /**     * Set price     *     * @param float $price     *     * @return Accessories     */    public function setPrice($price)    {        $this->price = $price;        return $this;    }    /**     * Get price     *     * @return float     */    public function getPrice()    {        return $this->price;    }    /**     * @param AccessoriesGroup $group     * @return $this     */    public function setGroup(AccessoriesGroup $group)    {        $this->group = $group;        return $this;    }    /**     * @return AccessoriesGroup     */    public function getGroup()    {        return $this->group;    }    /**     * @param Media $media     * @return $this     */    public function setImage(Media $media = null)    {        $this->image = $media;        return $this;    }    /**     * @return Media     */    public function getImage()    {        return $this->image;    }    /**     * @param bool $recommended     * @return $this     */    public function setRecommended($recommended = false)    {        $this->recommended = $recommended;        return $this;    }    /**     * @return bool     */    public function getRecommended()    {        return $this->recommended;    }    /**     * @param $locale     * @return string     */    public function getNameByLocale($locale)    {        switch ($locale) {            case 'ru':                return $this->name_ru;            case 'ua':            default:                return $this->name_ua;        }    }    /**     * @var string     */    private $catalog_number;    /**     * Set catalogNumber     *     * @param string $catalogNumber     *     * @return Accessories     */    public function setCatalogNumber($catalogNumber)    {        $this->catalog_number = $catalogNumber;        return $this;    }    /**     * Get catalogNumber     *     * @return string     */    public function getCatalogNumber()    {        return $this->catalog_number;    }    /**     * @var float     */    private $priceUsd;    /**     * Set priceUsd     *     * @param float $priceUsd     *     * @return Accessories     */    public function setPriceUsd($priceUsd)    {        $this->priceUsd = $priceUsd;        return $this;    }    /**     * Get priceUsd     *     * @return float     */    public function getPriceUsd()    {        return $this->priceUsd;    }    /**     * @param $rate     * @return false|float     */    public function calcPrice($rate = null)    {        if(!$rate) {            $rate = $this->getDealer()->getRate();        }        if($rate && $this->getPriceUsd()) {            return ceil($rate * $this->getPriceUsd());        }        return $this->getPrice();    }    /**     * @var Dealer     */    private $dealer;    /**     * Set dealer     *     * @param Dealer $dealer     *     * @return Accessories     */    public function setDealer(Dealer $dealer = null)    {        $this->dealer = $dealer;        return $this;    }    /**     * Get dealer     *     * @return Dealer     */    public function getDealer()    {        return $this->dealer;    }    /**     * @var string     */    private $content_ru;    /**     * @var string     */    private $content_ua;    /**     * Set contentRu     *     * @param string $contentRu     *     * @return Accessories     */    public function setContentRu($contentRu)    {        $this->content_ru = $contentRu;        return $this;    }    /**     * Get contentRu     *     * @return string     */    public function getContentRu()    {        return $this->content_ru;    }    /**     * Set contentUa     *     * @param string $contentUa     *     * @return Accessories     */    public function setContentUa($contentUa)    {        $this->content_ua = $contentUa;        return $this;    }    /**     * Get contentUa     *     * @return string     */    public function getContentUa()    {        return $this->content_ua;    }    /**     * @var integer     */    private $position;    /**     * Set position     *     * @param integer $position     *     * @return Accessories     */    public function setPosition($position)    {        $this->position = $position;        return $this;    }    /**     * Get position     *     * @return integer     */    public function getPosition()    {        return $this->position;    }    /**     * @var Collection     */    private $accessory_vehicles;    /**     * Add accessoryVehicle     *     * @param VehicleAccessory $accessoryVehicle     *     * @return Accessories     */    public function addAccessoryVehicle(VehicleAccessory $accessoryVehicle)    {        $this->accessory_vehicles[] = $accessoryVehicle;        return $this;    }    /**     * Remove accessoryVehicle     *     * @param VehicleAccessory $accessoryVehicle     */    public function removeAccessoryVehicle(VehicleAccessory $accessoryVehicle)    {        $this->accessory_vehicles->removeElement($accessoryVehicle);    }    /**     * Get accessoryVehicles     *     * @return Collection     */    public function getAccessoryVehicles()    {        return $this->accessory_vehicles;    }    /**     * @var integer     */    private $state;    /**     * Set state     *     * @param integer $state     *     * @return Accessories     */    public function setState($state)    {        $this->state = $state;        return $this;    }    /**     * Get state     *     * @return integer     */    public function getState()    {        return $this->state > 0;    }    /**     * Add content     *     * @param AccessoriesContent $content     *     * @return Accessories     */    public function addContent(AccessoriesContent $content)    {        $this->content[] = $content;        return $this;    }    /**     * Remove content     *     * @param AccessoriesContent $content     */    public function removeContent(AccessoriesContent $content)    {        $this->content->removeElement($content);    }    /**     * Get content     *     * @return Collection     */    public function getContent()    {        return $this->content;    }    /**     * Set url     *     * @param string $url     *     * @return Accessories     */    public function setUrl($url)    {        $this->url = $url;        return $this;    }    /**     * Get url     *     * @return string     */    public function getUrl()    {        return $this->url;    }    /**     * Add group     *     * @param AccessoriesGroup $group     *     * @return Accessories     */    public function addGroup(AccessoriesGroup $group)    {        $this->groups[] = $group;        return $this;    }    /**     * Remove group     *     * @param AccessoriesGroup $group     */    public function removeGroup(AccessoriesGroup $group)    {        $this->groups->removeElement($group);    }    /**     * Get groups     *     * @return Collection     */    public function getGroups()    {        return $this->groups;    }    /**     * Add selectGroup     *     * @param AccessoriesGroup $selectGroup     *     * @return Accessories     */    public function addSelectGroup(AccessoriesGroup $selectGroup)    {        $this->select_groups[] = $selectGroup;        return $this;    }    /**     * Remove selectGroup     *     * @param AccessoriesGroup $selectGroup     */    public function removeSelectGroup(AccessoriesGroup $selectGroup)    {        $this->select_groups->removeElement($selectGroup);    }    /**     * Get selectGroups     *     * @return Collection     */    public function getSelectGroups()    {        return $this->select_groups;    }    /**     * @var Gallery     */    private $gallery;    /**     * Set gallery     *     * @param Gallery $gallery     *     * @return Accessories     */    public function setGallery(Gallery $gallery = null)    {        $this->gallery = $gallery;        return $this;    }    /**     * Get gallery     *     * @return Gallery     */    public function getGallery()    {        return $this->gallery;    }    /**     * @var Part     */    private $accessory_number;    /**     * Set accessoryNumber     *     * @param Part $accessoryNumber     *     * @return Accessories     */    public function setAccessoryNumber(Part $accessoryNumber = null)    {        $this->accessory_number = $accessoryNumber;        return $this;    }    /**     * Get accessoryNumber     *     * @return Part     */    public function getAccessoryNumber()    {        return $this->accessory_number;    }    /**     * @var Collection     */    private $select_categories;    /**     * Add selectCategory     *     * @param AccessoriesCategory $selectCategory     *     * @return Accessories     */    public function addSelectCategory(AccessoriesCategory $selectCategory)    {        $this->select_categories[] = $selectCategory;        return $this;    }    /**     * Remove selectCategory     *     * @param AccessoriesCategory $selectCategory     */    public function removeSelectCategory(AccessoriesCategory $selectCategory)    {        $this->select_categories->removeElement($selectCategory);    }    /**     * Get selectCategories     *     * @return Collection     */    public function getSelectCategories()    {        return $this->select_categories;    }    /**     * @var float     */    private $sale_price;    /**     * Set salePrice     *     * @param float $salePrice     *     * @return Accessories     */    public function setSalePrice($salePrice)    {        $this->sale_price = $salePrice;        return $this;    }    /**     * Get salePrice     *     * @return float     */    public function getSalePrice()    {        return $this->sale_price;    }    public function getTitle()    {        return $this->content->first() ? (string) $this->content->first()->getTitle() : '';    }    public function getContentByLocale($locale = null)    {        /** @var AccessoriesContent $content */        foreach ($this->content as $content) {            if($content->getLanguage() == $locale) {                return $content;            }        }        return $this->content->first();    }    /**     * @var Collection     */    private $review;    /**     * Add review     *     * @param AccessoriesReview $review     *     * @return Accessories     */    public function addReview(AccessoriesReview $review)    {        $this->review[] = $review;        return $this;    }    /**     * Remove review     *     * @param AccessoriesReview $review     */    public function removeReview(AccessoriesReview $review)    {        $this->review->removeElement($review);    }    /**     * Get review     *     * @return Collection     */    public function getReview()    {        return $this->review;    }}