<?php

namespace DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\Config;

use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\DataProvider\ExportMapperDataProvider;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\PriceCompareConfig;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Form\ExportMapperForm;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Integration\GpsrIntegration;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\AttributesProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\CategoryProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\IdProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\NameProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\ParentIdProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\PriceProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\SalePriceProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\RegularPriceProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\SkuProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\StockProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\ImagesProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\DescriptionProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\ShortDescriptionProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\EanProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\ResponsiblePersonField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\ResponsibleProducerField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\SafetyInformationProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Custom\UrlProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Service\Writer\XML\CustomXmlWriter;
class CustomXmlConfig implements PriceCompareConfig
{
    public const ID = 'xml';
    public const EXTENSION = 'xml';
    public function get_supported_extension(): string
    {
        return self::EXTENSION;
    }
    public function is_custom(): bool
    {
        return \true;
    }
    public function get_id(): string
    {
        return self::ID;
    }
    public function get_name(): string
    {
        return \esc_html__('Custom XML', 'dropshipping-export-free');
    }
    public function get_writer_class_name(): string
    {
        return CustomXmlWriter::class;
    }
    public function get_supported_fields(): array
    {
        $fields = [IdProductField::class, ParentIdProductField::class, NameProductField::class, PriceProductField::class, SalePriceProductField::class, RegularPriceProductField::class, SkuProductField::class, StockProductField::class, AttributesProductField::class, CategoryProductField::class, ImagesProductField::class, DescriptionProductField::class, ShortDescriptionProductField::class, EanProductField::class, UrlProductField::class];
        if (GpsrIntegration::is_active()) {
            $fields[] = ResponsiblePersonField::class;
            $fields[] = ResponsibleProducerField::class;
            $fields[] = SafetyInformationProductField::class;
        }
        return $fields;
    }
    public function get_mapper_template_name(): string
    {
        return 'Export/ExportMapper';
    }
    public function get_mapper_form_class(): string
    {
        return ExportMapperForm::class;
    }
    public function get_mapper_data_provider_class(): string
    {
        return ExportMapperDataProvider::class;
    }
}
