<?php

namespace OfficeBrain\Bundle\OrderBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * OrderItemLineRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class OrderItemLineRepository extends EntityRepository
{
	protected $projectSetting;
	protected $instanceId;
	protected $instanceType;
	protected $cultureId;
	protected $cultureCode;
	protected $paginatorService;
	protected $projectSettingService;
	protected $userType;
	protected $userId;
	protected $userManager;
	protected $erpId;
	
	public function getPaginatorService()
	{
		return $this->paginatorService;
	}
	
	public function setPaginatorService($paginatorService)
	{
		$this->paginatorService = $paginatorService;
	}
	
	public function setUserManager($userManager)
	{
		$this->userManager = $userManager;
	}
	
	public function setCoreManager($coreManager){
		$this->coreManager = $coreManager;
	}
	
	public function getProjectSetting()
	{
		return $this->paginatorService;
	}
	
	public function setProjectSetting($projectSetting)
	{
		$this->projectSetting = $projectSetting;
		$this->prepareProjectSettingData();
	}
	
	function setErpId($erpId)
	{
		$this->erpId= $erpId;
	}
	
	public function prepareProjectSettingData()
	{
		$this->userId = $this->projectSetting['user_id'];
		$this->userType = $this->projectSetting['user_type'];
		$this->createdUid = $this->upatedUid = $this->userId;
		$this->instanceId = $this->projectSetting['instance_id'];
		$this->instanceType = $this->projectSetting['instance_type'];
		$this->cultureId = $this->projectSetting['culture_id'];
		$this->cultureCode = $this->projectSetting['culture_code'];
	}
	
	/**
	 * @author Employee Id: 4248
	 * OB eCommerce Product - Quotelist
	 * Function created for define a common querybuilder object
	 * @param integer $userId
	 * @return number
	 */
	public function getQueryBuilder()
	{
		return $this->getEntityManager()->getRepository('OfficeBrainOrderBundle:OrderItemLine')->createQueryBuilder('oit');
	}
	
	public function getAllAddedProductInOrder($orderId)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->select('oit.id, oit.productId, oit.isComplete, oit.productDetailConfiguration')
					 ->where('oit.orderMasterId  = :order_id')
					 ->setParameter('order_id', $orderId);
		return $queryBuilder->getQuery()->getResult();
	}
	
	public function getProductIdInItemLine($itemLineId)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->select('oit.id,oit.productId')
					 ->where('oit.id  =:item_line_id')
					 ->setParameter('item_line_id', $itemLineId);
		return $queryBuilder->getQuery()->getOneOrNullResult();
	}
}
