<?php
/**
 * Update Configuration API
 * 
 * Handles configuration updates and password changes via AJAX.
 */
// Addressing PHPSESSID SameSite rejection
session_set_cookie_params([
    'lifetime' => 0,
    'path' => '/',
    'domain' => '',
    'secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
    'httponly' => true,
    'samesite' => 'Lax'
]);
session_start();
require_once('../libs/classes/DbPathsArray.php');
require_once('../libs/classes/App_DB.php');
require_once('../libs/classes/MyMethods.php');
$crud = new App_DB(DBU::$dba_user);
$method = new MyMethods();

$response = ['success' => false, 'message' => 'نامعلوم غلطی پیش آئی۔'];

if (!isset($_SESSION['userid'])) {
    $response['message'] = 'غیر مجاز رسائی (Unauthorized)';
    echo json_encode($response);
    exit;
}

$action = $_POST['action'] ?? '';

if ($action === 'updateConfig') {
    $data = [
        'M_Name' => $_POST['M_Name'] ?? '',
        'M_Address' => $_POST['M_Address'] ?? '',
        'P_Number' => $_POST['P_Number'] ?? '',
        'Reg_Number' => $_POST['Reg_Number'] ?? '',
        'Mohtamim' => $_POST['Mohtamim'] ?? '',
        'Cell' => $_POST['Cell'] ?? '',
        'E_Address' => $_POST['E_Address'] ?? ''
    ];

    try {
        // Build update SQL with named parameters
        $sql = "UPDATE config SET 
                M_Name = :M_Name, 
                M_Address = :M_Address, 
                P_Number = :P_Number, 
                Reg_Number = :Reg_Number, 
                Mohtamim = :Mohtamim, 
                Cell = :Cell, 
                E_Address = :E_Address,
                tinymce_api_key = :tinymce_api_key
                WHERE id = 1";

        $data['tinymce_api_key'] = $_POST['tinymce_api_key'] ?? '';

        if ($crud->dbQuery($sql, $data)) {
            // Update Front-Page setting
            $frontpage_enabled = isset($_POST['frontpage_enabled']) ? '1' : '0';
            $crud->dbQuery("INSERT INTO cms_settings (setting_key, setting_value) VALUES ('frontpage_enabled', :val) 
                            ON DUPLICATE KEY UPDATE setting_value = :val", ['val' => $frontpage_enabled]);

            if (isset($_POST['gemini_api_key'])) {
                $gemini_key = $_POST['gemini_api_key'];
                $crud->dbQuery("INSERT INTO cms_settings (setting_key, setting_value) VALUES ('gemini_api_key', :val) 
                                ON DUPLICATE KEY UPDATE setting_value = :val", ['val' => $gemini_key]);
            }

            $response = ['success' => true, 'message' => 'کنفیگریشن کامیابی سے اپڈیٹ ہوگئی۔'];
        } else {
            $response['message'] = 'ڈیٹا بیس اپڈیٹ کرنے میں غلطی ہوئی۔';
        }
    } catch (Exception $e) {
        $response['message'] = 'سسٹم کی غلطی: ' . $e->getMessage();
    }
} elseif ($action === 'changePassword') {
    $oldKey = $_POST['oldKey'] ?? '';
    $newKey = $_POST['newKey'] ?? '';
    $cNewKey = $_POST['cNewKey'] ?? '';

    if (empty($oldKey) || empty($newKey)) {
        $response['message'] = 'تمام فیلڈز پُر کریں۔';
    } elseif ($newKey !== $cNewKey) {
        $response['message'] = 'پاس ورڈ ایک جیسے نہیں ہیں۔';
    } elseif (strlen($newKey) < 8) {
        $response['message'] = 'پاس ورڈ کم از کم 8 حروف پر مشتمل ہونا چاہیے۔';
    } else {
        try {
            // Fetch current password hash
            $sql = "SELECT userkey FROM login WHERE userid = :userid";
            $userData = $crud->getRecordFilled($sql, ['userid' => $_SESSION['userid']]);

            if (!empty($userData)) {
                $currentHash = $userData['userkey'];

                // Verify old password (with fallback for legacy plaintext)
                if ($method->verify_user($oldKey, $currentHash) || $oldKey === $currentHash) {

                    // Hash new password
                    $newHash = $method->make_hash($newKey);

                    if ($newHash) {
                        $updateSql = "UPDATE login SET userkey = :newKey WHERE userid = :userid";
                        if ($crud->dbQuery($updateSql, ['newKey' => $newHash, 'userid' => $_SESSION['userid']])) {
                            $response = ['success' => true, 'message' => 'پاس ورڈ کامیابی سے تبدیل ہوگیا ہے۔'];
                        } else {
                            $response['message'] = 'ڈیٹا بیس میں غلطی کی وجہ سے پاس ورڈ تبدیل نہ ہوسکا۔';
                        }
                    } else {
                        $response['message'] = 'پاس ورڈ ہیش کرنے میں غلطی ہوئی۔';
                    }
                } else {
                    $response['message'] = 'پرانا پاس ورڈ درست نہیں ہے۔';
                }
            } else {
                $response['message'] = 'صارف کی معلومات نہیں مل سکیں۔';
            }
        } catch (Exception $e) {
            $response['message'] = 'سسٹم کی غلطی: ' . $e->getMessage();
        }
    }
}

echo json_encode($response);
?>