<?php

namespace BWDK\Admin;

use BWDK\Integrations\Digify\Client;
use BWDK\Support\Constant;
use WP_Error;

class SettingsPage
{
    const OPTION_GROUP = 'bwdk_settings';
    const OPTION_NAME  = Constant::BWDK_OPTION_NAME;
    const PAGE_SLUG    = 'buy-with-digikala';

    public function register(): void
    {
        add_action('admin_menu', [$this, 'addMenuPage']);
        add_action('admin_init', [$this, 'registerSettings']);
    }

    public function addMenuPage(): void
    {
        global $admin_page_hooks;
        add_menu_page(
            __('خرید با دیجی‌کالا', 'bwdk'),
            __('خرید با دیجی‌کالا', 'bwdk'),
            'manage_options',
            'bwdk',
            [$this, 'bwdk_home_page_render'],
            BWDK_ADMIN_IMG . 'bwdk-icon.svg',
            56
        );

        $admin_page_hooks["bwdk"]="bwdk";

        add_submenu_page(
            'bwdk',
            'داشبورد خرید با دیجی‌کالا',
            'داشبورد',
            'manage_options',
            'bwdk',
            [$this, 'bwdk_home_page_render'],
            0
        );


        add_submenu_page(
            'bwdk',
            'تنظیمات اتصال',
            'تنظیمات',
            'manage_options',
            'bwdk-setting',
            [$this, 'bwdk_setting_page_render'],
            1
        );
    }

    public function registerSettings(): void
    {
        register_setting(self::OPTION_GROUP, self::OPTION_NAME, [$this, 'validateSettings']);

        add_settings_section(
            'bwdk_main_section',
            'تنظیمات اصلی',
            fn() => print '<p>پارامترهای اتصال به دیجی‌کالا را وارد کنید.</p>',
            'bwdk-setting'
        );

        add_settings_field(
            'api_token',
            'توکن API دیجی‌کالا',
            [$this, 'renderTokenField'],
            'bwdk-setting',
            'bwdk_main_section'
        );
    }

    public function validateSettings( $input){


         $API=$input["api"]["api-key"]??0;
         if ($API){
             $isvalid=(new Client())->merchantsAuthStatus($API);


             if (!$isvalid){
                 $input["api"]["api-key-status"] = "احراز هویت ناموفق";
             }
             else{
                 $input["api"]["api-key-status"] = "";
             }
         }


        return $input;
    }

    public function renderTokenField(): void
    {
        $options = get_option(self::OPTION_NAME);

        $token = $options['api_token'] ?? '';

        echo "<input type='text' name='" . self::OPTION_NAME . "[api_token]' value='" . esc_attr($token) . "' class='regular-text' />";
    }

    public function bwdk_home_page_render(): void
    {
        require BWDK_ADMIN_TEMPLATE . 'home.php';
    }

    public function bwdk_setting_page_render(): void
    {
        require BWDK_ADMIN_TEMPLATE . 'setting.php';
    }
}
