<?php
namespace App\Daikin\BaseBundle\Entity\EmergencyStock;
use App\Daikin\BaseBundle\Entity\SparePartsPart;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* Class SparePartsOrderItem
* @package App\Daikin\BaseBundle\Entity
*
* @ORM\Entity(repositoryClass="App\Daikin\BaseBundle\Repository\OrderItemRepository")
* @ORM\Table(name="OrderItem")
*/
class OrderItem
{
const PRETTY_ID_PREFIX = 'DKNOI';
const STATUS_ORDERING = 'ordering';
const STATUS_CREATED = 'created';
const STATUS_CANCELED = 'canceled';
const STATUS_ACCEPT = 'accept';
const STATUS_PICKUP = 'pickup';
const STATUS_DROPOFF = 'dropoff';
const STATUS_UNDELIVERABLE = 'undeliverable';
/**
* @var integer
*
* @ORM\Id()
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="trackingNumber", type="string", nullable=true)
*/
private $trackingNumber;
/**
* @var \DateTime
*
* @ORM\Column(name="desiredDeliveryDateTime", type="datetime", nullable=true)
*/
private $desiredDeliveryDateTime;
/**
* @var Order
*
* @ORM\ManyToOne(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\Order", inversedBy="orderItems")
* @ORM\JoinColumn()
*/
private $order;
/**
* @var string
*
* @ORM\Column(name="orderItemStatus", type="string")
*/
private $orderItemStatus;
/**
* @var OrderItemStatusHistory[]
*
* @ORM\OneToMany(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\OrderItemStatusHistory", mappedBy="orderItem")
*/
private $statusHistory;
/**
* @var OrderItemPart[]
*
* @ORM\OneToMany(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\OrderItemPart", mappedBy="orderItem")
*/
private $parts;
/**
* @var Warehouse
*
* @ORM\ManyToOne(targetEntity="App\Daikin\BaseBundle\Entity\EmergencyStock\Warehouse")
* @ORM\JoinColumn()
*/
private $warehouse;
/**
* duration in seconds
*
* @var integer
*
* @ORM\Column(type="integer", nullable=true)
*/
private $duration;
/**
* @var integer
*
* @ORM\Column(name="durationInTraffic", type="integer", nullable=true)
*/
private $durationInTraffic;
/**
* Distance in meter
*
* @var integer
*
* @ORM\Column(type="integer", nullable=true)
*/
private $distance;
/**
* OrderItem constructor.
*/
public function __construct()
{
$this->orderItemStatus = self::STATUS_ORDERING;
$this->statusHistory = new ArrayCollection();
$this->parts = new ArrayCollection();
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return string
*/
public function getTrackingNumber()
{
return $this->trackingNumber;
}
/**
* @param string $trackingNumber
* @return OrderItem
*/
public function setTrackingNumber($trackingNumber)
{
$this->trackingNumber = $trackingNumber;
return $this;
}
/**
* @return \DateTime
*/
public function getDesiredDeliveryDateTime()
{
return $this->desiredDeliveryDateTime;
}
/**
* @param \DateTime $desiredDeliveryDateTime
* @return OrderItem
*/
public function setDesiredDeliveryDateTime($desiredDeliveryDateTime)
{
$this->desiredDeliveryDateTime = $desiredDeliveryDateTime;
return $this;
}
/**
* @return Order
*/
public function getOrder()
{
return $this->order;
}
/**
* @param Order $order
* @return OrderItem
*/
public function setOrder($order)
{
$this->order = $order;
return $this;
}
/**
* @return Warehouse
*/
public function getWarehouse()
{
return $this->warehouse;
}
/**
* @param Warehouse $warehouse
* @return OrderItem
*/
public function setWarehouse($warehouse)
{
$this->warehouse = $warehouse;
return $this;
}
/**
* @return OrderItemPart[]|ArrayCollection
*/
public function getParts()
{
return $this->parts;
}
/**
* @param SparePartsPart $parts
*/
public function setParts($parts)
{
$this->parts = $parts;
}
/**
* @return string
*/
public function getOrderItemStatus()
{
return $this->orderItemStatus;
}
/**
* @param string $orderItemStatus
* @return OrderItem
*/
public function setOrderItemStatus($orderItemStatus)
{
$this->orderItemStatus = $orderItemStatus;
return $this;
}
/**
* @return int
*/
public function getDuration()
{
return $this->duration;
}
/**
* @param int $duration
* @return OrderItem
*/
public function setDuration($duration)
{
$this->duration = $duration;
return $this;
}
/**
* @return int
*/
public function getDurationInTraffic()
{
return $this->durationInTraffic;
}
/**
* @param int $durationInTraffic
* @return OrderItem
*/
public function setDurationInTraffic($durationInTraffic)
{
$this->durationInTraffic = $durationInTraffic;
return $this;
}
/**
* @return int
*/
public function getDistance()
{
return $this->distance;
}
/**
* @param int $distance
* @return OrderItem
*/
public function setDistance($distance)
{
$this->distance = $distance;
return $this;
}
/**
* @return OrderItemStatusHistory[]
*/
public function getStatusHistory()
{
return $this->statusHistory;
}
/**
* @param OrderItemStatusHistory[] $statusHistory
* @return OrderItem
*/
public function setStatusHistory($statusHistory)
{
$this->statusHistory = $statusHistory;
return $this;
}
/**
* @return string
*/
public function getPrettyId()
{
return self::PRETTY_ID_PREFIX . str_pad($this->getId(), 8, 0, STR_PAD_LEFT);
}
/**
* @return string
*/
public function getShippingPrettyIdHash()
{
return md5($this->getTrackingNumber(). $this->getPrettyId());
}
}