<?php

namespace OfficeBrain\Bundle\SeoBundle\Entity;
use Doctrine\ORM\EntityRepository;

/**
 * SeoAdminRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class SeoDetailRepository extends \Doctrine\ORM\EntityRepository
{
    
    protected $paginatorService;
	public function getPaginatorService()
	{
		return $this->paginatorService;
	}
	
	public function setPaginatorService($paginatorService)
	{
		$this->paginatorService = $paginatorService;
	}

  public function getQueryBuilder()
	{
		return $this->getEntityManager()->getRepository('OfficeBrainSeoBundle:SeoDetail')->createQueryBuilder('s');
	}

  
	/**
	 * @author Employee Id: 5083
	 * OB eCommerce Product - getAdminAllSku
	 * Function created to get AllSku
	*/
    public function getAdminAllSku($page,$recordPerPage,$searchParameter)
    {  
    	$queryBuilder = $this->getQueryBuilder();
    	$queryBuilder->where('s.deletedAt IS NULL');
    	if($searchParameter!=''){
    	  $queryBuilder->AndWhere('s.productSku LIKE :productSku')->setParameter('productSku', '%'. $searchParameter .'%');
        }
		$queryBuilder->orderBy('s.id', 'DESC');
		//$result = $queryBuilder->getQuery()->getArrayResult();
		return $this->paginatorService->paginate($queryBuilder, $page, $recordPerPage);

      //return $result;
    }

    /**
	 * To get request info detail by id
	 */
	public function getSeoDetailById($seoId)
	{	
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('s.id = :id');
		$queryBuilder->setParameter('id', $seoId);
		return $queryBuilder->getQuery()->getOneOrNullResult();
	}

	public function getSeoDetailBySlug($slug)
	{	
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('s.slug = :slug');
		$queryBuilder->setParameter('slug', $slug);
		return $queryBuilder->getQuery()->getOneOrNullResult();
	}

	/**
	 * To get request info detail by id
	 */
	public function getSeoDublicateSku($ProductSku)
	{	
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('s.productSku = :productSku');
		$queryBuilder->Andwhere('s.deletedAt IS NULL');
		$queryBuilder->setParameter('productSku', $ProductSku);
		return $queryBuilder->getQuery()->getOneOrNullResult();
	}
    /**
	 * Todelete request info  product data of particular user
	 */
	public function deleteSeo($seoId)
	{
		$em=$this->getEntityManager();
		$seoInfo = $this->getSeoDetailById($seoId);
		$seoInfo->setDeletedAt(new \DateTime());
		$em->persist($seoInfo);
		$em->flush();
		return $seoInfo;
	}
	/**
	 * To get request info detail by id
	 */
	public function getSeoDetailsById($productId)
	{	
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('s.productId = :productId');
		$queryBuilder->Andwhere('s.deletedAt IS NULL');
		$queryBuilder->setParameter('productId', $productId);
		return $queryBuilder->getQuery()->getOneOrNullResult();
	}
}
