<?xml version="1.0"?>
<!--
/**
 * @license http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 * @author Benjamin Houillon <bhouillon@kaliop.com>
 * @copyright Copyright (c) 2019 Kaliop Digital Commerce (https://digitalcommerce.kaliop.com/)
 */
  -->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Kaliop\TopBanner\Api\Data\TopBannerInterface" type="Kaliop\TopBanner\Model\TopBanner" />
    <preference for="Kaliop\TopBanner\Api\Data\TopBannerSearchResultsInterface" type="Magento\Framework\Api\SearchResults" />
    <preference for="Kaliop\TopBanner\Api\TopBannerRepositoryInterface" type="Kaliop\TopBanner\Model\TopBannerRepository" />
    <type name="Magento\Framework\EntityManager\MetadataPool">
        <arguments>
            <argument name="metadata" xsi:type="array">
                <item name="Kaliop\TopBanner\Api\Data\TopBannerInterface" xsi:type="array">
                    <item name="entityTableName" xsi:type="string">kp_top_banner</item>
                    <item name="identifierField" xsi:type="string">top_banner_id</item>
                </item>
            </argument>
        </arguments>
    </type>
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="top_banner_listing_data_source" xsi:type="string">Kaliop\TopBanner\Model\ResourceModel\TopBanner\Grid\Collection</item>
            </argument>
        </arguments>
    </type>
    <type name="Kaliop\TopBanner\Model\ResourceModel\TopBanner\Grid\Collection">
        <arguments>
            <argument name="mainTable" xsi:type="string">kp_top_banner</argument>
            <argument name="eventPrefix" xsi:type="string">top_banner_grid_collection</argument>
            <argument name="eventObject" xsi:type="string">top_banner_grid_collection</argument>
            <argument name="resourceModel" xsi:type="string">Kaliop\TopBanner\Model\ResourceModel\TopBanner</argument>
        </arguments>
    </type>
    <type name="Magento\Framework\EntityManager\HydratorPool">
        <arguments>
            <argument name="hydrators" xsi:type="array">
                <item name="Kaliop\TopBanner\Api\Data\TopBannerInterface" xsi:type="string">Magento\Framework\EntityManager\AbstractModelHydrator</item>
            </argument>
        </arguments>
    </type>
    <type name="Magento\Framework\Model\Entity\RepositoryFactory">
        <arguments>
            <argument name="entities" xsi:type="array">
                <item name="Kaliop\TopBanner\Api\Data\TopBannerInterface" xsi:type="string">Kaliop\TopBanner\Api\TopBannerRepositoryInterface</item>
            </argument>
        </arguments>
    </type>
    <type name="Kaliop\TopBanner\Model\TopBannerRepository">
        <arguments>
            <argument name="collectionProcessor" xsi:type="object">Kaliop\TopBanner\Model\Api\SearchCriteria\TopBannerCollectionProcessor</argument>
        </arguments>
    </type>
    <virtualType name="Kaliop\TopBanner\Model\Api\SearchCriteria\CollectionProcessor\TopBannerFilterProcessor" type="Magento\Framework\Api\SearchCriteria\CollectionProcessor\FilterProcessor">
        <arguments>
            <argument name="customFilters" xsi:type="array">
                <item name="store_id" xsi:type="object">Kaliop\TopBanner\Model\Api\SearchCriteria\CollectionProcessor\FilterProcessor\TopBannerStoreFilter</item>
            </argument>
        </arguments>
    </virtualType>
    <virtualType name="Kaliop\TopBanner\Model\Api\SearchCriteria\TopBannerCollectionProcessor" type="Magento\Framework\Api\SearchCriteria\CollectionProcessor">
        <arguments>
            <argument name="processors" xsi:type="array">
                <item name="filters" xsi:type="object">Kaliop\TopBanner\Model\Api\SearchCriteria\CollectionProcessor\TopBannerFilterProcessor</item>
                <item name="sorting" xsi:type="object">Magento\Framework\Api\SearchCriteria\CollectionProcessor\SortingProcessor</item>
                <item name="pagination" xsi:type="object">Magento\Framework\Api\SearchCriteria\CollectionProcessor\PaginationProcessor</item>
            </argument>
        </arguments>
    </virtualType>
    <type name="Magento\Framework\EntityManager\Operation\ExtensionPool">
        <arguments>
            <argument name="extensionActions" xsi:type="array">
                <item name="Kaliop\TopBanner\Api\Data\TopBannerInterface" xsi:type="array">
                    <item name="read" xsi:type="array">
                        <item name="storeReader" xsi:type="string">Kaliop\TopBanner\Model\ResourceModel\TopBanner\Relation\Store\ReadHandler</item>
                    </item>
                    <item name="create" xsi:type="array">
                        <item name="storeCreator" xsi:type="string">Kaliop\TopBanner\Model\ResourceModel\TopBanner\Relation\Store\SaveHandler</item>
                    </item>
                    <item name="update" xsi:type="array">
                        <item name="storeUpdater" xsi:type="string">Kaliop\TopBanner\Model\ResourceModel\TopBanner\Relation\Store\SaveHandler</item>
                    </item>
                </item>
            </argument>
        </arguments>
    </type>
</config>