<?php

namespace OfficeBrain\Bundle\QuickQuoteBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * QuickQuoteRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class QuickQuoteRepository extends EntityRepository
{
	protected $projectSetting;
	protected $instanceId;
	protected $instanceType;
	protected $cultureId;
	protected $cultureCode;
	
	public function setProjectSetting($projetSetting)
	{
		$this->projectSetting = $projetSetting;
		$this->prepareProjectSettingData();
	}
	
	public function getProjectSetting()
	{
		return $this->projetSetting;
	}
	
	public function prepareProjectSettingData()
	{
		$this->instanceId = $this->projectSetting['instance_id'];
		$this->instanceType = $this->projectSetting['instance_type'];
		$this->userId = $this->projectSetting['user_id'];
		$this->cultureId = $this->projectSetting['culture_id'];
		$this->cultureCode = $this->projectSetting['culture_code'];
	}
	
	public function getQueryBudler()
	{
		return $this->getEntityManager()->getRepository('OfficeBrainQuickQuoteBundle:QuickQuote')->createQueryBuilder('qq');
	}
        
        public function addQuickQuoteRequest($quickQuote)
        {
            $quickQuote->setInstanceId($this->instanceId);
            $quickQuote->setInstanceType($this->instanceType);
            $quickQuote->setCreatedAt(new \DateTime());
            $quickQuote->setCreatedUid($this->userId);
          
            $em = $this->getEntityManager();
            $em->persist($quickQuote);
	    $em->flush();
           
            return $quickQuote;
        }
        
        public function getQuickQuoteList($userId)
        {
             $query = $this->createQueryBuilder('qq');
            $query->select('qq');
            
            $query->where('qq.createdUid = :user')
            ->andWhere('qq.deletedAt IS NULL')
            ->setParameter('user', $userId)
            ->orderBy('qq.id', 'DESC');		
            
           // echo $query->getQuery()->getSQL();exit;
            return $query->getQuery()->getResult();
        }
        
        /**
	 * To get Quick Quote detail by id
	 */
	public function getQuickQuoteDetailById($quickQuoteId)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('r.id = :qqId');
		$queryBuilder->setParameter('qqId', $quickQuoteId);
		
		/* $query = $this->getEntityManager()->getRepository('OfficeBrainRequestInfoBundle:RequestInfo')->createQueryBuilder('r');
		$query->where('r.id = :infoId')
			  ->setParameter('infoId', $infoId); */
		return $queryBuilder->getQuery()->getSingleResult();
	}
        
        /**
	 * Todelete Quick Quote data of particular user
	 */
	public function deleteQuickQuote($quickQuoteId)
	{
		$em=$this->getEntityManager();
		$quickQuote = $this->getQuickQuoteDetailById($quickQuoteId);
		$quickQuote->setDeletedAt(new \DateTime());
		$em->persist($quickQuote);
		$em->flush();
		return $quickQuote;
	}
	
	public function getMaxNoOfProduct($maxNo)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->select('qq.id', 'qq.productId', 'qq.cultureProductId', 'qq.cultureId', 'qq.userId as userId');
		$queryBuilder->where('qq.userId = :userId AND qq.cultureId = :cultureId AND qq.instanceId = :instanceId')
		->setParameter('userId', $this->userId)
		->setParameter('cultureId', $this->cultureId)
		->setParameter('instanceId', $this->instanceId)
		->addOrderBy('qq.id', 'DESC')
		->setMaxResults($maxNo);
	
		return $queryBuilder->getQuery()->getResult();
	}
}