<?xml version="1.0"?>
<!--
/**
 * Copyright © Zhik. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="dealerlocator" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
            <class>separator-top</class>
            <label>Dealer Locator</label>
            <tab>zhik_extensions</tab>
            <resource>Zhik_DealerLocator::configuration</resource>
            <group id="general" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>General Settings</label>
                <field id="enabled" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Dealer Locator</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="require_approval" translate="label comment" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Require Admin Approval</label>
                    <comment>If enabled, new locations must be approved by admin before becoming visible</comment>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="auto_approve" translate="label comment" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Auto-approve Updates</label>
                    <comment>Automatically approve updates to already approved locations</comment>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    <depends>
                        <field id="require_approval">1</field>
                    </depends>
                </field>
            </group>
            <group id="google_maps" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Google Maps Configuration</label>
                <field id="api_key" translate="label comment" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Google Maps API Key</label>
                    <frontend_model>Zhik\DealerLocator\Block\Adminhtml\System\Config\Field\ApiKey</frontend_model>
                    <comment><![CDATA[Get your API key from <a href="https://console.cloud.google.com/google/maps-apis" target="_blank">Google Cloud Console</a>. Required APIs: Maps JavaScript API, Places API, Geocoding API]]></comment>
                </field>
            </group>
            <group id="map" translate="label" type="text" sortOrder="25" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Map Display Settings</label>
                <field id="embed_code" translate="label comment" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Map Embed Code</label>
                    <frontend_model>Zhik\DealerLocator\Block\Adminhtml\System\Config\Field\EmbedCode</frontend_model>
                    <comment>Copy this iframe code to embed the dealer locator map on any website</comment>
                </field>
                <field id="default_latitude" translate="label comment" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Default Map Latitude</label>
                    <comment>Default center latitude for map display</comment>
                    <validate>validate-number</validate>
                </field>
                <field id="default_longitude" translate="label comment" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Default Map Longitude</label>
                    <comment>Default center longitude for map display</comment>
                    <validate>validate-number</validate>
                </field>
                <field id="default_zoom" translate="label comment" type="text" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Default Map Zoom</label>
                    <comment>Default zoom level (1-20)</comment>
                    <validate>validate-digits validate-digits-range digits-range-1-20</validate>
                </field>
                <field id="map_style" translate="label comment" type="textarea" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Google Maps Style JSON</label>
                    <comment><![CDATA[Custom map styling in JSON format. Generate styles at <a href="https://mapstyle.withgoogle.com/" target="_blank">Google Map Styling Wizard</a>. Leave empty for default style.]]></comment>
                    <frontend_model>Zhik\DealerLocator\Block\Adminhtml\System\Config\Field\MapStyle</frontend_model>
                </field>
                <field id="cluster_enabled" translate="label comment" type="select" sortOrder="60" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Marker Clustering</label>
                    <comment>Group nearby markers into clusters for better performance</comment>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="cluster_grid_size" translate="label comment" type="text" sortOrder="70" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Cluster Grid Size</label>
                    <comment>The grid size of a cluster in pixels (default: 60)</comment>
                    <validate>validate-digits validate-greater-than-zero</validate>
                    <depends>
                        <field id="cluster_enabled">1</field>
                    </depends>
                </field>
                <field id="cluster_min_size" translate="label comment" type="text" sortOrder="80" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Minimum Cluster Size</label>
                    <comment>Minimum number of markers to form a cluster (default: 3)</comment>
                    <validate>validate-digits validate-greater-than-zero</validate>
                    <depends>
                        <field id="cluster_enabled">1</field>
                    </depends>
                </field>
            </group>
            <group id="email" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Email Notifications</label>
                <field id="send_customer_notifications" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Send Customer Notifications</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="send_admin_notifications" translate="label" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Send Admin Notifications</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="admin_email" translate="label comment" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Admin Notification Email</label>
                    <comment>Email address to receive new submission notifications</comment>
                    <validate>validate-email</validate>
                    <depends>
                        <field id="send_admin_notifications">1</field>
                    </depends>
                </field>
                <field id="admin_new_submission_template" translate="label comment" type="select" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Admin New Submission Template</label>
                    <comment>Email template for notifying admin about new dealer location submissions</comment>
                    <source_model>Zhik\DealerLocator\Model\Config\Source\EmailTemplate</source_model>
                    <depends>
                        <field id="send_admin_notifications">1</field>
                    </depends>
                </field>
                <field id="customer_submission_confirmation_template" translate="label comment" type="select" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Customer Submission Confirmation Template</label>
                    <comment>Email template for confirming dealer location submission to customer</comment>
                    <source_model>Zhik\DealerLocator\Model\Config\Source\EmailTemplate</source_model>
                    <depends>
                        <field id="send_customer_notifications">1</field>
                    </depends>
                </field>
                <field id="customer_location_approved_template" translate="label comment" type="select" sortOrder="60" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Customer Location Approved Template</label>
                    <comment>Email template for notifying customer when their location is approved</comment>
                    <source_model>Zhik\DealerLocator\Model\Config\Source\EmailTemplate</source_model>
                    <depends>
                        <field id="send_customer_notifications">1</field>
                    </depends>
                </field>
                <field id="customer_location_rejected_template" translate="label comment" type="select" sortOrder="70" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Customer Location Rejected Template</label>
                    <comment>Email template for notifying customer when their location is rejected</comment>
                    <source_model>Zhik\DealerLocator\Model\Config\Source\EmailTemplate</source_model>
                    <depends>
                        <field id="send_customer_notifications">1</field>
                    </depends>
                </field>
            </group>
            <group id="fields" translate="label" type="text" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Field Configuration</label>
                <field id="hours_enabled" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Hours Field</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="hours_required" translate="label" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Hours Field Required</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    <depends>
                        <field id="hours_enabled">1</field>
                    </depends>
                </field>
                <field id="website_enabled" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Website Field</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="website_required" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Website Field Required</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    <depends>
                        <field id="website_enabled">1</field>
                    </depends>
                </field>
                <field id="description_enabled" translate="label" type="select" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Description Field</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="image_enabled" translate="label" type="select" sortOrder="60" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Image Upload</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
            </group>
            <group id="geolocation" translate="label" type="text" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>IP Geolocation</label>
                <field id="enabled" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable IP Geolocation</label>
                    <comment>Automatically detect user location based on IP address</comment>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="service" translate="label comment" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Geolocation Service</label>
                    <comment>Choose which IP geolocation service to use</comment>
                    <source_model>Zhik\DealerLocator\Model\Config\Source\GeolocationService</source_model>
                    <depends>
                        <field id="enabled">1</field>
                    </depends>
                </field>
                <field id="ipinfo_token" translate="label comment" type="obscure" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>IPInfo API Token</label>
                    <backend_model>Magento\Config\Model\Config\Backend\Encrypted</backend_model>
                    <comment><![CDATA[Required for IPInfo service. Get your token from <a href="https://ipinfo.io/signup" target="_blank">ipinfo.io</a>]]></comment>
                    <depends>
                        <field id="enabled">1</field>
                        <field id="service">ipinfo</field>
                    </depends>
                </field>
                <field id="default_radius" translate="label comment" type="text" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Default Search Radius (km)</label>
                    <comment>Default radius for location-based searches (e.g., 50)</comment>
                    <validate>validate-number validate-greater-than-zero</validate>
                    <depends>
                        <field id="enabled">1</field>
                    </depends>
                </field>
            </group>
        </section>
    </system>
</config>