<?php

namespace OfficeBrain\Bundle\PaymentBundle\Manager\AbstractManager;

abstract class PaymentAbstract {
	protected $entityManager;
	protected $requestManager;
	protected $sessionManager;
	protected $productDetailServiceManager;
	protected $payumManager;
	protected $payumSecurityTokenFactoryManager;
	protected $routerManager;
	protected $payumSecurityHttpRequestVerifierManager;
	protected $thirdPartyManager;
	protected $form;
	protected $type;
	protected $response;
	protected $orderManager;
	protected $commonLibraryManager;
	protected $coreLibraryManager;
	public function __construct($entityManager, $requestManager, $sessionManager, $productDetailServiceManager, $payumManager, $payumSecurityTokenFactoryManager, $routerManager, $payumSecurityHttpRequestVerifierManager, $thirdPartyManager, $commonLibraryManager, $orderManager, $serviceGroupRuleManager, $coreLibraryManager) {
		$this->entityManager = $entityManager;
		$this->requestManager = $requestManager;
		$this->sessionManager = $sessionManager;
		$this->productDetailServiceManager = $productDetailServiceManager;
		$this->payumManager = $payumManager;
		$this->payumSecurityTokenFactoryManager = $payumSecurityTokenFactoryManager;
		$this->routerManager = $routerManager;
		$this->payumSecurityHttpRequestVerifierManager = $payumSecurityHttpRequestVerifierManager;
		$this->thirdPartyManager = $thirdPartyManager;
		$this->type = null;
		$this->form = null;
		$this->response= array();
		$this->orderManager = $orderManager;
		$this->commonLibraryManager=$commonLibraryManager;
		$this->serviceGroupRuleManager = $serviceGroupRuleManager;
		$this->coreLibraryManager=$coreLibraryManager;
	}
	public function __destruct() {
		unset($this->entityManager);
		unset($this->requestManager);
		unset($this->sessionManager);
		unset($this->productDetailServiceManager);
		unset($this->payumManager);
		unset($this->payumSecurityTokenFactoryManager);
		unset($this->routerManager);
		unset($this->payumSecurityHttpRequestVerifierManager);
		unset($this->form);
		unset($this->type);
		unset($this->response);
		unset($this->orderManager);
		unset($this->commonLibraryManager);
		unset($this->serviceGroupRuleManager);
		unset($this->coreLibraryManager);
	}
	
	public function getProductData(){
		return $this->orderManager->getCartList();
	}
	

	public function calculateTax($array) {
		if($array['vat_unit']=="percentage"){
			return $this->currency((float) $array['vat']/100);
		}else{
			return $array['vat'];
		}
	}
	
	public function currency($number)
	{
		$decimal = $this->coreLibraryManager->getDecimalPointForPrice();
		if(is_numeric($number)) {
			return number_format($number, $decimal, '.', '');
		}
		return null;
	}
}
