<?php

namespace OfficeBrain\Bundle\QuoteBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * QuoteProductChargesRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class QuoteProductAdditionalChargesRepository extends EntityRepository
{
	protected $projectSetting;
	protected $instanceId;
	protected $instanceType;
	protected $cultureId;
	protected $cultureCode;
	protected $paginatorService;
	protected $projectSettingService;
	protected $userType;
	protected $userId;
	protected $userManager;
	
	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();
	}
	
	public function setProjectUserData($userData)
	{
		$this->userObj = $userData;
	}
	
	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('OfficeBrainQuoteBundle:QuoteProductAdditionalCharges')->createQueryBuilder('qpc');
	}
	
	/**
	 * 4203
	 * To set the additional charges
	 */
	public function setaddAdditionalCharges($itemLineObj){
		$quoteProductAdditionalCharges = new QuoteProductAdditionalCharges();
		$quoteProductAdditionalCharges->setQuoteItemLineId($itemLineObj);
		$quoteProductAdditionalCharges->setChargesType('');
		$quoteProductAdditionalCharges->setQuantity(0);
		$quoteProductAdditionalCharges->setUnitCharge(0);
		$quoteProductAdditionalCharges->setChargesAmount(0);
		$em = $this->getEntityManager();
		$em->persist($quoteProductAdditionalCharges);
		$em->flush();
		return $quoteProductAdditionalCharges;
	}
	
	/**
	 * 4203
	 * To get the additional charges
	 */
	public function getAdditionalChargesById($chargeId){
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder ->where('qpc.id  =:charge_id')
		->setParameter('charge_id', $chargeId);
		return $queryBuilder->getQuery()->getOneOrNullResult();
	}
	
	/**
	 * 4203
	 * To set the additional charges
	 */
	public function removeAdditionalCharges($chargeObj){
		$this->_em->remove($chargeObj);
		$this->_em->flush();
	}
	
	public function setMethod($obj, $fieldName, $value) {
		$obj->setfieldMethod($fieldName, $value);
		$this->_em->persist($obj);
		$this->_em->flush();
	}
}
