<?php
require_once '../../config.php';

header('Content-Type: application/json; charset=utf-8');

// 处理 OPTIONS 预检请求
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

try {
    $websiteId = isset($_GET['websiteId']) ? intval($_GET['websiteId']) : null;
    $yearMonth = isset($_GET['yearMonth']) ? $_GET['yearMonth'] : null; // Format: YYYY-MM (可选)

    if (!$websiteId) {
        throw new Exception("Missing required parameter: websiteId");
    }

    // 验证 yearMonth 格式（如果提供）
    if ($yearMonth && !preg_match('/^\d{4}-\d{2}$/', $yearMonth)) {
        throw new Exception("Invalid yearMonth format. Expected: YYYY-MM");
    }

    $websiteIdEscaped = intval($websiteId);
    $yearMonthEscaped = $yearMonth ? mysqli_real_escape_string($conn, $yearMonth) : null;

    // 获取所有出现过的 BankName（如果提供了 yearMonth，则只查该月份；否则查整个网站）
    if ($yearMonthEscaped) {
        $bankNamesQuery = "SELECT DISTINCT dr.BankName
                          FROM DailyReport dr
                          WHERE dr.WebsiteID = $websiteIdEscaped
                            AND DATE_FORMAT(dr.Date, '%Y-%m') = '$yearMonthEscaped'
                          ORDER BY dr.BankName ASC";
    } else {
        $bankNamesQuery = "SELECT DISTINCT dr.BankName
                          FROM DailyReport dr
                          WHERE dr.WebsiteID = $websiteIdEscaped
                          ORDER BY dr.BankName ASC";
    }
    
    $bankNamesResult = mysqli_query($conn, $bankNamesQuery);
    
    if (!$bankNamesResult) {
        throw new Exception("Query failed: " . mysqli_error($conn));
    }

    $allBankNames = [];
    while ($row = mysqli_fetch_assoc($bankNamesResult)) {
        $allBankNames[] = $row['BankName'];
    }
    mysqli_free_result($bankNamesResult);

    // 获取已有 Category 的 BankName
    $assignedQuery = "SELECT DISTINCT BankName, Category
                     FROM BankSort
                     WHERE WebsiteID = $websiteIdEscaped
                       AND Category IS NOT NULL
                       AND TRIM(Category) != ''";
    
    $assignedResult = mysqli_query($conn, $assignedQuery);
    
    if (!$assignedResult) {
        throw new Exception("Query failed: " . mysqli_error($conn));
    }

    $assignedBankNames = [];
    $bankCategoryMap = [];
    while ($row = mysqli_fetch_assoc($assignedResult)) {
        $assignedBankNames[] = $row['BankName'];
        $bankCategoryMap[$row['BankName']] = $row['Category'];
    }
    mysqli_free_result($assignedResult);

    // 获取所有 BankSort 记录（包括 SortOrder）
    $allBankSortQuery = "SELECT BankName, SortOrder, Category, IsHidden, IsBSheet
                        FROM BankSort
                        WHERE WebsiteID = $websiteIdEscaped";
    $allBankSortResult = mysqli_query($conn, $allBankSortQuery);
    $bankSortMap = [];
    if ($allBankSortResult) {
        while ($row = mysqli_fetch_assoc($allBankSortResult)) {
            $bankSortMap[$row['BankName']] = [
                'SortOrder' => intval($row['SortOrder']),
                'Category' => $row['Category'],
                'IsHidden' => intval($row['IsHidden']) === 1,
                'IsBSheet' => isset($row['IsBSheet']) ? (intval($row['IsBSheet']) === 1) : true
            ];
        }
        mysqli_free_result($allBankSortResult);
    }
    
    // 排除不需要分类的银行名称
    $excludedBankNames = ['Total', 'Total (Bank Only)'];
    
    // 找出未分配 Category 的 BankName
    $unassignedBanks = [];
    foreach ($allBankNames as $bankName) {
        // 排除 "Total" 和 "Total (Bank Only)"
        if (in_array($bankName, $excludedBankNames)) {
            continue;
        }
        
        if (!in_array($bankName, $assignedBankNames) || 
            !isset($bankCategoryMap[$bankName]) || 
            empty(trim($bankCategoryMap[$bankName]))) {
            $unassignedBanks[] = [
                'BankName' => $bankName,
                'Category' => isset($bankCategoryMap[$bankName]) ? $bankCategoryMap[$bankName] : null,
                'SortOrder' => isset($bankSortMap[$bankName]) ? $bankSortMap[$bankName]['SortOrder'] : null,
                'IsHidden' => isset($bankSortMap[$bankName]) ? $bankSortMap[$bankName]['IsHidden'] : false,
                'IsBSheet' => isset($bankSortMap[$bankName]) ? $bankSortMap[$bankName]['IsBSheet'] : true
            ];
        }
    }

    // 获取所有已存在的 Category 选项（用于下拉选择）
    $categoryOptionsQuery = "SELECT DISTINCT Category
                            FROM BankSort
                            WHERE WebsiteID = $websiteIdEscaped
                              AND Category IS NOT NULL
                              AND TRIM(Category) != ''
                            ORDER BY Category ASC";
    
    $categoryOptionsResult = mysqli_query($conn, $categoryOptionsQuery);
    $categoryOptions = [];
    if ($categoryOptionsResult) {
        while ($row = mysqli_fetch_assoc($categoryOptionsResult)) {
            $categoryOptions[] = $row['Category'];
        }
        mysqli_free_result($categoryOptionsResult);
    }

    echo json_encode([
        'success' => true,
        'unassignedBanks' => $unassignedBanks,
        'categoryOptions' => $categoryOptions,
        'count' => count($unassignedBanks)
    ], JSON_UNESCAPED_UNICODE);

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'error' => true,
        'success' => false,
        'message' => $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}

mysqli_close($conn);
?>

