<?php
declare(strict_types=1);

require_once __DIR__ . '/../includes/layout.php';

require_permission($conn, 'services');

$oldInput = pull_old_input();
$branchNames = auth_filter_branch_options($conn, service_branches($conn));
$scopeOptions = quick_service_qr_scopes();

$selectedScopeKey = trim((string) old_value($oldInput, 'scope_key', (string) ($_GET['scope'] ?? 'quick_service')));
if (!array_key_exists($selectedScopeKey, $scopeOptions)) {
    $selectedScopeKey = 'quick_service';
}

$selectedBranchName = normalize_branch_name((string) old_value($oldInput, 'branch_name', (string) ($_GET['branch'] ?? '')));
if ($selectedBranchName !== '' && !in_array($selectedBranchName, $branchNames, true)) {
    $selectedBranchName = '';
}

$resolvedConfig = quick_service_payment_resolve_config($selectedBranchName, $selectedScopeKey);
$exactProfile = quick_service_payment_profile_exact($selectedBranchName, $selectedScopeKey);
$promptpayId = old_value($oldInput, 'promptpay_id', (string) ($resolvedConfig['promptpay_id'] ?? ''));
$merchantName = old_value($oldInput, 'merchant_name', (string) ($resolvedConfig['merchant_name'] ?? 'CCW Car Care'));
$merchantCity = old_value($oldInput, 'merchant_city', (string) ($resolvedConfig['merchant_city'] ?? 'Bangkok'));
$qrImageUrl = old_value($oldInput, 'qr_image_url', (string) ($resolvedConfig['qr_image_url'] ?? ''));
$removeQrImage = old_value($oldInput, 'remove_qr_image', '0') === '1';
$preview = quick_service_qr_preview(0.0, $selectedBranchName, $selectedScopeKey);
$previewMode = (string) ($preview['type'] ?? 'none');
$savedProfiles = array_values(quick_service_payment_profiles());

usort($savedProfiles, static function (array $left, array $right): int {
    $scopeCompare = strcmp((string) ($left['scope_key'] ?? ''), (string) ($right['scope_key'] ?? ''));
    if ($scopeCompare !== 0) {
        return $scopeCompare;
    }

    return strcmp((string) ($left['branch_name'] ?? ''), (string) ($right['branch_name'] ?? ''));
});

