<?xml version="1.0"?>
<!--
/**
 * Seizera Software.
 *
 * @category  Seizera
 * @package   Seizera_ItineraryObjects
 * @author    Seizera
 * @copyright Copyright (c) 2019 Seizera Software Private Limited (https://seizera.com)
 * @license   https://seizera.com/license.html
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">

    <preference for="Seizera\ItineraryObjects\Api\Data\HotelInterface" type="Seizera\ItineraryObjects\Model\Hotel" />

    <virtualType name="HotelGridFilterPool" type="Magento\Framework\View\Element\UiComponent\DataProvider\FilterPool">
        <arguments>
            <argument name="appliers" xsi:type="array">
                <item name="regular" xsi:type="object">Magento\Framework\View\Element\UiComponent\DataProvider\RegularFilter</item>
                <item name="fulltext" xsi:type="object">Magento\Framework\View\Element\UiComponent\DataProvider\FulltextFilter</item>
            </argument>
        </arguments>
    </virtualType>

    <virtualType name="ItineraryHotelDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider">
        <arguments>
            <argument name="collection" xsi:type="object" shared="false">Seizera\ItineraryObjects\Model\ResourceModel\Hotel\Grid\Collection</argument>
            <argument name="filterPool" xsi:type="object" shared="false">HotelGridFilterPool</argument>
        </arguments>
    </virtualType>

    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="itobj_hotel_listing_data_source" xsi:type="string">Seizera\ItineraryObjects\Model\ResourceModel\Hotel\Grid\Collection</item>
            </argument>
        </arguments>
    </type>

    <virtualType name="Seizera\ItineraryObjects\Model\ResourceModel\Hotel\Grid\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">itinerary_hotels</argument>
            <argument name="resourceModel" xsi:type="string">Seizera\ItineraryObjects\Model\ResourceModel\Hotel</argument>
        </arguments>
    </virtualType>

    <virtualType name="Seizera\ItineraryObjects\ImageUpload" type="Magento\Catalog\Model\ImageUploader">
        <arguments>
            <argument name="baseTmpPath" xsi:type="string">tmp/seizera_itineraryobjects</argument>
            <argument name="basePath" xsi:type="string">seizera_itineraryobjects</argument>
            <argument name="allowedExtensions" xsi:type="array">
                <item name="jpg" xsi:type="string">jpg</item>
                <item name="jpeg" xsi:type="string">jpeg</item>
                <item name="gif" xsi:type="string">gif</item>
                <item name="png" xsi:type="string">png</item>
            </argument>
        </arguments>
    </virtualType>

    <type name="Seizera\ItineraryObjects\Controller\Adminhtml\Post\Upload\Gallery">
        <arguments>
            <argument name="imageUploader" xsi:type="object">Seizera\ItineraryObjects\ImageUpload</argument>
        </arguments>
    </type>




    <!-- Days -->

    <preference for="Seizera\ItineraryObjects\Api\Data\DayInterface" type="Seizera\ItineraryObjects\Model\Day" />

    <virtualType name="DayGridFilterPool" type="Magento\Framework\View\Element\UiComponent\DataProvider\FilterPool">
        <arguments>
            <argument name="appliers" xsi:type="array">
                <item name="regular" xsi:type="object">Magento\Framework\View\Element\UiComponent\DataProvider\RegularFilter</item>
                <item name="fulltext" xsi:type="object">Magento\Framework\View\Element\UiComponent\DataProvider\FulltextFilter</item>
            </argument>
        </arguments>
    </virtualType>

    <virtualType name="ItineraryDayDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider">
        <arguments>
            <argument name="collection" xsi:type="object" shared="false">Seizera\ItineraryObjects\Model\ResourceModel\Day\Grid\Collection</argument>
            <argument name="filterPool" xsi:type="object" shared="false">DayGridFilterPool</argument>
        </arguments>
    </virtualType>

    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="itobj_day_listing_data_source" xsi:type="string">Seizera\ItineraryObjects\Model\ResourceModel\Day\Grid\Collection</item>
            </argument>
        </arguments>
    </type>

    <virtualType name="Seizera\ItineraryObjects\Model\ResourceModel\Day\Grid\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">itinerary_days</argument>
            <argument name="resourceModel" xsi:type="string">Seizera\ItineraryObjects\Model\ResourceModel\Day</argument>
        </arguments>
    </virtualType>

    <virtualType name="Seizera\ItineraryObjects\ImageUpload" type="Magento\Catalog\Model\ImageUploader">
        <arguments>
            <argument name="baseTmpPath" xsi:type="string">tmp/seizera_itineraryobjects</argument>
            <argument name="basePath" xsi:type="string">seizera_itineraryobjects</argument>
            <argument name="allowedExtensions" xsi:type="array">
                <item name="jpg" xsi:type="string">jpg</item>
                <item name="jpeg" xsi:type="string">jpeg</item>
                <item name="gif" xsi:type="string">gif</item>
                <item name="png" xsi:type="string">png</item>
            </argument>
        </arguments>
    </virtualType>

    <type name="Seizera\ItineraryObjects\Controller\Adminhtml\Post\Upload\Gallery">
        <arguments>
            <argument name="imageUploader" xsi:type="object">Seizera\ItineraryObjects\ImageUpload</argument>
        </arguments>
    </type>

</config>