<?php

namespace OfficeBrain\Bundle\RequestQuoteBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * RequestQuoteCommentRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class RequestQuoteCommentRepository extends EntityRepository
{
	private $request;
	
	/**
	 * To get the request object
	 */
	public function getRequestObj(){
		return $this->request;
	}
	
	/**
	 * To set the request object
	 */
	public function setRequestObj($request){
		$this->request=$request;
	}
	
	public function setProjectSetting($projectSetting)
	{
		$this->projectSetting = $projectSetting;
		$this->prepareProjectSettingData();
	}
	
	public function prepareProjectSettingData()
	{
		$this->userId = $this->projectSetting['user_id'];
		$this->createdUid = $this->upatedUid = $this->userId;
		$this->instanceId = $this->projectSetting['instance_id'];
		$this->instanceType = $this->projectSetting['instance_type'];
		$this->cultureId = $this->projectSetting['culture_id'];
	}
	
	/**
	 * @author Employee Id: 4217
	 * 
	 * OB eCommerce Product - RequestQuote
	 * 
	 * Function created for define a common querybuilder object
	 * 
	 * @param integer $userId
	 * 
	 * @return number
	 */
	public function getQueryBuilder()
	{
		return $this->getEntityManager()->getRepository('OfficeBrainRequestQuoteBundle:RequestQuoteMaster')->createQueryBuilder('r');
	}
	
	

	public function setRequestQuoteComment($data)
	{
		$em=$this->getEntityManager();
		$requestQuoteObj=$this->getRequestQuoteById($data->requestQuoteId,$em);
		$requestQuoteComment=new RequestQuoteComment();
		$requestQuoteComment->setRequestQuoteMasterId($requestQuoteObj);
		$requestQuoteComment->setSendBy($data->getSendBy());
		$requestQuoteComment->setComment($data->getComment());
		$requestQuoteComment->setCreatedUid($this->projectSetting['user_id']);
		$requestQuoteComment->setUpatedUid($this->projectSetting['user_id']);
		$requestQuoteComment->setInstanceId($this->projectSetting['instance_id']);
		$requestQuoteComment->setInstanceType($this->projectSetting['instance_type']);
		$em->persist($requestQuoteComment);
		$em->flush();
	
		return array("status"=>"COMMENT_ADDED_SUCESSFULLY","requestQuoteObj"=>$requestQuoteObj);
	
	}
	

	public function getRequestQuoteById($requestQuoteMasterId)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('r.id = :infoId')
			      	 ->setParameter('infoId', $requestQuoteMasterId);
		$result =  $queryBuilder->getQuery()->getOneOrNullResult();
		return $result;
	}
	/**
	 * @author Employee Id: 410175
	 * OB eCommerce Product - RequestQuote
	 * To get the request quote Comments By RequestQuote Id
	 */
	public function getCommentRequestQuoteDetailById($requestQuoteId){
		$query = $this->getEntityManager()->getRepository('OfficeBrainRequestQuoteBundle:RequestQuoteComment')->createQueryBuilder('r');
		$query->select('r')
		->where('r.requestQuoteMasterId = :requestQuoteId')
		->setParameter('requestQuoteId', $requestQuoteId)
		->orderBy('r.id', 'ASC');
		return $result= $query->getQuery()->getResult();
	}

	public function getRequestQuoteMasterById($id){
		$query = $this->getEntityManager()->getRepository('OfficeBrainRequestQuoteBundle:RequestQuoteMaster')->createQueryBuilder('r');
		$query->where('r.id = :id')
		->setParameter('id', $id);
		return $result= $query->getQuery()->getOneOrNullResult();
	}
}