<?xml version="1.0"?>
<!--
/**
 * KiwiCommerce
 *
 * Do not edit or add to this file if you wish to upgrade to newer versions in the future.
 * If you wish to customize this module for your needs.
 * Please contact us https://kiwicommerce.co.uk/contacts.
 *
 * @category   KiwiCommerce
 * @package    KiwiCommerce_AdminActivity
 * @copyright  Copyright (C) 2018 Kiwi Commerce Ltd (https://kiwicommerce.co.uk/)
 * @license    https://kiwicommerce.co.uk/magento2-extension-license/
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">

    <!-- Create our type ActivityRepositoryInterface-->
    <preference for="KiwiCommerce\AdminActivity\Api\ActivityRepositoryInterface" type="KiwiCommerce\AdminActivity\Model\ActivityRepository" />
    <preference for="KiwiCommerce\AdminActivity\Api\LoginRepositoryInterface" type="KiwiCommerce\AdminActivity\Model\LoginRepository" />
    <preference for="KiwiCommerce\AdminActivity\Api\Data\ActivitySearchResultsInterface" type="Magento\Framework\Api\SearchResults" />

    <!-- Type for admin_activity_listing_data_source -->
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="admin_activity_listing_data_source" xsi:type="string">KiwiCommerce\AdminActivity\Model\ResourceModel\Grid\Activity\Collection</item>
                <item name="login_activity_listing_data_source" xsi:type="string">KiwiCommerce\AdminActivity\Model\ResourceModel\Grid\Login\Collection</item>
            </argument>
        </arguments>
    </type>

    <virtualType name="KiwiCommerce\AdminActivity\Model\ResourceModel\Grid\Activity\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">kiwicommerce_activity</argument>
            <argument name="resourceModel" xsi:type="string">KiwiCommerce\AdminActivity\Model\ResourceModel\Activity</argument>
        </arguments>
    </virtualType>

    <virtualType name="KiwiCommerce\AdminActivity\Model\ResourceModel\Grid\Login\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">kiwicommerce_login_activity</argument>
            <argument name="resourceModel" xsi:type="string">KiwiCommerce\AdminActivity\Model\ResourceModel\Login</argument>
        </arguments>
    </virtualType>

    <virtualType name="AAConfigReader" type="Magento\Framework\Config\Reader\Filesystem">
        <arguments>
            <argument name="converter" xsi:type="object">KiwiCommerce\AdminActivity\Model\Config\Converter</argument>
            <argument name="schemaLocator" xsi:type="object">KiwiCommerce\AdminActivity\Model\Config\SchemaLocator</argument>
            <argument name="fileName" xsi:type="string">adminactivity.xml</argument>
            <argument name="idAttributes" xsi:type="array">
                <item name="/config/modules/module" xsi:type="string">name</item>
            </argument>
        </arguments>
    </virtualType>

    <!-- AdminActivity Logger and Handler -->
    <type name="KiwiCommerce\AdminActivity\Logger\Handler">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
    <type name="KiwiCommerce\AdminActivity\Logger\Logger">
        <arguments>
            <argument name="name" xsi:type="string">adminactivityLogHandler</argument>
            <argument name="handlers"  xsi:type="array">
                <item name="system" xsi:type="object">KiwiCommerce\AdminActivity\Logger\Handler</item>
            </argument>
        </arguments>
    </type>

    <type name="KiwiCommerce\AdminActivity\Model\Config\Data">
        <arguments>
            <argument name="reader" xsi:type="object">AAConfigReader</argument>
            <argument name="cacheId" xsi:type="string">KiwiCommerce_admin_activity_cache</argument>
        </arguments>
    </type>
</config>