$pageTitle = ui_text('ตั้งค่า Quick Service', 'Quick Service Settings');
$pageHeading = ui_text('ตั้งค่า QR รับชำระ', 'QR configuration');
$pageDescription = ui_text(
    'ตั้งค่า QR แยกตามสาขาและขอบเขตการรับชำระ เช่น Quick Service, รับชำระคิวงาน, มัดจำ @Admin หรือมัดจำ @Branch',
    'Configure QR by branch and payment scope such as Quick Service, Queue payment, Deposit @Admin or Deposit @Branch.'
);
$backToManageSystemLabel = ui_text('กลับไปจัดการระบบ', 'Back to Manage System');
$backToQuickServiceLabel = ui_text('กลับไป Quick Service', 'Back to Quick Service');
$profileSettingsLabel = ui_text('ตั้งค่าโปรไฟล์', 'Profile settings');
$profileSettingsHelperLabel = ui_text(
    'หากตั้งรูป QR แบบกำหนดเองไว้ ระบบจะใช้รูปนั้นก่อน PromptPay ที่สร้างอัตโนมัติ และควรตั้งโปรไฟล์แยกสาขาเมื่อแต่ละสาขาใช้บัญชีรับเงินต่างกัน',
    'A custom QR image takes priority over PromptPay generation. Set a branch-specific profile when one branch uses a different payment account.'
);
$qrScopeLabel = ui_text('ขอบเขต QR', 'QR scope');
$branchLabel = ui_text('สาขา', 'Branch');
$allBranchesDefaultLabel = ui_text('ทุกสาขา / ค่าเริ่มต้น', 'All branches / default');
$branchHelperLabel = ui_text(
    'เว้นว่างไว้หากต้องการใช้ QR นี้เป็นค่าเริ่มต้นสำหรับทุกสาขาในขอบเขตที่เลือก',
    'Leave blank to use this QR as the default for every branch in the selected scope.'
);
$promptpayIdLabel = ui_text('หมายเลข PromptPay', 'PromptPay ID');
$promptpayIdHelperLabel = ui_text(
    'รองรับเบอร์มือถือไทย หรือเลขประจำตัว/เลขภาษีที่ใช้กับ PromptPay',
    'Supports Thai mobile number or national/tax ID used by PromptPay.'
);
$qrImageUrlLabel = ui_text('URL รูป QR', 'QR image URL');
$qrImageUrlHelperLabel = ui_text(
    'ไม่บังคับกรอก หากระบุไว้ ระบบจะแสดงรูปนี้แทน QR PromptPay ที่สร้างอัตโนมัติ',
    'Optional. If filled, this image is shown instead of generated PromptPay QR.'
);
$merchantNameLabel = ui_text('ชื่อร้านค้า', 'Merchant name');
$merchantCityLabel = ui_text('เมืองร้านค้า', 'Merchant city');
$uploadQrImageLabel = ui_text('อัปโหลดรูป QR', 'Upload QR image');
$uploadQrImageHelperLabel = ui_text(
    'อัปโหลดไฟล์ PNG, JPG, GIF, WEBP หรือ SVG เพื่อใช้เป็นรูป QR ที่แสดงให้ลูกค้าเห็น',
    'Upload a PNG, JPG, GIF, WEBP or SVG file to use as the QR image shown to customers.'
);
$removeCustomQrLabel = ui_text('ลบรูป QR แบบกำหนดเอง', 'Remove custom QR image');
$removeCustomQrHelperLabel = ui_text(
    'เมื่อลบรูปที่อัปโหลดหรือกำหนดเองออก ระบบจะกลับไปใช้การสร้าง PromptPay อัตโนมัติ',
    'Use PromptPay generation again after removing the uploaded/custom image.'
);
$saveSettingsLabel = ui_text('บันทึกการตั้งค่า', 'Save settings');
$currentPreviewLabel = ui_text('ตัวอย่างปัจจุบัน', 'Current preview');
$scopePreviewLabel = ui_text('ขอบเขต', 'Scope');
$branchPreviewLabel = ui_text('สาขา', 'Branch');
$usingExactProfileLabel = ui_text('กำลังใช้โปรไฟล์ที่บันทึกตรงกับตัวเลือกนี้', 'Using this exact saved profile.');
$usingFallbackProfileLabel = ui_text('กำลังใช้โปรไฟล์สำรองจาก', 'Using fallback profile from');
$qrNotConfiguredLabel = ui_text('ยังไม่ได้ตั้งค่า QR', 'QR is not configured yet.');
$usingLegacyQrLabel = ui_text('กำลังใช้การตั้งค่า QR เริ่มต้นแบบเดิม', 'Using legacy default QR configuration.');
$qrPreviewImageLabel = ui_text('ตัวอย่าง QR', 'QR preview');
$savedProfilesLabel = ui_text('โปรไฟล์ QR ที่บันทึกไว้', 'Saved QR profiles');
$savedProfilesCountLabel = ui_text('{count} โปรไฟล์', '{count} profile(s)');
$noSavedProfilesLabel = ui_text('ยังไม่มีโปรไฟล์แยกตามสาขาหรือขอบเขตที่บันทึกไว้', 'No branch or scope specific profile saved yet.');
$scopeColumnLabel = ui_text('ขอบเขต', 'Scope');
$promptpayIdColumnLabel = ui_text('หมายเลข PromptPay', 'PromptPay ID');
$qrImageColumnLabel = ui_text('รูป QR', 'QR image');
$actionLabel = ui_text('การจัดการ', 'Action');
$customImageLabel = ui_text('รูปกำหนดเอง', 'Custom image');
$promptpayLabel = ui_text('PromptPay', 'PromptPay');
$editProfileLabel = ui_text('แก้ไขโปรไฟล์', 'Edit profile');
$deleteProfileLabel = ui_text('ลบโปรไฟล์', 'Delete profile');
$deleteProfileConfirmLabel = ui_text('ลบโปรไฟล์ QR นี้หรือไม่', 'Delete this QR profile?');

render_page_start($pageTitle, 'quick_service_settings', array('translation_buffer' => false));
?>

<section class="page-hero">
    <div>
        <h1><?= e($pageHeading) ?></h1>
        <p><?= e($pageDescription) ?></p>
    </div>
    <div class="hero-actions">
        <a class="button button-secondary" href="manage_system.php"><?= e($backToManageSystemLabel) ?></a>
        <a class="button button-secondary" href="quick_service.php"><?= e($backToQuickServiceLabel) ?></a>
    </div>
