<?php

namespace OfficeBrain\Bundle\OrderBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * OrderProduct
 *
 * @ORM\Table(name="tbl_order_product", options={"type"="InnoDB","charset"="utf8","collate"="utf8_unicode_ci"})
 * @ORM\Entity(repositoryClass="OfficeBrain\Bundle\OrderBundle\Entity\OrderProductRepository")
 */
class OrderProduct
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id",type="bigint", length=20 , options={"unsigned"=true})
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="OrderItemLine", inversedBy="orderProduct")
     * @ORM\JoinColumn(name="order_item_line_id", referencedColumnName="id")
     */
    private $orderItemLineId;

    /**
     * @var integer
     *
     * @ORM\Column(name="order_master_id", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $orderId;

    /**
     * @var integer
     *
     * @ORM\Column(name="product_id", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $productId;

    /**
     * @var integer
     *
     * @ORM\Column(name="culture_product_id", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $cultureProductId;
    
    /**
     * @ORM\OneToMany(targetEntity="OrderVariationMaster", mappedBy="orderProductId")
     */
    private $orderVariationMaster;
    
    /**
     * @ORM\OneToOne(targetEntity="OrderShippingDetail", mappedBy="orderProductId")
     */
    private $orderShippingDetail;
    
    public function __construct() {
    	$this->orderVariationMaster = new ArrayCollection();
    }


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set orderId
     *
     * @param integer $orderId
     * @return OrderProduct
     */
    public function setOrderId($orderId)
    {
        $this->orderId = $orderId;

        return $this;
    }

    /**
     * Get orderId
     *
     * @return integer 
     */
    public function getOrderId()
    {
        return $this->orderId;
    }

    /**
     * Set productId
     *
     * @param integer $productId
     * @return OrderProduct
     */
    public function setProductId($productId)
    {
        $this->productId = $productId;

        return $this;
    }

    /**
     * Get productId
     *
     * @return integer 
     */
    public function getProductId()
    {
        return $this->productId;
    }

    /**
     * Set cultureProductId
     *
     * @param integer $cultureProductId
     * @return OrderProduct
     */
    public function setCultureProductId($cultureProductId)
    {
        $this->cultureProductId = $cultureProductId;

        return $this;
    }

    /**
     * Get cultureProductId
     *
     * @return integer 
     */
    public function getCultureProductId()
    {
        return $this->cultureProductId;
    }

    /**
     * Set orderItemLineId
     *
     * @param \OfficeBrain\Bundle\OrderBundle\Entity\OrderItemLine $orderItemLineId
     * @return OrderProduct
     */
    public function setOrderItemLineId(\OfficeBrain\Bundle\OrderBundle\Entity\OrderItemLine $orderItemLineId = null)
    {
        $this->orderItemLineId = $orderItemLineId;

        return $this;
    }

    /**
     * Get orderItemLineId
     *
     * @return \OfficeBrain\Bundle\OrderBundle\Entity\OrderItemLine 
     */
    public function getOrderItemLineId()
    {
        return $this->orderItemLineId;
    }

    /**
     * Add orderVariationMaster
     *
     * @param \OfficeBrain\Bundle\OrderBundle\Entity\OrderVariationMaster $orderVariationMaster
     * @return OrderProduct
     */
    public function addOrderVariationMaster(\OfficeBrain\Bundle\OrderBundle\Entity\OrderVariationMaster $orderVariationMaster)
    {
        $this->orderVariationMaster[] = $orderVariationMaster;

        return $this;
    }

    /**
     * Remove orderVariationMaster
     *
     * @param \OfficeBrain\Bundle\OrderBundle\Entity\OrderVariationMaster $orderVariationMaster
     */
    public function removeOrderVariationMaster(\OfficeBrain\Bundle\OrderBundle\Entity\OrderVariationMaster $orderVariationMaster)
    {
        $this->orderVariationMaster->removeElement($orderVariationMaster);
    }

    /**
     * Get orderVariationMaster
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getOrderVariationMaster()
    {
        return $this->orderVariationMaster;
    }

    /**
     * Set orderShippingDetail
     *
     * @param \OfficeBrain\Bundle\OrderBundle\Entity\OrderShippingDetail $orderShippingDetail
     * @return OrderProduct
     */
    public function setOrderShippingDetail(\OfficeBrain\Bundle\OrderBundle\Entity\OrderShippingDetail $orderShippingDetail = null)
    {
        $this->orderShippingDetail = $orderShippingDetail;

        return $this;
    }

    /**
     * Get orderShippingDetail
     *
     * @return \OfficeBrain\Bundle\OrderBundle\Entity\OrderShippingDetail 
     */
    public function getOrderShippingDetail()
    {
        return $this->orderShippingDetail;
    }
}
