<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <!-- Override dei Blocks (e phtml all'interno) per integrare nella UI icone di compila scheda tecnica -->
    <preference for="Magento\Sales\Block\Order\Recent" type="Reply\Sales\Block\Order\Recent" />
    <preference for="Magento\Sales\Block\Order\History" type="Reply\Sales\Block\Order\History" />
    <!-- Block di sales_order_view items.phtml -->
    <preference for="Magento\Sales\Block\Order\Items" type="Reply\Sales\Block\Order\Items" />

    <!-- Plugin sul SessionData di Amasty_CustomForm per restituire al form della schedatecnica il
        dato precompilato e ritrovarselo a front-end dopo la richiesta ajax/POST -->
    <type name="Amasty\Customform\Controller\Form\SessionData">
        <plugin name="plugin-schedatecnica-amasty-sessiondata" type="Reply\SchedaTecnica\Plugin\Controller\Form\SessionData" sortOrder="1" disabled="false"/>
    </type>

    <!-- Plugin sul Creator amasty per aggiungere componenti custom (nella User Interface) al form creator senza piazzarli nel namespace originale -->
    <type name="Amasty\Customform\Block\Widget\Form\Renderer\Creator">
        <plugin name="plugin-schedatecnica-amasty-form-renderer-creator" type="Reply\SchedaTecnica\Plugin\Block\Widget\Form\Renderer\Creator" sortOrder="1" disabled="false"/>
    </type>

    <!--
        Override del blocco che genera il widget customform per includere all'interno del form l'order_id, il product_id e il customer_id.
        Il valore inviato nel form viene poi ricontrollato lato controller per verificarne la bontà tramite form_key e tramite associazione nel db dell'ordine
        al customer in arrivo.
    -->
    <preference for="Amasty\Customform\Block\Init" type="Reply\SchedaTecnica\Block\Init" />

    <!-- Override sul Model del submit per integrare la possibile assenza dei file nella POST dato che lato UI
        la cosa è gestita diversamente rispetto al form originale. Impossibile plugin perché getValidValue che integra l'upload dei file è private  -->
    <preference for="Amasty\Customform\Model\Submit" type="Reply\SchedaTecnica\Model\CustomForm\Submit" />

    <!-- Plugin sul controller della submit per alterare redirect post-submit su checkout e customer area -->
    <type name="Amasty\Customform\Controller\Form\Submit">
        <plugin name="plugin-schedatecnica-amasty-form-controller-form-submit"
            type="Reply\SchedaTecnica\Plugin\Controller\Form\Submit" sortOrder="1" disabled="false"/>
    </type>
    <type name="Amasty\Customform\Helper\Data">
        <plugin name="plugin-schedatecnica-amasty-helper-data"
                type="Reply\SchedaTecnica\Plugin\Data" sortOrder="1" disabled="false"/>
    </type>

    <!-- Entity SchedaTecnica -->
    <preference for="Reply\SchedaTecnica\Api\SchedaTecnicaRepositoryInterface" type="Reply\SchedaTecnica\Model\SchedaTecnicaRepository"/>
    <preference for="Reply\SchedaTecnica\Api\Data\SchedaTecnicaInterface" type="Reply\SchedaTecnica\Model\SchedaTecnica"/>
    <preference for="Reply\SchedaTecnica\Api\Data\SchedaTecnicaSearchResultsInterface" type="Magento\Framework\Api\SearchResults"/>
    <virtualType name="Reply\SchedaTecnica\Model\ResourceModel\SchedaTecnica\Grid\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">reply_schedatecnica_schedatecnica</argument>
            <argument name="resourceModel" xsi:type="string">Reply\SchedaTecnica\Model\ResourceModel\SchedaTecnica\Collection</argument>
        </arguments>
    </virtualType>
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="reply_schedatecnica_schedatecnica_listing_data_source" xsi:type="string">Reply\SchedaTecnica\Model\ResourceModel\SchedaTecnica\Grid\Collection</item>
            </argument>
        </arguments>
    </type>
</config>