</section>

<div class="content-grid">
    <section class="form-card">
        <div class="section-head">
            <div>
                <h2 class="section-title"><?= e($profileSettingsLabel) ?></h2>
                <p class="helper"><?= e($profileSettingsHelperLabel) ?></p>
            </div>
        </div>

        <form method="POST" action="../process/save_quick_service_settings.php" enctype="multipart/form-data">
            <div class="form-grid">
                <div class="field">
                    <label for="scope_key"><?= e($qrScopeLabel) ?></label>
                    <select id="scope_key" name="scope_key" required>
                        <?php foreach ($scopeOptions as $scopeKey => $scopeLabel): ?>
                            <option value="<?= e($scopeKey) ?>" <?= $selectedScopeKey === $scopeKey ? 'selected' : '' ?>>
                                <?= e($scopeLabel) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>

                <div class="field">
                    <label for="branch_name"><?= e($branchLabel) ?></label>
                    <select id="branch_name" name="branch_name">
                        <option value=""><?= e($allBranchesDefaultLabel) ?></option>
                        <?php foreach ($branchNames as $branchName): ?>
                            <option value="<?= e($branchName) ?>" <?= $selectedBranchName === $branchName ? 'selected' : '' ?>>
                                <?= e($branchName) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                    <p class="helper"><?= e($branchHelperLabel) ?></p>
                </div>

                <div class="field">
                    <label for="promptpay_id"><?= e($promptpayIdLabel) ?></label>
                    <input id="promptpay_id" name="promptpay_id" type="text" value="<?= e($promptpayId) ?>" placeholder="0812345678 or 1234567890123">
                    <p class="helper"><?= e($promptpayIdHelperLabel) ?></p>
                </div>

                <div class="field">
                    <label for="qr_image_url"><?= e($qrImageUrlLabel) ?></label>
                    <input id="qr_image_url" name="qr_image_url" type="text" value="<?= e($qrImageUrl) ?>" placeholder="/CCW/storage/uploads/quick_service/qr.png">
                    <p class="helper"><?= e($qrImageUrlHelperLabel) ?></p>
                </div>

                <div class="field">
                    <label for="merchant_name"><?= e($merchantNameLabel) ?></label>
                    <input id="merchant_name" name="merchant_name" type="text" value="<?= e($merchantName) ?>">
                </div>

                <div class="field">
                    <label for="merchant_city"><?= e($merchantCityLabel) ?></label>
                    <input id="merchant_city" name="merchant_city" type="text" value="<?= e($merchantCity) ?>">
                </div>
            </div>

            <div class="field">
                <label for="qr_image_file"><?= e($uploadQrImageLabel) ?></label>
                <input id="qr_image_file" name="qr_image_file" type="file" accept="image/*">
                <p class="helper"><?= e($uploadQrImageHelperLabel) ?></p>
            </div>

            <label class="service-option compact-option">
                <input type="checkbox" name="remove_qr_image" value="1" <?= $removeQrImage ? 'checked' : '' ?>>
                <span>
                    <strong><?= e($removeCustomQrLabel) ?></strong>
                    <span class="muted"><?= e($removeCustomQrHelperLabel) ?></span>
                </span>
            </label>

            <div class="actions" style="margin-top: 18px;">
                <button class="button button-accent" type="submit"><?= e($saveSettingsLabel) ?></button>
            </div>
        </form>
    </section>

    <section class="card">
        <h2 class="section-title"><?= e($currentPreviewLabel) ?></h2>
        <p class="helper">
            <?= e($scopePreviewLabel) ?>: <?= e(quick_service_qr_scope_label($selectedScopeKey)) ?><br>
            <?= e($branchPreviewLabel) ?>: <?= e($selectedBranchName !== '' ? $selectedBranchName : $allBranchesDefaultLabel) ?><br>
            <?php if ($exactProfile !== null): ?>
                <?= e($usingExactProfileLabel) ?>
            <?php elseif (!empty($resolvedConfig['has_specific_profile'])): ?>
                <?= e($usingFallbackProfileLabel) ?> <?= e(quick_service_qr_scope_label((string) ($resolvedConfig['resolved_scope_key'] ?? 'quick_service'))) ?> / <?= e((string) (($resolvedConfig['resolved_branch_name'] ?? '') !== '' ? $resolvedConfig['resolved_branch_name'] : $allBranchesDefaultLabel)) ?>.
            <?php elseif ($previewMode === 'none'): ?>
                <?= e($qrNotConfiguredLabel) ?>
            <?php else: ?>
                <?= e($usingLegacyQrLabel) ?>
            <?php endif; ?>
        </p>

        <div class="quick-service-qr-preview" style="padding-top: 18px;">
            <img src="../process/quick_service_qr.php?scope=<?= urlencode($selectedScopeKey) ?>&branch=<?= urlencode($selectedBranchName) ?>" alt="<?= e($qrPreviewImageLabel) ?>">
        </div>

        <div class="quick-service-summary-grid" style="margin-top: 18px;">
            <div>
                <span><?= e($promptpayIdLabel) ?></span>
                <strong><?= e((string) ($resolvedConfig['promptpay_id'] ?? '-')) ?></strong>
            </div>
            <div>
                <span><?= e($qrImageUrlLabel) ?></span>
                <strong style="font-size: 0.92rem; line-height: 1.4;"><?= e((string) ($resolvedConfig['qr_image_url'] ?? '-')) ?></strong>
            </div>
        </div>
    </section>
