src/Daikin/BaseBundle/Entity/EmergencyStock/Order.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Daikin\BaseBundle\Entity\EmergencyStock;
  3. use App\Daikin\BaseBundle\Entity\SparePartsPart;
  4. use App\Daikin\BaseBundle\Entity\User;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. /**
  8.  * Class SparePartsOrder
  9.  * @package App\Daikin\BaseBundle\Entity
  10.  *
  11.  * @ORM\Entity(repositoryClass="App\Daikin\BaseBundle\Entity\EmergencyStock\OrderRepository")
  12.  * @ORM\Table(name="spare_order", indexes={@ORM\Index(name="search_open_idx", columns={"orderStatus", "lastAccess"})})
  13.  */
  14. class Order
  15. {
  16.     const PRETTY_ID_PREFIX 'DAN';
  17.     const STATUS_ORDERING 'ordering';
  18.     const STATUS_CREATED 'created';
  19.     /**
  20.      * @var integer
  21.      *
  22.      * @ORM\Id()
  23.      * @ORM\Column(type="integer")
  24.      * @ORM\GeneratedValue(strategy="AUTO")
  25.      */
  26.     private $id;
  27.     /**
  28.      * @var \DateTime
  29.      *
  30.      * @ORM\Column(type="datetime")
  31.      */
  32.     private $created;
  33.     /**
  34.      * @var DeliveryAddress
  35.      *
  36.      * @ORM\ManyToOne(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\DeliveryAddress", cascade={"remove"})
  37.      * @ORM\JoinColumn(name="deliveryAddress_id")
  38.      */
  39.     private $deliveryAddress;
  40.     /**
  41.      * @var OrderItem[]
  42.      *
  43.      * @ORM\OneToMany(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\OrderItem", mappedBy="order")
  44.      */
  45.     private $orderItems;
  46.     /**
  47.      * @var string
  48.      *
  49.      * @ORM\Column(name="orderStatus", type="string")
  50.      */
  51.     private $orderStatus;
  52.     /**
  53.      * @var User
  54.      *
  55.      * @ORM\ManyToOne(targetEntity="App\Daikin\BaseBundle\Entity\User", inversedBy="orders")
  56.      * @ORM\JoinColumn()
  57.      */
  58.     private $customer;
  59.     /**
  60.      * @var \DateTime
  61.      *
  62.      * @ORM\Column(name="lastAccess", type="datetime")
  63.      */
  64.     private $lastAccess;
  65.     /**
  66.      * @var \DateTime
  67.      *
  68.      * @ORM\Column(name="desiredDeliveryDateTime", type="datetime", nullable=true)
  69.      */
  70.     private $desiredDeliveryDateTime;
  71.     /**
  72.      * Order constructor.
  73.      */
  74.     public function __construct()
  75.     {
  76.         $this->created = new \DateTime();
  77.         $this->lastAccess = new \DateTime();
  78.         $this->orderStatus self::STATUS_ORDERING;
  79.     }
  80.     /**
  81.      * @return int
  82.      */
  83.     public function getId()
  84.     {
  85.         return $this->id;
  86.     }
  87.     /**
  88.      * @param int $id
  89.      */
  90.     public function setId($id)
  91.     {
  92.         $this->id $id;
  93.     }
  94.     /**
  95.      * @return \DateTime
  96.      */
  97.     public function getCreated()
  98.     {
  99.         return $this->created;
  100.     }
  101.     /**
  102.      * @param \DateTime $created
  103.      */
  104.     public function setCreated($created)
  105.     {
  106.         $this->created $created;
  107.     }
  108.     /**
  109.      * @return DeliveryAddress
  110.      */
  111.     public function getDeliveryAddress()
  112.     {
  113.         return $this->deliveryAddress;
  114.     }
  115.     /**
  116.      * @param DeliveryAddress $deliveryAddress
  117.      * @return Order
  118.      */
  119.     public function setDeliveryAddress(DeliveryAddress $deliveryAddress)
  120.     {
  121.         $this->deliveryAddress $deliveryAddress;
  122.         return $this;
  123.     }
  124.     /**
  125.      * @return User
  126.      */
  127.     public function getCustomer()
  128.     {
  129.         return $this->customer;
  130.     }
  131.     /**
  132.      * @param User $customer
  133.      * @return Order
  134.      */
  135.     public function setCustomer($customer)
  136.     {
  137.         $this->customer $customer;
  138.         return $this;
  139.     }
  140.     /**
  141.      * @return OrderItem[]|ArrayCollection
  142.      */
  143.     public function getOrderItems()
  144.     {
  145.         return $this->orderItems;
  146.     }
  147.     /**
  148.      * @param OrderItem[] $orderItems
  149.      */
  150.     public function setOrderItems($orderItems)
  151.     {
  152.         $this->orderItems $orderItems;
  153.     }
  154.     /**
  155.      * @param $orderItemId
  156.      * @return OrderItem|mixed|null
  157.      */
  158.     public function getOrderItemById($orderItemId)
  159.     {
  160.         foreach ($this->getOrderItems() as $orderItem){
  161.             if ((int)$orderItem->getId() === (int)$orderItemId){
  162.                 return $orderItem;
  163.             }
  164.         }
  165.         return null;
  166.     }
  167.     /**
  168.      * @return SparePartsPart[]|ArrayCollection
  169.      */
  170.     public function getOrderItemsParts()
  171.     {
  172.         $parts = [];
  173.         foreach ($this->getOrderItems() as $orderItem) {
  174.             foreach ($orderItem->getParts() as $part) {
  175.                 $parts[] = $part;
  176.             }
  177.         }
  178.         return $parts;
  179.     }
  180.     /**
  181.      * @return int[]
  182.      */
  183.     public function getOrderItemsPrettyIds()
  184.     {
  185.         $res = [];
  186.         foreach ($this->getOrderItems() as $orderItem) {
  187.             $res[] = $orderItem->getPrettyId();
  188.         }
  189.         return $res;
  190.     }
  191.     /**
  192.      * @return string
  193.      */
  194.     public function getOrderStatus()
  195.     {
  196.         return $this->orderStatus;
  197.     }
  198.     /**
  199.      * @param string $orderStatus
  200.      */
  201.     public function setOrderStatus($orderStatus)
  202.     {
  203.         $this->orderStatus $orderStatus;
  204.     }
  205.     /**
  206.      * @return string
  207.      */
  208.     public function getPrettyId()
  209.     {
  210.         return self::PRETTY_ID_PREFIX.str_pad($this->getId(), 80STR_PAD_LEFT);
  211.     }
  212.     /**
  213.      * @return \DateTime
  214.      */
  215.     public function getLastAccess()
  216.     {
  217.         return $this->lastAccess;
  218.     }
  219.     /**
  220.      * @param \DateTime $lastAccess
  221.      * @return Order
  222.      */
  223.     public function setLastAccess($lastAccess)
  224.     {
  225.         $this->lastAccess $lastAccess;
  226.         return $this;
  227.     }
  228.     /**
  229.      * @return \DateTime
  230.      */
  231.     public function getDesiredDeliveryDateTime()
  232.     {
  233.         return $this->desiredDeliveryDateTime;
  234.     }
  235.     /**
  236.      * @param \DateTime $desiredDeliveryDateTime
  237.      * @return Order
  238.      */
  239.     public function setDesiredDeliveryDateTime($desiredDeliveryDateTime)
  240.     {
  241.         $this->desiredDeliveryDateTime $desiredDeliveryDateTime;
  242.         return $this;
  243.     }
  244.     /**
  245.      * @return int
  246.      */
  247.     public function getAllPartsCount()
  248.     {
  249.         $cnt 0;
  250.         foreach ($this->getOrderItems() as $orderItem) {
  251.             $cnt += $orderItem->getParts()->count();
  252.         }
  253.         return $cnt;
  254.     }
  255. }