<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <!-- Manage Image sides -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\ImageSideRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\ImageSide\ImageSideRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\ImageSideInterface" 
        type="Brushyourideas\Productdesigner\Model\ImageSide\ImageSide"/>

    <!-- Manage Image Effects and Filters -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\ImageEffectsRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\ImageEffects\ImageEffectsRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\ImageEffectsInterface" 
        type="Brushyourideas\Productdesigner\Model\ImageEffects\ImageEffects"/>

    
    


    <!-- Product List Page -->
    <preference for="Magento\Catalog\Block\Product\ListProduct" 
        type="Brushyourideas\Productdesigner\Block\Product\ListProduct" />
    <!-- Product Detail Page -->
    <preference for="Magento\Catalog\Block\Product\View" 
        type="Brushyourideas\Productdesigner\Block\Product\View"/>




    <!--  Manage Masking  -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\MaskingRepositoryInterface" 
        type="Brushyourideas\Productdesigner\Model\Masking\MaskingRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\MaskingInterface" 
        type="Brushyourideas\Productdesigner\Model\Masking\Masking"/>

    <!--  DesignArea  -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\DesignAreaRepositoryInterface" 
        type="Brushyourideas\Productdesigner\Model\DesignArea\DesignAreaRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\DesignAreaInterface" 
        type="Brushyourideas\Productdesigner\Model\DesignArea\DesignArea"/>

    <preference 
        for="Magento\Catalog\Model\Product" 
        type="Brushyourideas\Productdesigner\Model\Rewrite\Catalog\Product" />
    
    <!--  DesignTemplates  -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\DesignTemplatesRepositoryInterface" 
        type="Brushyourideas\Productdesigner\Model\DesignTemplates\DesignTemplatesRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\DesignTemplatesInterface" 
        type="Brushyourideas\Productdesigner\Model\DesignTemplates\DesignTemplates"/>

    

    

    <!-- Artwork Category -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\ArtworksCategoryRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\ArtworksCategory\ArtworksCategoryRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\ArtworksCategoryInterface" 
        type="Brushyourideas\Productdesigner\Model\ArtworksCategory\ArtworksCategory"/>
    
    <!-- Artwork -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\ArtworksRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\Artworks\ArtworksRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\ArtworksInterface" 
        type="Brushyourideas\Productdesigner\Model\Artworks\Artworks"/>
        
     <!-- Background Images -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\BackgroundImagesRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\BackgroundImages\BackgroundImagesRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\BackgroundImagesInterface" 
        type="Brushyourideas\Productdesigner\Model\BackgroundImages\BackgroundImages"/>
        
    <!-- Background Image Category -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\BackgroundImagesCategoryRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\BackgroundImagesCategory\BackgroundImagesCategoryRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\BackgroundImagesCategoryInterface" 
        type="Brushyourideas\Productdesigner\Model\BackgroundImagesCategory\BackgroundImagesCategory"/>

        <!--  DesignTemplatesImport  -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\DesignTemplatesImportRepositoryInterface" 
        type="Brushyourideas\Productdesigner\Model\DesignTemplatesImport\DesignTemplatesImportRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\DesignTemplatesImportInterface" 
        type="Brushyourideas\Productdesigner\Model\DesignTemplatesImport\DesignTemplatesImport"/>
    <!-- Product crosssell cart products save -->

    <!-- svgstatus in sales order -->
    <preference for="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" 
        type="Brushyourideas\Productdesigner\Block\Adminhtml\Items\Column\DefaultColumn" />
    
    <!-- remove by GB: More such product section -->

   <!-- START : CUSTOM_ERROR_LOGGER -->
    <type name="Brushyourideas\Productdesigner\Model\Importexport\Logger\Handler">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
    <type name="Brushyourideas\Productdesigner\Model\Importexport\Logger\Logger">
        <arguments>
            <argument name="name" xsi:type="string">customErrorLogger</argument>            <argument name="handlers"  xsi:type="array">
                <item name="system" xsi:type="object">Brushyourideas\Productdesigner\Model\Importexport\Logger\Handler</item>
            </argument>
        </arguments>
    </type>
    <!-- END : CUSTOM_ERROR_LOGGER -->

    <!-- START : PRODUCTDESIGNER_CUSTOM_ERROR_LOGGER -->
    <type name="Brushyourideas\Productdesigner\Logger\Handler">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
    <type name="Brushyourideas\Productdesigner\Logger\Logger">
        <arguments>
            <argument name="name" xsi:type="string">productdesignerErrorLog</argument>
            <argument name="handlers"  xsi:type="array">
                <item name="system" xsi:type="object">Brushyourideas\Productdesigner\Logger\Handler</item>
            </argument>
        </arguments>
    </type>
    <!-- END : PRODUCTDESIGNER_CUSTOM_ERROR_LOGGER -->
    <!-- Manage Shapes -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\ShapesRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\Shapes\ShapesRepository"/>
    <preference 
        for="Brushyourideas\Productdesigner\Api\Data\ShapesInterface" 
        type="Brushyourideas\Productdesigner\Model\Shapes\Shapes"/>

    <!-- Frame Category -->
    <preference
        for="Brushyourideas\Productdesigner\Api\FrameCategoryRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\FrameCategory\FrameCategoryRepository"/>
    <preference
        for="Brushyourideas\Productdesigner\Api\Data\FrameCategoryInterface"
        type="Brushyourideas\Productdesigner\Model\FrameCategory\FrameCategory"/>

    <!-- Frame -->
    <preference
        for="Brushyourideas\Productdesigner\Api\FrameRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\Frame\FrameRepository"/>
    <preference
        for="Brushyourideas\Productdesigner\Api\Data\FrameInterface"
        type="Brushyourideas\Productdesigner\Model\Frame\Frame"/>
    <!-- * Changed BY: GB
    * reorder changes
    * Start -->
    <type name="Magento\Sales\Controller\AbstractController\Reorder">
        <plugin name="product_reorder" type="Brushyourideas\Productdesigner\Plugin\Reorder" />
    </type>
    <!-- * Changed BY: GB
    * reorder changes
    * End -->
    <!-- getConfigurableAttributeCollection error solution when override catalog modal-->
    <preference for="Magento\ConfigurableProduct\Helper\Product\Options\Loader"
                type="Brushyourideas\Productdesigner\Helper\Product\Options\Loader"/>

     <!-- <preference for="Brushyourideas\Productdesigner\Api\CustomApiInterface" type="Brushyourideas\Productdesigner\Model\CustomApi" /> -->
     
    <preference for="Brushyourideas\Productdesigner\Api\BusinessApiInterface" type="Brushyourideas\Productdesigner\Model\BusinessApi"/>
    
     <preference for="Brushyourideas\Productdesigner\Api\BusinessextApiInterface" type="Brushyourideas\Productdesigner\Model\BusinessextApi"/>

    <!-- Start By HV : Third-party cookie is blocked in Chrome as part of Privacy Sandbox : Issue fixed -->
     <type name="Magento\Framework\Stdlib\Cookie\PhpCookieManager">
        <arguments>
            <argument name="metadataProcessor" xsi:type="object">Brushyourideas\Productdesigner\Cookie\SameSiteProcessor</argument>
        </arguments>
    </type>
    <!-- End By HV : Third-party cookie is blocked in Chrome as part of Privacy Sandbox : Issue fixed -->
    <!-- Currency change -->
    <type name="Magento\Directory\Controller\Currency\SwitchAction">
        <plugin name="brushyourideas-productdesigner-update-quote-items-currency-change"
                type="Brushyourideas\Productdesigner\Plugin\UpdateQuoteItemsOnCurrencyChange"
                sortOrder="10"
                disabled="false"
        />
    </type>

    <type name="Magento\Framework\App\Request\CsrfValidator">
        <plugin name="custom_csrf_plugin" type="Brushyourideas\Productdesigner\Plugin\CsrfValidatorPlugin"/>
    </type>

    <!-- Added By SG : Override from the core module -->
    <preference for="Printxpand\Core\Helper\Import" type="Brushyourideas\Productdesigner\Helper\Import" />

    <preference for="Printxpand\Core\Helper\Data" type="Brushyourideas\Productdesigner\Helper\Data" />
    
    <preference for="Printxpand\Core\Helper\Info" type="Brushyourideas\Productdesigner\Helper\Info" />

    <!-- Added By HV : Override from the core module -->
    <preference for="Printxpand\Core\Console\Sampledata" type="Brushyourideas\Productdesigner\Console\Sampledata" />

    <preference for="Printxpand\Core\Queue\Consumer" type="Brushyourideas\Productdesigner\Queue\Consumer" />
    <preference for="Printxpand\Core\Model\Producer" type="Brushyourideas\Productdesigner\Model\Producer" />

    <!--Project Id -->
    <preference 
        for="Brushyourideas\Productdesigner\Api\ProjectidApiInterface" 
        type="Brushyourideas\Productdesigner\Model\ProjectidApi"/>

    <preference
        for="Brushyourideas\Productdesigner\Api\Data\ProjectidInterface"
        type="Brushyourideas\Productdesigner\Model\Projectid\Projectid"/>
    <preference
        for="Brushyourideas\Productdesigner\Api\ProjectidRepositoryInterface"
        type="Brushyourideas\Productdesigner\Model\Projectid\ProjectidRepository"/>
    <preference for="Brushyourideas\Productdesigner\Api\Headless\Customer\CustomerRepositoryInterface"
            type="Brushyourideas\Productdesigner\Model\Headless\Customer\CustomerRepository" />
    <!-- Ar Api -->
    <preference for="Brushyourideas\Productdesigner\Api\GenerateQrForArApiInterface" type="Brushyourideas\Productdesigner\Model\GenerateQrForArModel"/>

<preference
        for="Magento\Framework\View\Element\Html\Calendar"
        type="Brushyourideas\Productdesigner\Framework\View\Element\Html\Calendar"/>    
</config>
