<?php
namespace OfficeBrain\Bundle\ActivityBundle\Manager\AbstractManager;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use OfficeBrain\Bundle\ActivityBundle\Document\SearchLog;
use OfficeBrain\Bundle\ActivityBundle\Document\KeywordBannerLog;

/**
* @author OfficeBrain 4160 <info@officebrain.com>
*
* Description :  Activity Log Abstract Class
*
**/
abstract class ActivityLogAbstract
{
    private $entityManager;
    private $repository;
    private $enableModule;
    abstract protected function entityActivityLog($lifecycleEventArgs, $logParameters, $eventMethod);
    abstract protected function viewActivityLog($controller, $logParameters, $eventMethod);
    
    public function getRepository()
    {
        return $this->repository;
    }
    
    /**
    * @author Employee Id: 4488
    * Description :
    * setRepository method to set searchLog Repository
    * @param 1 : object $repository <OfficeBrainActivityBundle:SearchLog>
    **/
    public function setRepository($repository)
    {
        $this->repository = $repository;
        return $this;
    }
    
    public function getSearchLogObj()
    {
        return new SearchLog();
    }
    public function getKeywordBannerLogObj()
    {
    	return new KeywordBannerLog();
    }
    
    /**
    * @author Employee Id: 4488
    * Description :
    * insertLog method to set Search keyword Data
    * @param 1 : string logparameter <request>
    * @param 1 : array $searchCriteria <array("mainFilter"="all")>
    * @param 1 : string $searchKeyword <search_query>
    **/
    public function insertLog($request, $searchCriteria, $searchKeyword)
    {
        $searchLog= $this->getSearchLogObj();
        $searchLog->setRequestInfo($request); // pass as the request
        $searchLog->setSearchKeyword($searchKeyword);
        $searchLog->setData($searchCriteria);//array
        return $this->repository->save($searchLog);
    }
    public function insertKeywordBannerLog($request, $bannerCriteria)
    {
    	$keywordBannerLog=$this->getKeywordBannerLogObj();
    	$keywordBannerLog->setRequestInfo($request);
    	$keywordBannerLog->setBannerId($bannerCriteria['bannerId']);
    	$keywordBannerLog->setBannerKeywords($bannerCriteria['bannerKeyword']);
    	$keywordBannerLog->setBannerName($bannerCriteria['bannerName']);
    	$keywordBannerLog->setBannerType($bannerCriteria['bannerType']);
    	$keywordBannerLog->setProductId($bannerCriteria['bannerProductId']);
    	$keywordBannerLog->setCategoryId($bannerCriteria['bannerCategoryId']);
    	$keywordBannerLog->setViewOn($bannerCriteria['bannerViewOn']);
    	return $this->repository->save($keywordBannerLog);
    		
    }
	public function getEnableModule() {
		return $this->enableModule;
	}
	public function setEnableModule($enableModule) {
		$this->enableModule = $enableModule;
		return $this;
	}
	
    
}
