<?php

namespace OfficeBrain\Bundle\TaxBundle\Entity;

/**
 * TaxMasterRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class TaxMasterRepository extends \Doctrine\ORM\EntityRepository
{
	public function getPaginatorService()
	{
		return $this->paginatorService;
	}
	
	public function setPaginatorService($paginatorService)
	{
		$this->paginatorService = $paginatorService;
	}
	
	public function getProjectSetting()
	{
		return $this->paginatorService;
	}
	
	public function setProjectSetting($projectSetting)
	{
		$this->projectSetting = $projectSetting;
		$this->em=$this->getEntityManager();
	}
	
	public function getQueryBuilder()
	{
		return $this->getEntityManager()->getRepository('OfficeBrainTaxBundle:TaxMaster')->createQueryBuilder('tm');
	}
	
	/**
	 * To get tax master detail by id
	 */
	public function getTaxMasterById($taxId)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('tm.id = :id');
		$queryBuilder->setParameter('id', $taxId);
		return $queryBuilder->getQuery()->getOneOrNullResult();
	}
	
	/**
	 * To get tax master detail by id object
	 */
	public function getTaxMasterByIdObj($taxId)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('tm.id = :id');
		$queryBuilder->setParameter('id', $taxId);
		return $queryBuilder->getQuery()->getResult();
	}
	
	public function getTaxMasterList ($page,$recoardPerPage) {
		
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->orderBy('tm.id', 'DESC');
		$result = $queryBuilder->getQuery()->getResult();
		return $this->paginatorService->paginate($result, $page, $recoardPerPage);
	}
	
	public function changeTaxMasterStatus($id)
	{
		$taxMaster = $this->getTaxMasterById($id);
		if ($taxMaster) {
			$em = $this->getEntityManager();
			if ($taxMaster->getStatus() == 1) {
				$taxMaster->setStatus(0);
			} else {
				$taxMaster->setStatus(1);
			}
			$em->persist($taxMaster);
			$em->flush();
			return true;
		}
		return false;
	}
	
	public function deleteTaxMaster($id)
	{
		$em=$this->getEntityManager();
		$taxMaster = $this->getTaxMasterById($id);
		$taxMaster->setDeletedAt(new \DateTime());
		$em->persist($taxMaster);
		$em->flush();
		return $taxMaster;
	}
	
	public function addTaxMaster($taxMasterArray)
	{
		$taxMasterObj = new TaxMaster();
		$taxMasterObj->setTitle($taxMasterArray['title']);
		$taxMasterObj->setTaxType($taxMasterArray['taxType']);
		$taxMasterObj->setTaxValue($taxMasterArray['taxValue']);
		$taxMasterObj->setStatus('1');
		$this->getEntityManager()->persist($taxMasterObj);
		$this->getEntityManager()->flush();
		return $taxMasterObj;
	}
	
	public function getActiveTaxMasterList()
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->select('tm.id, tm.title');
		$queryBuilder->where('tm.status = 1');
		return $queryBuilder->getQuery()->getResult();
	}
}