</div>

<section class="table-card" style="margin-top: 18px;">
    <div class="section-head" style="padding: 18px 18px 0;">
        <div>
            <h2 class="section-title"><?= e($savedProfilesLabel) ?></h2>
            <p class="helper"><?= e(strtr($savedProfilesCountLabel, array('{count}' => (string) count($savedProfiles)))) ?></p>
        </div>
    </div>

    <?php if (empty($savedProfiles)): ?>
        <div class="empty-state" style="margin: 18px;"><?= e($noSavedProfilesLabel) ?></div>
    <?php else: ?>
        <table class="data-table">
            <thead>
            <tr>
                <th><?= e($scopeColumnLabel) ?></th>
                <th><?= e($branchLabel) ?></th>
                <th><?= e($promptpayIdColumnLabel) ?></th>
                <th><?= e($qrImageColumnLabel) ?></th>
                <th><?= e($actionLabel) ?></th>
            </tr>
            </thead>
            <tbody>
            <?php foreach ($savedProfiles as $profile): ?>
                <?php
                $profileScopeKey = (string) ($profile['scope_key'] ?? 'quick_service');
                $profileBranchName = (string) ($profile['branch_name'] ?? '');
                $editUrl = 'quick_service_settings.php?scope=' . urlencode($profileScopeKey) . '&branch=' . urlencode($profileBranchName);
                ?>
                <tr>
                    <td><?= e(quick_service_qr_scope_label($profileScopeKey)) ?></td>
                    <td><?= e($profileBranchName !== '' ? $profileBranchName : $allBranchesDefaultLabel) ?></td>
                    <td><?= e((string) ($profile['promptpay_id'] ?? '-')) ?></td>
                    <td><?= e(trim((string) ($profile['qr_image_url'] ?? '')) !== '' ? $customImageLabel : $promptpayLabel) ?></td>
                    <td>
                        <div class="actions-inline qr-profile-actions">
                            <a
                                class="button button-secondary qr-profile-action app-action-button"
                                href="<?= e($editUrl) ?>"
                                title="<?= e($editProfileLabel) ?>"
                                aria-label="<?= e($editProfileLabel) ?>"
                            ><?= app_button_content('edit-2', $editProfileLabel) ?></a>
                            <form method="POST" action="../process/delete_quick_service_settings_profile.php" onsubmit="return confirm('<?= e($deleteProfileConfirmLabel) ?>');">
                                <input type="hidden" name="scope_key" value="<?= e($profileScopeKey) ?>">
                                <input type="hidden" name="branch_name" value="<?= e($profileBranchName) ?>">
                                <button
                                    class="button button-danger qr-profile-action app-action-button"
                                    type="submit"
                                    title="<?= e($deleteProfileLabel) ?>"
                                    aria-label="<?= e($deleteProfileLabel) ?>"
                                ><?= app_button_content('trash-2', $deleteProfileLabel) ?></button>
                            </form>
                        </div>
                    </td>
                </tr>
            <?php endforeach; ?>
            </tbody>
        </table>
    <?php endif; ?>
</section>

<?php render_page_end(); ?>
