<?php

namespace OfficeBrain\CustomBundle\ServiceGroupBundle\Manager\Service;

use OfficeBrain\Bundle\ServiceGroupBundle\Manager\Extended as ServiceGroupManager;
use OfficeBrain\CustomBundle\ServiceGroupBundle\Manager\Extended as CustomServiceGroupManager;

/**
 * @author OfficeBrain 4589 <info@officebrain.com>
 *
 * Description : Service rule Factory Class
 */
class ServiceRuleService
{
    /**
     * @author Employee Id: 4589
     * Description :
     *
     * @param 1 : object $entityManager
     * @param 2 : object $request
     *
     * @return object
     **/
    public static function initFactory($entityManager, $request, $session, $serviceContainer, $translatorService, $countries, $languages, $coreManager, $productTagManager, $serviceGroupAPiClient, $twigExtension)
    {
    	$data = $request->get('project_setting');
        $rule_type = $request->get('rule_service');

        //$isAdmin = 1; //TODO: set it dynamic

        //if ($isAdmin == 1) {
            switch ($rule_type) {
                case 'rule_mapping':
                    $classInstance = new ServiceGroupManager\ServiceRuleMappingAdminExtended($entityManager, $request, $session, $serviceContainer, $translatorService, $countries, $languages, $coreManager, $productTagManager, $serviceGroupAPiClient,  $twigExtension);
                    break;
                    
                case 'rule_charges':
                      $classInstance = new CustomServiceGroupManager\ServiceRuleChargesCalculationExtended($entityManager, $request, $session, $serviceContainer, $translatorService, $countries, $languages, $coreManager, $productTagManager, $serviceGroupAPiClient,  $twigExtension);
                       break;

                case 'reward_rule_mapping':
                    $classInstance = new ServiceGroupManager\RewardRuleMappingExtended($entityManager, $request, $session, $serviceContainer, $translatorService, $countries, $languages, $coreManager, $productTagManager, $serviceGroupAPiClient, $twigExtension);
                    break;

                default: //default rule_master
                    $classInstance = new ServiceGroupManager\ServiceRuleAdminExtended($entityManager, $request, $session, $serviceContainer, $translatorService, $countries, $languages, $coreManager, $productTagManager, $serviceGroupAPiClient, $twigExtension);
            }
        //} else {
            //throw new Exception();
        //}

        return $classInstance;
    }
}
