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

abstract class ComplianceAbstract

{
	protected $entityManager;
	protected $request;
	protected $productDetailManager;
	protected $paginatorManager;
	protected $projectSetting;
	
    
	public function __construct($entityManager, $request, $productDetailManager, $paginatorManager)
	{
		$this->entityManager = $entityManager;
		$this->request = $request;
		$this->productDetailManager = $productDetailManager;
		$this->paginatorManager = $paginatorManager;
		$this->projectSetting = $this->request->get('project_setting');
		
		$this->supplierComplianceRepository = $this->entityManager->getRepository('OfficeBrainSupplierComplianceBundle:SupplierCompliance');

		$this->productSupplierComplianceRepository = $this->entityManager->getRepository('OfficeBrainSupplierComplianceBundle:ProductSupplierCompliance');

		$this->supplierComplianceRepository->setProjectSetting( $this->projectSetting );
		$this->supplierComplianceRepository->setPaginatorService($this->paginatorManager);
		
	}
	
	public function __destruct()
	{
		unset($this->entityManager);
		unset($this->request);
		unset($this->productDetailManager);
		unset($this->paginatorManager);
		unset($this->projectSetting);
		unset($this->supplierComplianceRepository);
	}
	
	public function getAllComplianceList(){
		return $this->supplierComplianceRepository->getAllComplianceList();
	}

	public function deleteCompliaceProduct($supplierCompliance){
		return $this->supplierComplianceRepository->deleteCompliaceProduct($supplierCompliance);
	}

	public function getCompliaceProductById($product_id){
		return $this->productSupplierComplianceRepository->getCompliaceProductById($product_id);
	}

	public function saveCompliaceProduct($product_id,$compliance,$mappedComplaince){
		return $this->productSupplierComplianceRepository->saveCompliaceProduct($product_id,$compliance,$mappedComplaince);
	}

	public function getProductDetailById($productId,$culture)
	{
		return $this->productDetailManager->getProductDetailById($productId, $culture);
	}

	public function getSupplierComplainceById($id)
	{
		return $this->supplierComplianceRepository->getSupplierComplainceById($id);
	}

	public function getCompliaceBySupplierId($id)
	{
		return $this->supplierComplianceRepository->getCompliaceBySupplierId($id);
	}
	
	public function uploadPdfFile($file, $path)
    {	
    	if($file->getClientMimeType() == 'application/pdf'){
    		$name = sha1(time().$file->getClientOriginalName());
    		$extension = $file->getClientOriginalExtension() ;
    		$directory =  $path;
    		if ( !file_exists($directory) ) {
    			$oldmask = umask(0);
    			mkdir ($directory, 0777, true);
    		}
    		$file->move($directory, $name.'.'.$extension);
    		$name = $name.'.'.$extension;
    	}
    	return $name;
    }

    public function getComplianceList($keywords, $page,$recordsPerPage)
    {
    	return $this->supplierComplianceRepository->getSupplierComplainceAdminList($keywords, $page,$recordsPerPage)
    ;
    }

    public function saveData($fromData, $fileData, $object=null)
    {	
    	return $this->supplierComplianceRepository->saveData($fromData, $fileData, $object);
    }
}
