<?php

namespace OfficeBrain\CustomBundle\PaymentBundle\Manager\Service;

use OfficeBrain\Bundle\PaymentBundle\Manager\Extended as PaymentManager;
use OfficeBrain\CustomBundle\PaymentBundle\Manager\Extended as CustomPaymentManager;

class PaymentService {
	
	public static function initFactory($entityManager, $requestManager, $sessionManager, $productDetailServiceManager, $payumManager, $payumSecurityTokenFactoryManager, $routerManager, $payumSecurityHttpRequestVerifierManager, $thirdPartyManager, $commonLibraryManager, $orderManager, $serviceGroupRuleManager,$coreLibraryManager) {
		//$payment_method = $requestManager->get('payment_type','paypalExpress');
		$payment_method = $requestManager->get('payment_type','invoice');
		if ($payment_method == 'paypalExpress') {
			$classInstance = new PaymentManager\PaypalExtended ($entityManager, $requestManager, $sessionManager, $productDetailServiceManager, $payumManager, $payumSecurityTokenFactoryManager, $routerManager, $payumSecurityHttpRequestVerifierManager, $thirdPartyManager, $commonLibraryManager, $orderManager, $serviceGroupRuleManager, $coreLibraryManager);
		} elseif ($payment_method == 'authorizeDotNetAim') {
			$classInstance = new PaymentManager\AuthorizedDotNetExtended ($entityManager, $requestManager, $sessionManager, $productDetailServiceManager, $payumManager, $payumSecurityTokenFactoryManager, $routerManager, $payumSecurityHttpRequestVerifierManager, $thirdPartyManager, $commonLibraryManager, $orderManager, $serviceGroupRuleManager, $coreLibraryManager);
		} elseif ($payment_method == 'invoice') {
			$classInstance = new CustomPaymentManager\OfflineExtended ($entityManager, $requestManager, $sessionManager, $productDetailServiceManager, $payumManager, $payumSecurityTokenFactoryManager, $routerManager, $payumSecurityHttpRequestVerifierManager, $thirdPartyManager, $commonLibraryManager, $orderManager, $serviceGroupRuleManager, $coreLibraryManager);
		} elseif ($payment_method == 'check') {
			$classInstance = new CustomPaymentManager\CheckExtended ($entityManager, $requestManager, $sessionManager, $productDetailServiceManager, $payumManager, $payumSecurityTokenFactoryManager, $routerManager, $payumSecurityHttpRequestVerifierManager, $thirdPartyManager, $commonLibraryManager, $orderManager, $serviceGroupRuleManager, $coreLibraryManager);
		} elseif ($payment_method == 'stripe') {
			$classInstance = new PaymentManager\StripeExtended ($entityManager, $requestManager, $sessionManager, $productDetailServiceManager, $payumManager, $payumSecurityTokenFactoryManager, $routerManager, $payumSecurityHttpRequestVerifierManager, $thirdPartyManager, $commonLibraryManager, $orderManager, $serviceGroupRuleManager, $coreLibraryManager);
		} else {
			// throw new Exception();
		}
		//echo get_class($classInstance); die;
		return $classInstance;
	}
}