<?php
/**
 * گزارش هفتگی ایمیلی برای مدیر/مالی
 * این اسکریپت باید هفتگی از طریق Cron Job پنل هاست فراخوانی شود (نه توسط کاربر).
 * آدرس دسترسی شامل توکن امنیتی، از صفحه «تنظیمات» پنل مدیر قابل مشاهده است.
 */
require_once __DIR__ . '/../includes/functions.php';

$expected_token = get_setting($pdo, 'cron_secret', '');
$given_token = $_GET['token'] ?? '';

if (!$expected_token || !hash_equals($expected_token, $given_token)) {
    http_response_code(403);
    die('دسترسی غیرمجاز.');
}

$recipients = get_setting($pdo, 'admin_notification_emails', '');
$emails = array_filter(array_map('trim', explode(',', $recipients)));

if (!$emails) {
    echo "هیچ ایمیل دریافت‌کننده‌ای در تنظیمات ثبت نشده است.";
    exit;
}

// --- آمار ۷ روز گذشته ---
$newClaims = $pdo->query("SELECT COUNT(*) AS cnt, COALESCE(SUM(amount_requested),0) AS total FROM claims WHERE created_at >= (NOW() - INTERVAL 7 DAY)")->fetch();
$approvedClaims = $pdo->query("SELECT COUNT(*) AS cnt, COALESCE(SUM(payable_amount),0) AS total FROM claims WHERE reviewed_at >= (NOW() - INTERVAL 7 DAY) AND status IN ('approved','paid')")->fetch();
$rejectedClaims = $pdo->query("SELECT COUNT(*) AS cnt FROM claims WHERE reviewed_at >= (NOW() - INTERVAL 7 DAY) AND status = 'rejected'")->fetch();
$paidClaims = $pdo->query("SELECT COUNT(*) AS cnt, COALESCE(SUM(payable_amount),0) AS total FROM claims WHERE paid_at >= (NOW() - INTERVAL 7 DAY)")->fetch();
$pendingNow = $pdo->query("SELECT COUNT(*) AS cnt FROM claims WHERE status = 'pending'")->fetch();

$company_name = get_setting($pdo, 'company_name', APP_NAME);

$subject = '=?UTF-8?B?' . base64_encode("گزارش هفتگی بیمه تکمیلی درمان - {$company_name}") . '?=';

$body = "گزارش هفتگی سامانه بیمه تکمیلی درمان - {$company_name}\n";
$body .= "بازه: ۷ روز گذشته\n\n";
$body .= "درخواست‌های جدید ثبت‌شده: " . number_format($newClaims['cnt']) . " مورد (مجموع مبلغ درخواستی: " . number_format($newClaims['total']) . " ریال)\n";
$body .= "درخواست‌های تایید‌شده: " . number_format($approvedClaims['cnt']) . " مورد (مجموع مبلغ قابل پرداخت: " . number_format($approvedClaims['total']) . " ریال)\n";
$body .= "درخواست‌های رد‌شده: " . number_format($rejectedClaims['cnt']) . " مورد\n";
$body .= "پرداخت‌های نهایی‌شده: " . number_format($paidClaims['cnt']) . " مورد (مجموع مبلغ پرداخت‌شده: " . number_format($paidClaims['total']) . " ریال)\n\n";
$body .= "درخواست‌های در انتظار بررسی در حال حاضر: " . number_format($pendingNow['cnt']) . " مورد\n\n";
$body .= "برای بررسی جزئیات وارد پنل مدیر شوید:\n" . base_url('admin/dashboard.php') . "\n";

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
$headers .= "From: " . APP_NAME . " <no-reply@" . ($_SERVER['HTTP_HOST'] ?? 'localhost') . ">\r\n";

$sent = 0;
foreach ($emails as $to) {
    if (mail($to, $subject, $body, $headers)) {
        $sent++;
    }
}

echo "گزارش هفتگی برای {$sent} از " . count($emails) . " آدرس ایمیل ارسال شد.";
