<?php
namespace OfficeBrain\Bundle\SolrBundle\Manager\Extended;

use OfficeBrain\Bundle\SolrBundle\Manager\AbstractManager\SolrAbstract;


/**
 * @author OfficeBrain 4116 <info@officebrain.com>
 *
 * Description : This will manage user level Access.
 *
 **/

class SolrExtended extends SolrAbstract
{
    
    
    public function __construct($entityManager, $productDetailManager, $productAPI, $request)
    {
        parent::__construct($entityManager, $productDetailManager, $productAPI, $request);
    }

    /**
     * @author Employee Id: 4116
     * OB eCommerce Product - Solr Product Mapping
     * Function created for To get the product detail By Id
     * @return ClassInstance
    */
    
    public function getProductDetailById($productId=null,$cultureCode,$instanceId=1,$isSolr=true)
    {
        $productDetail=array();
        if(empty($productId)) {
            return $productDetail;
        }

        if(is_array($productId)){
             $productData = json_encode($productId);
             $productDetail=$this->productDetailManager->getProductDetailById($productData, $cultureCode,$instanceId,$isSolr);
        }else{
            $productData = $productId;
            $productDetail=$this->productDetailManager->getProductDetailById($productData, $cultureCode,$instanceId,$isSolr);
            return isset($productDetail[$productId])?$productDetail[$productId]:$productDetail;
        }

        return $productDetail;
    }
        
    
    /**
     * @author Employee Id: 4014
     * Description : To get product Product Count By Supplier Id
     * @param string $productSlug
     * @param string $culture
     *
     * @return array
     *
     * @throws Exception
     *
     **/
    public function getProductCountBySupplierId($projectId, $culture, $supplierId=0,$instanceId=1,$isSolr=true,$refSupplierId)
    {
        $data = array();
        $supplierCount[$supplierId]=0;
        $this->productAPI->init('supplier_count');
        $this->productAPI->setCallParameters(array('supplier_id_ref'=>(int)$refSupplierId,'supplier_id'=>(int)$supplierId,'project_id'=>(int)$projectId,'is_solr'=>$isSolr,"instance_id"=>$instanceId));
        $this->productAPI->setCulture($culture);
        $this->productAPI->doProcess();
        if ($this->productAPI->isSuccess()) {
            $data = $this->productAPI->getResultArray();
        }
        return $data;
    }
    
    /**
     * @author Employee Id: 4014
     * Description : To get Supplier Product List By Supplier Id
     * @param string $productSlug
     * @param string $culture
     *
     * @return array
     *
     * @throws Exception
     *
     **/
    public function getSupplierProductListBySupplierId($supplierId, $culture,$instanceId=1,$start=0,$limit=10,$isSolr=true)
    {
        $data = array();
        $this->productAPI->init('supplier_product_list');
        $this->productAPI->setCallParameters(array('supplier_id'=>$supplierId,'is_product_for_virtualization'=>0,'start'=>$start,'limit'=>$limit,'is_solr'=>$isSolr,"instance_id"=>$instanceId));
        $this->productAPI->setCulture($culture);
        $this->productAPI->doProcess();
        if ($this->productAPI->isSuccess()) {
            $data = $this->productAPI->getResultArray();
        }
        return $data;
    }
}
?>