<?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">

    <services>

        <service id="shopware_search_es.struct_hydrator" class="Shopware\Bundle\SearchBundleES\StructHydrator" />

        <service id="shopware_search_es.product_number_search_factory" class="Shopware\Bundle\SearchBundleES\DependencyInjection\Factory\ProductNumberSearchFactory">
            <argument type="collection" />
        </service>

        <service id="shopware_search_es.product_number_search" class="Shopware\Bundle\SearchBundleES\ProductNumberSearch">
            <factory service="shopware_search_es.product_number_search_factory" method="factory" />
            <argument type="service" id="service_container" />
        </service>

        <service id="shopware_search_es.search_term_query_builder" class="Shopware\Bundle\SearchBundleES\SearchTermQueryBuilder" />

        <service id="shopware_search_es.category_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\CategoryConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.similar_product_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\SimilarProductConditionHandler" >
            <argument type="service" id="dbal_connection" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.closeout_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\CloseoutConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.ordernumber_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\OrdernumberConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.customer_group_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\CustomerGroupConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.has_pseudo_price_condtion_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\HasPseudoPriceConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.is_new_condtion_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\IsNewConditionHandler" >
            <argument type="service" id="config" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.create_date_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\CreateDateConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.release_date_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\ReleaseDateConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.immediate_delivery_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\ImmediateDeliveryConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.manufacturer_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\ManufacturerConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.price_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\PriceConditionHandler" >
            <argument type="service" id="shopware_elastic_search.field_mapping" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.product_attribute_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\ProductAttributeConditionHandler" >
            <argument type="service" id="shopware_attribute.crud_service" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.property_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\PropertyConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.search_term_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\SearchTermConditionHandler" >
            <argument type="service" id="shopware_search_es.search_term_query_builder" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.shipping_free_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\ShippingFreeConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.vote_average_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\VoteAverageConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.sales_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\SalesConditionHandler" >
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.is_available_condition_handler" class="Shopware\Bundle\SearchBundleES\ConditionHandler\IsAvailableConditionHandler">
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.price_facet_handler" class="Shopware\Bundle\SearchBundleES\FacetHandler\PriceFacetHandler">
            <argument type="service" id="snippets" />
            <argument type="service" id="query_alias_mapper" />
            <argument type="service" id="shopware_elastic_search.field_mapping" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.manufacturer_facet_handler" class="Shopware\Bundle\SearchBundleES\FacetHandler\ManufacturerFacetHandler">
            <argument type="service" id="shopware_storefront.manufacturer_service" />
            <argument type="service" id="snippets" />
            <argument type="service" id="query_alias_mapper" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.property_facet_handler" class="Shopware\Bundle\SearchBundleES\FacetHandler\PropertyFacetHandler">
            <argument type="service" id="query_alias_mapper" />
            <argument type="service" id="shopware_elastic_search.client" />
            <argument type="service" id="dbal_connection" />
            <argument type="service" id="shopware_search_es.struct_hydrator" />
            <argument type="service" id="shopware_elastic_search.index_factory" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.shipping_free_facet_handler" class="Shopware\Bundle\SearchBundleES\FacetHandler\ShippingFreeFacetHandler">
            <argument type="service" id="snippets" />
            <argument type="service" id="query_alias_mapper" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.immediate_delivery_facet_handler" class="Shopware\Bundle\SearchBundleES\FacetHandler\ImmediateDeliveryFacetHandler">
            <argument type="service" id="snippets" />
            <argument type="service" id="query_alias_mapper" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.vote_average_facet_handler" class="Shopware\Bundle\SearchBundleES\FacetHandler\VoteAverageFacetHandler">
            <argument type="service" id="snippets" />
            <argument type="service" id="query_alias_mapper" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.product_attribute_facet_handler" class="Shopware\Bundle\SearchBundleES\FacetHandler\ProductAttributeFacetHandler">
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.category_facet_handler" class="Shopware\Bundle\SearchBundleES\FacetHandler\CategoryFacetHandler">
            <argument type="service" id="shopware_storefront.category_service" />
            <argument type="service" id="snippets" />
            <argument type="service" id="query_alias_mapper" />
            <argument type="service" id="dbal_connection" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.price_sorting_handler" class="Shopware\Bundle\SearchBundleES\SortingHandler\PriceSortingHandler">
            <argument type="service" id="shopware_elastic_search.field_mapping" />
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.popularity_sorting_handler" class="Shopware\Bundle\SearchBundleES\SortingHandler\PopularitySortingHandler">
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.product_attribute_sorting_handler" class="Shopware\Bundle\SearchBundleES\SortingHandler\ProductAttributeSortingHandler">
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.product_name_sorting_handler" class="Shopware\Bundle\SearchBundleES\SortingHandler\ProductNameSortingHandler">
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.release_date_sorting_handler" class="Shopware\Bundle\SearchBundleES\SortingHandler\ReleaseDateSortingHandler">
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.search_ranking_sorting_handler" class="Shopware\Bundle\SearchBundleES\SortingHandler\SearchRankingSortingHandler">
            <tag name="shopware_search_es.search_handler" />
        </service>

        <service id="shopware_search_es.service_subscriber" class="Shopware\Bundle\SearchBundleES\Subscriber\ServiceSubscriber">
            <argument type="service" id="service_container" />
            <tag name="shopware.event_subscriber" />
        </service>
    </services>
</container>
