<?php
namespace App\Daikin\BaseBundle\Entity;
use App\Daikin\BaseBundle\Entity\EmergencyStock\PartConstructionYear;
use App\Daikin\BaseBundle\Entity\EmergencyStock\PartModelDetail;
use App\Daikin\BaseBundle\Entity\EmergencyStock\PartWarehouse;
use App\Daikin\BaseBundle\Entity\EmergencyStock\Warehouse;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* Class SparePartsPart
* @package App\Daikin\BaseBundle\Entity
*
* @ORM\Entity(repositoryClass="App\Daikin\BaseBundle\Repository\SparePartsPartRepository")
* @ORM\Table(name="SparePartsPart")
*/
class SparePartsPart extends AbstractLivingEntity
{
const CATEGORIES = [
1 => 'Druckschalter / Sensoren / Fühler',
2 => 'Verdichter / Lüfter',
3 => 'Ventile / Spulen',
4 => 'Platinen / Elektronik',
5 => 'Wärmetauscher',
6 => 'Komplettgerät',
7 => 'Sonstige',
];
/**
* @var string
*
* @ORM\Column(name="constructionYear", type="string", nullable=true)
*/
private $constructionYear;
/**
* @var integer
*
* @ORM\Column(type="smallint")
*/
private $stock;
/**
* @var string
*
* @ORM\Column(name="repearInfo", type="string", nullable=true)
*/
private $repearInfo;
/**
* @var string
*
* @ORM\Column(type="smallint")
*/
private $category;
/**
* @var string
*
* @ORM\Column(type="string", nullable=true)
*/
private $description;
/**
* @var string
*
* @ORM\Column(name="pcomment", type="string", nullable=true)
*/
private $comment;
/**
* @var string
*
* @ORM\Column(type="string")
*/
private $name;
/**
* @var SparePartsNumber[]
*
* @ORM\OneToMany(targetEntity="App\Daikin\BaseBundle\Entity\SparePartsNumber", mappedBy="sparePart", cascade={"persist", "remove"}, orphanRemoval=true)
*/
private $partNumbers;
/**
* @var PartWarehouse[]
*
* @ORM\OneToMany(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\PartWarehouse", mappedBy="sparePartsPart", cascade={"persist", "remove"}, orphanRemoval=true)
*/
private $partsWarehouses;
/**
* @var PartModelDetail[]
*
* @ORM\OneToMany(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\PartModelDetail", mappedBy="sparePartsPart", cascade={"persist", "remove"}, orphanRemoval=true)
*/
private $partModelDetails;
/**
* @var PartConstructionYear[]
*
* @ORM\OneToMany(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\PartConstructionYear", mappedBy="sparePartsPart", cascade={"persist", "remove"}, orphanRemoval=true)
*/
private $partConstructionYears;
/**
* @var SparePartsNumber
*
* @ORM\OneToOne(targetEntity="App\Daikin\BaseBundle\Entity\SparePartsNumber")
* @ORM\JoinColumn(name="mainPartNumber_id")
*/
private $mainPartNumber;
/**
* SparePartsPart constructor.
*/
public function __construct()
{
parent::__construct();
$this->partNumbers = new ArrayCollection();
$this->partsWarehouses = new ArrayCollection();
$this->partModelDetails = new ArrayCollection();
$this->partConstructionYears = new ArrayCollection();
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return string
*/
public function getConstructionYear()
{
return $this->constructionYear;
}
/**
* @param string $constructionYear
*/
public function setConstructionYear($constructionYear)
{
$this->constructionYear = $constructionYear;
}
/**
* @return int
*/
public function getStock()
{
return $this->stock;
}
/**
* @param int $stock
*/
public function setStock($stock)
{
$this->stock = $stock;
}
/**
* @return string
*/
public function getRepearInfo()
{
return $this->repearInfo;
}
/**
* @param string $repearInfo
*/
public function setRepearInfo($repearInfo)
{
$this->repearInfo = $repearInfo;
}
/**
* @return string
*/
public function getCategory()
{
return $this->category;
}
/**
* @param string $category
*/
public function setCategory($category)
{
$this->category = $category;
}
/**
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* @param string $description
*/
public function setDescription($description)
{
$this->description = $description;
}
/**
* @return string
*/
public function getComment()
{
return $this->comment;
}
/**
* @param string $comment
*/
public function setComment($comment)
{
$this->comment = $comment;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return SparePartsNumber[]|ArrayCollection
*/
public function getPartNumbers()
{
return $this->partNumbers;
}
/**
* @param SparePartsNumber[] $partNumbers
*/
public function setPartNumbers($partNumbers)
{
$this->partNumbers = $partNumbers;
}
public function addPartNumber(SparePartsNumber $partsNumber)
{
$partsNumber->setSparePartsPart($this);
$this->partNumbers->add($partsNumber);
}
public function removePartNumber(SparePartsNumber $partsNumber)
{
$this->partNumbers->removeElement($partsNumber);
}
/**
* @return string
*/
public function getHtmlId()
{
return 'sp-part-'.$this->id;
}
/**
* @return PartWarehouse[]|ArrayCollection
*/
public function getPartsWithActiveForDeliveryWarehouses()
{
$filtered = $this->partsWarehouses->filter(function (PartWarehouse $partWarehouse) {
return $partWarehouse->getWarehouse()->isActiveForShipping();
});
return $filtered;
}
/**
* @return PartWarehouse[]|ArrayCollection
*/
public function getPartsWarehouses()
{
return $this->partsWarehouses;
}
/**
* @param PartWarehouse[] $partsWarehouses
* @return SparePartsPart
*/
public function setPartsWarehouses($partsWarehouses)
{
$this->partsWarehouses = $partsWarehouses;
}
public function addPartsWarehous(PartWarehouse $partWarehouse)
{
$partWarehouse->setSparePartsPart($this);
$this->partsWarehouses->add($partWarehouse);
}
public function removePartsWarehous(PartWarehouse $partWarehouse)
{
$this->partsWarehouses->removeElement($partWarehouse);
}
/**
* @return SparePartsNumber
*/
public function getMainPartNumber()
{
return $this->mainPartNumber;
}
public function setMainPartNumber(?SparePartsNumber $mainPartNumber)
{
$this->mainPartNumber = $mainPartNumber;
}
/**
* @param Warehouse $warehouse
* @return string
*/
public function getPartStoragePlaceForWarehouse(Warehouse $warehouse)
{
foreach ($this->getPartsWarehouses() as $partWarehouse){
if ($partWarehouse->getWarehouse() === $warehouse){
return $partWarehouse->getStoragePlace();
}
}
/* FIXME maybe return unknown? */
return '';
}
/**
* @return PartModelDetail[]
*/
public function getPartModelDetails()
{
return $this->partModelDetails;
}
/**
* @param PartModelDetail[] $partModelDetails
* @return SparePartsPart
*/
public function setPartModelDetails($partModelDetails)
{
$this->partModelDetails = $partModelDetails;
return $this;
}
public function addPartModelDetail(PartModelDetail $partModelDetail)
{
$partModelDetail->setSparePartsPart($this);
$this->partModelDetails->add($partModelDetail);
}
public function removePartModelDetail(PartModelDetail $partModelDetail)
{
$this->partModelDetails->removeElement($partModelDetail);
}
/**
* @return PartConstructionYear[]
*/
public function getPartConstructionYears()
{
return $this->partConstructionYears;
}
/**
* @param PartConstructionYear[] $partConstructionYears
* @return SparePartsPart
*/
public function setPartConstructionYears($partConstructionYears)
{
$this->partConstructionYears = $partConstructionYears;
return $this;
}
/**
* @param PartConstructionYear $partConstructionYear
*/
public function addPartConstructionYear(PartConstructionYear $partConstructionYear)
{
$partConstructionYear->setSparePartsPart($this);
$this->partConstructionYears->add($partConstructionYear);
}
public function removePartConstructionYear(PartConstructionYear $partConstructionYear)
{
$this->partConstructionYears->removeElement($partConstructionYear);
}
public function getFoundConstructionYear()
{
if ($this->getPartConstructionYears()->count()){
return $this->getPartConstructionYears()->first();
}
return null;
}
}