<?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="env(SHOPWARE_ADMINISTRATION_PATH_NAME)">admin</parameter>
        <parameter key="shopware_administration.path_name">%env(resolve:SHOPWARE_ADMINISTRATION_PATH_NAME)%</parameter>
    </parameters>

    <services>
        <service id="Shopware\Administration\Controller\AdminExtensionApiController" public="true">
            <argument type="service" id="Shopware\Core\Framework\App\ActionButton\Executor"/>
            <argument type="service" id="Shopware\Core\Framework\App\ShopId\ShopIdProvider"/>
            <argument type="service" id="app.repository"/>
            <argument type="service" id="Shopware\Core\Framework\App\Hmac\QuerySigner"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Administration\Controller\AdministrationController"
                 public="true">
            <argument type="service" id="Shopware\Core\Framework\Adapter\Twig\TemplateFinder"/>
            <argument type="service" id="Shopware\Core\Framework\Store\Services\FirstRunWizardService"/>
            <argument type="service" id="Shopware\Administration\Snippet\SnippetFinder"/>
            <argument>%kernel.supported_api_versions%</argument>
            <argument type="service" id="Shopware\Administration\Framework\Routing\KnownIps\KnownIpsCollector"/>
            <argument type="service" id="Doctrine\DBAL\Connection"/>
            <argument type="service" id="event_dispatcher"/>
            <argument>%kernel.shopware_core_dir%</argument>
            <argument type="service" id="customer.repository"/>
            <argument type="service" id="currency.repository"/>
            <argument type="service" id="Shopware\Core\Framework\Util\HtmlSanitizer"/>
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\DefinitionInstanceRegistry"/>
            <argument type="service" id="parameter_bag"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="shopware.filesystem.asset"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Administration\Controller\AdminSearchController" public="true">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Search\RequestCriteriaBuilder"/>
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\DefinitionInstanceRegistry"/>
            <argument type="service" id="Shopware\Administration\Service\AdminSearcher"/>
            <argument type="service" id="serializer"/>
            <argument type="service" id="Shopware\Core\Framework\Api\Acl\AclCriteriaValidator"/>
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\DefinitionInstanceRegistry"/>
            <argument type="service" id="Shopware\Core\Framework\Api\Serializer\JsonEntityEncoder"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Administration\Controller\UserConfigController" public="true">
            <argument type="service" id="user_config.repository"/>
            <argument type="service" id="Doctrine\DBAL\Connection"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Administration\Controller\AdminProductStreamController"
                 public="true">
            <argument type="service" id="Shopware\Core\Content\Product\ProductDefinition"/>
            <argument type="service" id="sales_channel.product.repository"/>
            <argument type="service" id="Shopware\Core\System\SalesChannel\Context\SalesChannelContextService"/>
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Search\RequestCriteriaBuilder"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Administration\Controller\AdminTagController"
                 public="true">
            <argument type="service" id="Shopware\Core\System\Tag\Service\FilterTagIdsService"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Administration\Controller\NotificationController" public="true">
            <argument type="service" id="shopware.rate_limiter"/>
            <argument type="service" id="Shopware\Administration\Notification\NotificationService"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Administration\Notification\NotificationService" public="true">
            <argument type="service" id="notification.repository"/>
        </service>

        <service id="Shopware\Administration\Notification\Subscriber\UpdateSubscriber">
            <argument type="service" id="Shopware\Administration\Notification\NotificationService" />
            <tag name="kernel.event_subscriber"/>
        </service>

        <service id="Shopware\Administration\Service\AdminSearcher">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\DefinitionInstanceRegistry"/>
        </service>

        <service id="Shopware\Administration\Framework\Routing\AdministrationRouteScope">
            <argument>%shopware_administration.path_name%</argument>
            <tag name="shopware.route_scope"/>
        </service>

        <service id="Shopware\Administration\Snippet\AppAdministrationSnippetDefinition">
            <tag name="shopware.entity.definition"/>
        </service>

        <service id="Shopware\Administration\Snippet\AppAdministrationSnippetPersister">
            <argument type="service" id="app_administration_snippet.repository"/>
            <argument type="service" id="locale.repository"/>
            <argument type="service" id="Shopware\Core\Framework\Adapter\Cache\CacheInvalidator"/>
        </service>

        <service id="Shopware\Administration\Snippet\SnippetFinder">
            <argument type="service" id="kernel" />
            <argument type="service" id="Doctrine\DBAL\Connection"/>
        </service>

        <service id="Shopware\Administration\Snippet\CachedSnippetFinder" decorates="Shopware\Administration\Snippet\SnippetFinder">
            <argument type="service" id="Shopware\Administration\Snippet\CachedSnippetFinder.inner" />
            <argument type="service" id="cache.object" />
        </service>

        <service id="Shopware\Administration\Framework\Routing\KnownIps\KnownIpsCollector"/>

        <service id="Shopware\Administration\Notification\NotificationDefinition">
            <tag name="shopware.entity.definition"/>
        </service>

        <service id="Shopware\Administration\Notification\Extension\IntegrationExtension">
            <tag name="shopware.entity.extension"/>
        </service>

        <service id="Shopware\Administration\Notification\Extension\UserExtension">
            <tag name="shopware.entity.extension"/>
        </service>

        <service id="Shopware\Administration\System\SalesChannel\Subscriber\SalesChannelUserConfigSubscriber">
            <argument type="service" id="user_config.repository" />
            <tag name="kernel.event_subscriber"/>
        </service>

        <service id="Shopware\Administration\Dashboard\OrderAmountService">
            <argument type="service" id="Doctrine\DBAL\Connection"/>
            <argument type="service" id="Shopware\Core\Checkout\Cart\Price\CashRounding"/>
            <argument>%shopware.dbal.time_zone_support_enabled%</argument>
        </service>

        <service id="Shopware\Administration\Controller\DashboardController" public="true">
            <argument type="service" id="Shopware\Administration\Dashboard\OrderAmountService"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

    </services>
</container>
