<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <!-- admin grid of the subscribers -->
    <virtualType name="AutogedalBlackFridaySubscriberGridCollection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">autogedal_blackfriday_subscriber</argument>
            <argument name="resourceModel" xsi:type="string">Autogedal\BlackFriday\Model\ResourceModel\Subscriber</argument>
        </arguments>
    </virtualType>
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="autogedal_blackfriday_subscriber_listing_data_source" xsi:type="string">AutogedalBlackFridaySubscriberGridCollection</item>
            </argument>
        </arguments>
    </type>

    <type name="Magento\Framework\Console\CommandListInterface">
        <arguments>
            <argument name="commands" xsi:type="array">
                <item name="autogedal_blackfriday_send_launch_emails" xsi:type="object">Autogedal\BlackFriday\Console\Command\SendLaunchEmails</item>
            </argument>
        </arguments>
    </type>
    <!-- frontend links in the email also when sent from admin (test email), where UrlInterface is the backend one -->
    <type name="Autogedal\BlackFriday\Model\LaunchMailer">
        <arguments>
            <argument name="urlBuilder" xsi:type="object">Magento\Framework\Url</argument>
        </arguments>
    </type>
    <type name="Autogedal\BlackFriday\Console\Command\SendLaunchEmails">
        <arguments>
            <argument name="mailer" xsi:type="object">Autogedal\BlackFriday\Model\LaunchMailer\Proxy</argument>
        </arguments>
    </type>

    <!-- area dependent services: built only when used (CLI and cron start without an area) -->
    <type name="Autogedal\BlackFriday\Model\ProductProvider">
        <arguments>
            <argument name="imageHelper" xsi:type="object">Magento\Catalog\Helper\Image\Proxy</argument>
            <!-- extra car filters per category (category id => attribute code => label / "all" text), offered once
                 the model is chosen: tow hitches, floor mats, boot liners -->
            <argument name="tabFilters" xsi:type="array">
                <item name="59" xsi:type="array">
                    <item name="auto_body" xsi:type="array">
                        <item name="label" xsi:type="string">Caroserie</item>
                        <item name="all" xsi:type="string">Toate caroseriile</item>
                    </item>
                    <item name="auto_from_to" xsi:type="array">
                        <item name="label" xsi:type="string">An fabricație</item>
                        <item name="all" xsi:type="string">Toți anii</item>
                    </item>
                </item>
                <item name="2058" xsi:type="array">
                    <item name="auto_from_to_covorase" xsi:type="array">
                        <item name="label" xsi:type="string">An fabricație</item>
                        <item name="all" xsi:type="string">Toți anii</item>
                    </item>
                </item>
                <!-- Bare Transversale Green Valley -->
                <item name="2161" xsi:type="array">
                    <item name="auto_body_bare" xsi:type="array">
                        <item name="label" xsi:type="string">Caroserie</item>
                        <item name="all" xsi:type="string">Toate caroseriile</item>
                    </item>
                    <item name="auto_from_to_bare" xsi:type="array">
                        <item name="label" xsi:type="string">An fabricație</item>
                        <item name="all" xsi:type="string">Toți anii</item>
                    </item>
                </item>
                <!-- Paravanturi Auto -->
                <item name="2168" xsi:type="array">
                    <item name="auto_from_to_paravanturi" xsi:type="array">
                        <item name="label" xsi:type="string">An fabricație</item>
                        <item name="all" xsi:type="string">Toți anii</item>
                    </item>
                </item>
                <!-- Scuturi Metalice Auto -->
                <item name="1180" xsi:type="array">
                    <item name="auto_from_to_scuturi" xsi:type="array">
                        <item name="label" xsi:type="string">An fabricație</item>
                        <item name="all" xsi:type="string">Toți anii</item>
                    </item>
                </item>
                <item name="2072" xsi:type="array">
                    <item name="auto_body" xsi:type="array">
                        <item name="label" xsi:type="string">Caroserie</item>
                        <item name="all" xsi:type="string">Toate caroseriile</item>
                    </item>
                    <item name="auto_from_to" xsi:type="array">
                        <item name="label" xsi:type="string">An fabricație</item>
                        <item name="all" xsi:type="string">Toți anii</item>
                    </item>
                </item>
            </argument>
        </arguments>
    </type>

    <!-- CF-Connecting-IP is trusted only from these proxies (Cloudflare, https://www.cloudflare.com/ips/ - update if
         Cloudflare changes them); any other request uses REMOTE_ADDR -->
    <type name="Autogedal\BlackFriday\Model\RateLimiter">
        <arguments>
            <argument name="trustedProxies" xsi:type="array">
                <item name="cf1" xsi:type="string">173.245.48.0/20</item>
                <item name="cf2" xsi:type="string">103.21.244.0/22</item>
                <item name="cf3" xsi:type="string">103.22.200.0/22</item>
                <item name="cf4" xsi:type="string">103.31.4.0/22</item>
                <item name="cf5" xsi:type="string">141.101.64.0/18</item>
                <item name="cf6" xsi:type="string">108.162.192.0/18</item>
                <item name="cf7" xsi:type="string">190.93.240.0/20</item>
                <item name="cf8" xsi:type="string">188.114.96.0/20</item>
                <item name="cf9" xsi:type="string">197.234.240.0/22</item>
                <item name="cf10" xsi:type="string">198.41.128.0/17</item>
                <item name="cf11" xsi:type="string">162.158.0.0/15</item>
                <item name="cf12" xsi:type="string">104.16.0.0/13</item>
                <item name="cf13" xsi:type="string">104.24.0.0/14</item>
                <item name="cf14" xsi:type="string">172.64.0.0/13</item>
                <item name="cf15" xsi:type="string">131.0.72.0/22</item>
                <item name="cf16" xsi:type="string">2400:cb00::/32</item>
                <item name="cf17" xsi:type="string">2606:4700::/32</item>
                <item name="cf18" xsi:type="string">2803:f800::/32</item>
                <item name="cf19" xsi:type="string">2405:b500::/32</item>
                <item name="cf20" xsi:type="string">2405:8100::/32</item>
                <item name="cf21" xsi:type="string">2a06:98c0::/29</item>
                <item name="cf22" xsi:type="string">2c0f:f248::/32</item>
            </argument>
        </arguments>
    </type>
</config>
