<?php

namespace OfficeBrain\Bundle\SearchBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * SaveSearchRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class SaveSearchRepository extends EntityRepository
{
    public function setSaveSearchDB($data, $name, $id, $hashKey)
    {
        //$date = date('Y-m-d H:i:s');
        $em = $this->getEntityManager();
        $search = new SaveSearch();
        $search->setUserId($id);
        $search->setSearchTitle($name);
        $search->setJsonData($data);
        $search->setHashKey($hashKey);
        $search->setCreatedUid($id);
        $search->setUpdatedUid($id);
        $em->persist($search);
        $em->flush();
        return $search->getId();
    }
    
    public function getSaveSearch($id, $limit)
    {
        $queryBuilder =  $this->createQueryBuilder('u');
        $queryBuilder->select('u')
            ->where('u.userId = :id')
            ->orderBy('u.id', 'DESC')
            ->setMaxResults($limit)
            ->setParameter('id', $id);
                    
        return $queryBuilder->getQuery()->getArrayResult();
    }
    
    public function getAllSaveSearch($id)
    {
        $queryBuilder =  $this->createQueryBuilder('u');
        $queryBuilder->select('u')
            ->where('u.userId = :id')
            ->orderBy('u.id', 'DESC')
            ->setParameter('id', $id);

        return $queryBuilder->getQuery()->getArrayResult();
    }
    
    public function findSaveSeach($hashkey, $userId)
    {
        $queryBuilder =  $this->createQueryBuilder('u');
        $queryBuilder->select('count(u.id)')
            ->where('u.hashKey = :hashKey')
            ->andWhere('u.userId = :userId')
            ->setParameter('hashKey', $hashkey)
            ->setParameter('userId', $userId);

        return $queryBuilder->getQuery()->getSingleScalarResult();
    }
    
    public function checkSaveSearch($name,$userId)
    {
    	$qb =  $this->createQueryBuilder('u');
    	$qb->select('u')
    		->where('u.searchTitle = :id')
    		->andWhere('u.userId = :userId')
    		->orderBy('u.id', 'DESC')
    		->setParameter('id', $name)
			->setParameter('userId', $userId);
    	return $qb->getQuery()->getArrayResult();
    }
    
    public function deleteSaveSearch($id)
    {
        $queryBuilder = $this->getEntityManager()->createQueryBuilder();
        $queryBuilder->delete('OfficeBrainSearchBundle:SaveSearch', 'atc')
            ->where('atc.id IN (:Id)')
            ->setParameter('Id', $id);

        return $queryBuilder->getQuery()->execute();
        
        
// 		$qb =  $this->createQueryBuilder('OfficeBrain:SearchBundle','u');
// 		$qb->delete('u')
// 			->where('u.id = :id')
// 			->setParameter('id', $id);
// 		return $qb->getQuery()->execute();
    }
}
