<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
 
   <parameters>
        <parameter key="office_brain_core.cache.enable">0</parameter>
        <parameter key="office_brain_core.cache.prefix">__project__</parameter>
        <parameter key="office_brain_core.stash.cache">OfficeBrain\Bundle\CoreBundle\Cache\Utility</parameter>
        <parameter key="office_brain_core.redis.cache">OfficeBrain\Bundle\CoreBundle\Cache\Redis</parameter>
        
        <parameter key="office_brain_core.redis.service">OfficeBrain\Bundle\CoreBundle\Cache\RedisCacheService</parameter>
        
        
        <parameter key="office_brain_paginator_helper_processor_class">OfficeBrain\Bundle\CoreBundle\Helper\Processor</parameter>
        <parameter key="office_brain_currency_conversion.currency_conversion_manager">OfficeBrain\Bundle\CoreBundle\Manager\Service\CurrencyConversionService</parameter>
        <parameter key="office_brain_validation.office_brain_validation_manager">OfficeBrain\Bundle\CoreBundle\Helper\Validation</parameter>
        <parameter key="office_brain_core.device_detect_manager">OfficeBrain\Bundle\CoreBundle\Manager\Service\DeviceDetectService</parameter>
    </parameters>
   
    <services>
        <!--service id="statsh_cache_wrapper" class="%office_brain_core.stash.cache%">
            <argument type="service" id="stash.default_cache" />
            <argument>%cache_enable%</argument>
            <argument>%office_brain_core.cache.prefix%</argument>
        </service-->
        
        <service id="redis_cache_service" class="%office_brain_core.redis.service%">
            <argument type="service" id="service_container" />
        </service>
        
        <service id="office_brain_array_to_pagination_manager" class="OfficeBrain\Bundle\CoreBundle\Service\ArrayToPaginationManager">
        	<argument type="service" id="request" strict="false"/>
            <argument type="service" id="knp_paginator"/>
        </service>

        <service id="listener.requestListner" class="OfficeBrain\Bundle\CoreBundle\Listener\RequestListner">
        	<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" />
        	<tag name="kernel.event_listener" event="kernel.response" method="onKernelResponse" />
            <argument type="service" id="service_container" />
        </service>
        
        <service id="listener.mobileapiListner" class="OfficeBrain\Bundle\CoreBundle\Listener\MobileApiListner">
        	<tag name="kernel.event_listener" event="kernel.view" method="onKernelView" priority="100" />
            <argument type="service" id="service_container" />
        </service>

        <service id="office_brain_core_device_request_listner" class="OfficeBrain\Bundle\CoreBundle\Listener\DeviceRequestListener" scope="request">
        	<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" priority="2" />
            <argument type="service" id="service_container" />
        </service>

        <service id="office_brain_core_device_detect_factory" class="%office_brain_core.device_detect_manager%"/>
        <service id="office_brain_core_device_detect_manager" class="%office_brain_core.device_detect_manager%" scope="request">
            <factory service="office_brain_core_device_detect_factory" method="initFactory"/>
            <argument type="service" id="doctrine.orm.entity_manager" />
       		<argument type="service" id="request" />
       		<argument>%device_app_download_type%</argument>
        </service>

        <service id="office_brain_session_manager" class="OfficeBrain\Bundle\CoreBundle\Service\SessionManager" scope="request">
            <argument type="service" id="session" />
            <argument type="service" id="request"/>
        </service>
        
         <service id="office_brain_common_library" class="OfficeBrain\Bundle\CoreBundle\Service\OBCommon">
            <argument type="service" id="request" strict="false"/>
            <argument type="service" id="router" />
            <argument type="service" id="validator" />
            
        </service>
        
        <service id="office_brain_core_factory" class="OfficeBrain\Bundle\CoreBundle\Manager\Service\CoreService"/>

        <!--  strict changes of argument modify by jimis sir for common logic of country state and city -->
        <service id="office_brain_core_manager" class="OfficeBrain\Bundle\CoreBundle\Manager\Service\CoreService">
            <factory service="office_brain_core_factory" method="initFactory"/>
             <argument type="service" id="doctrine.orm.entity_manager"/>
             <argument type="service" id="request" strict="false"/>
             <argument type="service" id="office_brain_session_manager" strict="false"/>
             <argument>%subshop_media_upload_location%</argument>
             <argument>%country%</argument>
             <argument type="service" id="service_container" />
        </service>
        
        <service id="office_brain_paginator_helper_processor" class="%office_brain_paginator_helper_processor_class%">
            <argument type="service" id="templating.helper.router" />
            <argument type="service" id="translator" />
        </service>
        
        <service id="web.twig.fileexist.extension" class="OfficeBrain\Bundle\CoreBundle\TwigExtension\FileExistsExtension">             
             <tag name="twig.extension" />
        </service>
        
         <service id="web.twig.extension" class="OfficeBrain\Bundle\CoreBundle\TwigExtension\Extension">
             <argument type="service" id="office_brain_paginator_helper_processor" strict="false"/>
             <argument type="service" id="service_container" />
             <argument type="service" id="office_brain_core_manager" strict="false"/>
             <tag name="twig.extension" />
        </service>
        
        
        <service id="office_brain_currency_convesion_factory" class="%office_brain_currency_conversion.currency_conversion_manager%"/>

       	<service id="office_brain_currency_convesion_manager" class="%office_brain_currency_conversion.currency_conversion_manager%" scope='request'>
			<factory service="office_brain_currency_convesion_factory" method="initFactory"/>
            <argument type="service" id="doctrine.orm.entity_manager"/>
            <argument type="service" id="request"/>
       	</service>
        
		 <service id="office_brain_validation_manager" class="%office_brain_validation.office_brain_validation_manager%" scope='request'>
            <argument type="service" id="request"/>
            <argument type="service" id="translator" />
            <argument type="service" id="office_brain_product_detail_manager"/>
       	</service>
       	
       	 <service id="office_brain_core.api.subscriber" class="OfficeBrain\Bundle\CoreBundle\Event\ApiSubscriber" scope="request">
            <tag name="knp_paginator.subscriber" />
        </service>
       	
       	<service id="office_brain_ajax_listener" class="OfficeBrain\Bundle\CoreBundle\Listener\AjaxAuthenticationListener">
            <tag name='kernel.event_listener' event='kernel.exception' method='onCoreException' priority='1000'></tag>
        </service>
        
         <service id="office_brain_session_handler_redis" class="OfficeBrain\Bundle\CoreBundle\SessionHandler\NativeRedisSessionHandler">
       	 	<argument>%session_handler_redis_save_path%</argument>
        </service>       
       	
       	
       	<service id="office_brain_instance_operation_manager" class="OfficeBrain\Bundle\CoreBundle\Manager\Service\InstanceOperationManager">
       	 	<argument type="service" id="service_container" />
        </service>
        
    </services>
  
</container>
