<?php

namespace OfficeBrain\Bundle\HomeSectionBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * HomeSectionRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class HomeSectionRepository extends EntityRepository
{
    protected $paginatorservice;
    
	/**
	 * @author Employee Id: 5058
	 * OB eCommerce Product - getPaginatorService
	 * Function created to get Paginator Service
	 */
	public function getPaginatorService()
	{
		return $this->paginatorservice;
	}
	
	/**
	 * @author Employee Id: 5058
	 * OB eCommerce Product - setPaginatorService
	 * Function created to set Paginator Service
	 */
	public function setPaginatorService($paginatorService)
	{
		$this->paginatorservice = $paginatorService;
	}
    
    /**
     * @author Employee Id: 4571
     *
     * Description : Persist Object
     *
     * @param : null
     *
     * @return Object
     *
     * @throws : null
     *
     **/
    public function saveSection($section, $homeSection=NULL)
    {
    	$em=$this->getEntityManager();
    	if($homeSection==NULL){
        	$homeSection =  new HomeSection();
    	}
        $homeSection->setSection($section->getSection());
        $homeSection->setSectionHeading($section->getSectionHeading());
        $homeSection->setSectionTitle($section->getSectionTitle());
        $homeSection->setTitle($section->getTitle());
        $homeSection->setDescription($section->getDescription());
        if($section->getUploadedBanner()!=""){
        	$homeSection->setUploadedBanner($section->getUploadedBanner());
    	}
        $homeSection->setButtonLabel($section->getButtonLabel());
        $homeSection->setLink($section->getLink());
        $homeSection->setStatus($section->getStatus());
        $homeSection->setCreatedAt(new \DateTime());
        $em->persist($homeSection);
        $em->flush();
        return $homeSection;
    }
    
    public function getQueryBuilder()
    {
        return $this->getEntityManager()->getRepository('OfficeBrainHomeSectionBundle:HomeSection')->createQueryBuilder('r');
    }

    public function getFunpromoSectionList($keywords, $page,$recordsPerPage){
        $queryBuilder = $this->getQueryBuilder();
        $queryBuilder->where('r.section = :section')
        ->setParameter('section', 'we_create_fun_promos');
        if($keywords!=null){
            $queryBuilder->andWhere('r.title = :title')
            ->setParameter('title', $keywords);
        }
        $queryBuilder->orderBy('r.sortPosition', 'ASC');
        return $this->getPaginatorService()->paginate($queryBuilder, $page, $recordsPerPage);
    }

    public function getHomeSectionList($keywords, $page,$recordsPerPage){
    	$queryBuilder = $this->getQueryBuilder();
        $queryBuilder->where('r.section != :section')
        ->setParameter('section', 'we_create_fun_promos');
        if($keywords!=null){
            $queryBuilder->andWhere('r.title = :title')
            ->setParameter('title', $keywords);
        }
        $queryBuilder->orderBy('r.id', 'ASC');
        return $this->getPaginatorService()->paginate($queryBuilder, $page, $recordsPerPage);
    }

    public function getHomeSectionByType($section){
    	$queryBuilder = $this->getQueryBuilder();
        $queryBuilder->where('r.status = :status')
        ->setParameter('status', 1);
        $queryBuilder->andWhere('r.section = :section')
            ->setParameter('section', $section);
        if($section=="we_create_fun_promos"){
            $queryBuilder->orderBy('r.sortPosition', 'ASC');
        }else{
            $queryBuilder->orderBy('r.id', 'ASC');
        }
        return $queryBuilder->getQuery()->getResult();
    }

    public function set($homeSection)
    {
        $this->_em->persist($homeSection);
        return $homeSection;
    }
}
