<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$pageTitle = 'لوحة التحكم والمؤشرات المتقدمة';
// تأكد من أن المسار صحيح لملفات include
include '../../includes/header.php';
// تأكد من وجود دوال checkLogin و getDB
checkLogin();

$current_user_id = (int)($_SESSION['user_id'] ?? 0);
if (!$current_user_id) {
    $_SESSION['error_message'] = 'خطأ في جلسة المستخدم. الرجاء تسجيل الدخول.';
    header('Location: ../../auth/login.php');
    exit();
}

// تأكد من أن دالة getDB تقوم بإرجاع كائن قاعدة بيانات صالح
$db = getDB();
$params = ['user_id' => $current_user_id];

// 🆕 معالجة بيانات الفلترة من النموذج
$start_date = $_POST['start_date'] ?? null;
$end_date = $_POST['end_date'] ?? null;
$generator_id = $_POST['generator_id'] ?? null;
$cabinet_id = $_POST['cabinet_id'] ?? null; 

// 🆕 جلب قوائم المولدات والكابينات لنموذج الفلترة
$cabinet_params = ['user_user_id' => $current_user_id];

try {
    // 1. جلب المولدات
    $generators = $db->select("SELECT id, name FROM generators WHERE user_id=:user_id ORDER BY name", $params);
    
    // 2. بناء استعلام جلب الكابينات (يتم فلترته الآن حسب المولدة المختارة)
    $sql_cabinets = "
        SELECT 
            c.id, 
            c.cabinet_name 
        FROM 
            cabinets c
        JOIN 
            generators g ON c.generator_id = g.id
        WHERE 
            g.user_id = :user_user_id 
    ";
    
    // ❗ إضافة فلترة المولدة إذا تم اختيارها
    if (!empty($generator_id)) {
        $sql_cabinets .= " AND c.generator_id = :filter_generator_id ";
        $cabinet_params['filter_generator_id'] = $generator_id;
    }

    $sql_cabinets .= " ORDER BY c.cabinet_name ";
    
    $cabinets = $db->select($sql_cabinets, $cabinet_params); 
    

} catch (Exception $e) {
    error_log("Filter lists error: ".$e->getMessage());
    $generators = [];
    $cabinets = [];
}


// بناء شروط الفلترة (تطبق على جدول المشتركين s)
$filter_conditions = " WHERE s.user_id=:user_id ";

// إعادة استخدام $params الأصلية للإحصائيات وتطبيق الفلاتر عليها
$params = ['user_id' => $current_user_id]; 

if (!empty($generator_id)) {
    $filter_conditions .= " AND s.generator_id = :generator_id ";
    $params['generator_id'] = $generator_id;
}
if (!empty($cabinet_id)) {
    $filter_conditions .= " AND s.cabinet_id = :cabinet_id ";
    $params['cabinet_id'] = $cabinet_id;
}

// -----------------------------------------------------------

$stats = [
    'total_subscribers' => 0,
    'active_subscribers' => 0,
    'inactive_subscribers' => 0,
    'due_subscribers_count' => 0,
    'unpaid_subscribers_count' => 0,
    'paid_subscribers_count' => 0, 
    'total_generators' => 0,
    'total_expected_revenue' => 0,
    'revenue_by_generator' => [],
    'revenue_by_cabinet' => [],
    'recent_months_revenue' => [],
];

try {
    // 1. إجمالي المشتركين النشطين وغير النشطين (مع فلترة المولدة والكابينة)
    $sql_sub_count = "
        SELECT 
            COUNT(*) AS total_subscribers,
            SUM(CASE WHEN status='active' THEN 1 ELSE 0 END) AS active_subscribers,
            SUM(CASE WHEN status<>'active' THEN 1 ELSE 0 END) AS inactive_subscribers,
            SUM(subscription_type * ampere_price) AS total_expected_revenue
        FROM subscribers s
        " . str_replace("s.", "", $filter_conditions);

    $res = $db->select($sql_sub_count, $params);
    if ($res) {
        $stats['total_subscribers'] = (int)$res[0]['total_subscribers'];
        $stats['active_subscribers'] = (int)$res[0]['active_subscribers'];
        $stats['inactive_subscribers'] = (int)$res[0]['inactive_subscribers'];
        $stats['total_expected_revenue'] = (float)$res[0]['total_expected_revenue'];
    }

    // 2. المشتركون المستحقون للتجديد
    $sql_due_subs = "
        SELECT COUNT(*) AS due_count
        FROM subscribers s
        {$filter_conditions} AND s.status='active'
          AND DATE_ADD(s.created_at, INTERVAL 1 MONTH) <= CURDATE()";
    $res = $db->select($sql_due_subs, $params);
    $stats['due_subscribers_count'] = (int)($res[0]['due_count'] ?? 0);

    // 3. المشتركون الذين لم يدفعوا هذا الشهر 
    $current_month = date('m');
    $current_year = date('Y');
    
    // شروط الفلترة المطبقة على المشتركين (s)
    $unpaid_sub_filter = " AND s.user_id=:user_id";
    if (!empty($generator_id)) $unpaid_sub_filter .= " AND s.generator_id = :generator_id ";
    if (!empty($cabinet_id)) $unpaid_sub_filter .= " AND s.cabinet_id = :cabinet_id ";
    
    $sql_unpaid = "
        SELECT COUNT(*) AS unpaid_count
        FROM subscribers s
        WHERE s.status='active' {$unpaid_sub_filter}
          AND (SELECT COUNT(*) FROM payments p 
               WHERE p.subscriber_id=s.id 
                 AND MONTH(p.payment_date)=:current_month 
                 AND YEAR(p.payment_date)=:current_year) = 0";
                 
    $unpaid_params = array_merge($params, ['current_month'=>$current_month,'current_year'=>$current_year]);
    $res = $db->select($sql_unpaid, $unpaid_params);
    $stats['unpaid_subscribers_count'] = (int)($res[0]['unpaid_count'] ?? 0);

    // 3.5. المشتركون الذين دفعوا هذا الشهر
    $paid_sub_filter = " AND s.user_id=:user_id";
    if (!empty($generator_id)) $paid_sub_filter .= " AND s.generator_id = :generator_id ";
    if (!empty($cabinet_id)) $paid_sub_filter .= " AND s.cabinet_id = :cabinet_id ";

    $sql_paid = "
        SELECT COUNT(DISTINCT s.id) AS paid_count
        FROM subscribers s
        JOIN payments p ON p.subscriber_id = s.id
        WHERE s.status='active' {$paid_sub_filter}
          AND MONTH(p.payment_date)=:current_month 
          AND YEAR(p.payment_date)=:current_year";
                 
    $paid_params = array_merge($params, ['current_month'=>$current_month,'current_year'=>$current_year]);
    $res = $db->select($sql_paid, $paid_params);
    $stats['paid_subscribers_count'] = (int)($res[0]['paid_count'] ?? 0);
    
    // 4. إجمالي المولدات 
    $sql_gen_count = "SELECT COUNT(*) AS total_generators FROM generators WHERE user_id=:user_id";
    $res = $db->select($sql_gen_count, ['user_id' => $current_user_id]);

    $stats['total_generators'] = (int)($res[0]['total_generators'] ?? 0);

    // 5. الإيراد المتوقع حسب المولدة والكابينة
    $sql_rev_gen = "
        SELECT g.name AS generator_name,
               SUM(s.subscription_type * s.ampere_price) AS expected_revenue
        FROM subscribers s
        JOIN generators g ON s.generator_id=g.id
        {$filter_conditions} AND s.status='active'
        GROUP BY g.name
        ORDER BY expected_revenue DESC
        LIMIT 5";
    $stats['revenue_by_generator'] = $db->select($sql_rev_gen, $params);

    $sql_rev_cab = "
        SELECT COALESCE(c.cabinet_name,'غير مرتبط') AS cabinet_name,
               SUM(s.subscription_type * s.ampere_price) AS expected_revenue
        FROM subscribers s
        LEFT JOIN cabinets c ON s.cabinet_id=c.id
        {$filter_conditions} AND s.status='active'
        GROUP BY COALESCE(c.cabinet_name,'غير مرتبط')
        ORDER BY expected_revenue DESC
        LIMIT 5";
    $stats['revenue_by_cabinet'] = $db->select($sql_rev_cab, $params);

    // 6. الإيراد الشهري (التاريخ والمولدة والكابينة)
    
    // إعادة تهيئة البارامترات الخاصة بالإيراد (للتأكد من أنها نظيفة)
    $revenue_params = ['user_id' => $current_user_id];
    $date_conditions = " AND p.payment_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) ";
    
    // الشرط الأساسي في جدول payments
    $revenue_filter = " WHERE p.user_id=:user_id ";

    // 1. إضافة فلترة التاريخ
    if (!empty($start_date) && !empty($end_date)) {
        $date_conditions = " AND p.payment_date BETWEEN :start_date AND :end_date ";
        $revenue_params['start_date'] = $start_date;
        $revenue_params['end_date'] = $end_date;
    }

    // 2. إضافة فلترة المولدة
    if (!empty($generator_id)) {
        $revenue_filter .= " AND p.generator_id = :generator_id ";
        $revenue_params['generator_id'] = $generator_id;
    }
    
    // 3. بناء الاستعلام الموحد (JOIN مع subscribers اختياري لتطبيق فلتر الكابينة)
    $join_subscribers = "";
    $cabinet_condition = "";

    if (!empty($cabinet_id)) {
        // إذا تم تحديد كابينة، يجب أن ننضم إلى جدول المشتركين
        $join_subscribers = " JOIN subscribers s ON p.subscriber_id = s.id ";
        $cabinet_condition = " AND s.cabinet_id = :cabinet_id ";
        // نضيف البارامتر هنا فقط عند الحاجة إليه
        $revenue_params['cabinet_id'] = $cabinet_id; 
    }

    // الاستعلام المصحح والموحد:
    $sql_recent_rev = "
        SELECT DATE_FORMAT(p.payment_date,'%Y-%m') AS month,
               SUM(p.amount_paid) AS revenue  
        FROM payments p
        {$join_subscribers}
        {$revenue_filter}
        {$cabinet_condition}
        {$date_conditions}
        GROUP BY DATE_FORMAT(p.payment_date,'%Y-%m')
        ORDER BY month ASC";
        
    $stats['recent_months_revenue'] = $db->select($sql_recent_rev, $revenue_params);

} catch (Exception $e) {
    error_log("index error: ".$e->getMessage());
    $_SESSION['error_message'] = 'خطأ في جلب بيانات لوحة التحكم.';
}

$currency_unit = 'د.ع.';


// ... (الاستعلام 1. إجمالي المشتركين النشطين وغير النشطين)
// ... (الكود الخاص بجلب الإحصائيات من الاستعلام 1)

// 🆕 1.5. إجمالي الأمبيرات (المستخدمة والكلية) (مع فلترة المولدة والكابينة)
$sql_ampere_stats = "
    SELECT
        COALESCE(SUM(s.subscription_type), 0) AS subscribed_amperes,
        COALESCE(SUM(g.capacity), 0) AS total_capacity
    FROM subscribers s
    LEFT JOIN generators g ON s.generator_id = g.id
    " . str_replace("s.", "", $filter_conditions) . "
    AND s.status='active'
";

// إذا كان هناك فلتر لمولدة محددة، فإن السعة الكلية هي سعة تلك المولدة فقط
// وإلا، يتم تجميع السعات الكلية للمولدات التي لها مشتركين في الفلتر الحالي.
// سنعتمد على استعلام منفصل لجلب السعة الكلية بناءً على الفلاتر المطبقة لتكون أدق.

// جلب الأمبيرات المستخدمة (من المشتركين النشطين فقط)
$sql_subscribed_amps = "
    SELECT
        COALESCE(SUM(s.subscription_type), 0) AS subscribed_amperes
    FROM subscribers s
    {$filter_conditions}
    AND s.status='active'
";
$res_ampere = $db->select($sql_subscribed_amps, $params);
$stats['subscribed_amperes'] = (float)($res_ampere[0]['subscribed_amperes'] ?? 0);

// جلب السعة الكلية للمولدات التي تنطبق عليها الفلاتر
$sql_total_capacity = "
    SELECT
        COALESCE(SUM(g.capacity), 0) AS total_capacity
    FROM generators g
    WHERE g.user_id = :user_id
";

// إذا تم فلترة المولدة، نضيف الشرط
if (!empty($generator_id)) {
    $sql_total_capacity .= " AND g.id = :generator_id";
}

$res_capacity = $db->select($sql_total_capacity, $params);
$stats['total_capacity'] = (float)($res_capacity[0]['total_capacity'] ?? 0);

$stats['remaining_capacity'] = $stats['total_capacity'] - $stats['subscribed_amperes'];

// ... (بقية الإحصائيات)
?>

<style>
@import url('https://fonts.googleapis.com/css2?family=Almarai:wght@300;400;700&display=swap');

:root {
    --primary-blue: #0A3D62; /* أزرق عميق للحسابات والثقة */
    --success-green: #2ecc71; /* أخضر للإيرادات والنمو */
    --warning-orange: #f39c12; /* برتقالي للمدفوعات المعلقة */
    --danger-red: #e74c3c; /* أحمر للتأخير */
    --light-bg: #f5f7fa; /* خلفية فاتحة */
    --text-color: #34495e; /* لون نص أساسي */
}

body {
    font-family: 'Almarai', sans-serif;
    background-color: var(--light-bg);
    color: var(--text-color);
}

/* تحسين شكل بطاقات الـ KPIs */
.kpi-card {
    border: none;
    border-radius: 10px;
    transition: all 0.3s ease;
    overflow: hidden;
    position: relative;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
}

.kpi-card:hover {
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
    transform: translateY(-5px);
}

.kpi-card .card-body {
    padding: 20px;
}

.kpi-card h3 {
    font-weight: 700;
    margin-bottom: 5px;
}

/* شريط جانبي ملون للبطاقات */
/* تم تعديل الـ class في HTML لاستخدام kpi-card */
.kpi-card.border-start.border-4.border-success { border-left: 5px solid var(--success-green) !important; }
.kpi-card.border-start.border-4.border-primary { border-left: 5px solid var(--primary-blue) !important; }
.kpi-card.border-start.border-4.border-warning { border-left: 5px solid var(--warning-orange) !important; }
.kpi-card.border-start.border-4.border-danger { border-left: 5px solid var(--danger-red) !important; }


/* تصميم الفلتر والهيدر */
.card-header.bg-primary {
    background-color: var(--primary-blue) !important;
    color: white;
    font-weight: 700;
}

.btn-success {
    background-color: var(--success-green);
    border-color: var(--success-green);
}
.btn-success:hover {
    background-color: #27ae60;
    border-color: #27ae60;
}

/* تنسيق الجداول وعناوين الأقسام الثانوية */
.card-header.bg-light {
    background-color: #ecf0f1 !important;
    font-weight: 600;
    border-bottom: 1px solid #ddd;
}
</style>
<div class="content-area container-fluid mt-4">
    <div class="page-header mb-4">
        <h2 class="page-title"><i class="fas fa-tachometer-alt me-2"></i> لوحة التحكم المالية والتشغيلية</h2>
        <p class="page-subtitle text-muted">ملخص شامل لأداء المشتركين والإيرادات.</p>
    </div>
    <?php include '../../includes/alerts.php'; ?>
    
    <div class="card shadow-sm mb-4">
        <div class="card-header bg-primary text-white"><i class="fas fa-filter me-2"></i> خيارات الفلترة المتقدمة</div>
        <div class="card-body">
            <form method="POST" action="index.php" class="row g-3 align-items-end">
                
                <div class="col-md-3">
                    <label for="start_date" class="form-label">من تاريخ:</label>
                    <input type="date" class="form-control" id="start_date" name="start_date" value="<?php echo htmlspecialchars($start_date ?? ''); ?>">
                </div>

                <div class="col-md-3">
                    <label for="end_date" class="form-label">إلى تاريخ:</label>
                    <input type="date" class="form-control" id="end_date" name="end_date" value="<?php echo htmlspecialchars($end_date ?? ''); ?>">
                </div>
                
                <div class="col-md-3">
                    <label for="generator_id" class="form-label">المولدة:</label>
                    <select class="form-select" id="generator_id" name="generator_id" onchange="this.form.submit()">
                        <option value="">جميع المولدات</option>
                        <?php foreach ($generators as $gen): ?>
                            <option value="<?php echo $gen['id']; ?>" <?php echo ($generator_id == $gen['id']) ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($gen['name']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>

                <div class="col-md-3">
                    <label for="cabinet_id" class="form-label">الكابينة:</label>
                    <select class="form-select" id="cabinet_id" name="cabinet_id">
                        <option value="">جميع الكابينات</option>
                        <?php foreach ($cabinets as $cab): ?>
                            <option value="<?php echo $cab['id']; ?>" <?php echo ($cabinet_id == $cab['id']) ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($cab['cabinet_name']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                
                <div class="col-md-12 text-end">
                    <button type="submit" class="btn btn-success"><i class="fas fa-search me-2"></i> تطبيق الفلتر</button>
                    <a href="index.php" class="btn btn-outline-secondary"><i class="fas fa-sync-alt me-2"></i> إعادة تعيين</a>
                </div>
            </form>
        </div>
    </div>
    
    <div class="row g-4 mb-5">
        <div class="col-md-4 col-lg-3">
            <div class="card kpi-card border-start border-4 border-success h-100">
                <div class="card-body">
                    <p class="text-muted mb-1">عدد المشتركين</p>
                    <h3 class="text-success"><?php echo number_format($stats['active_subscribers']); ?></h3>
                    <small>من أصل <?php echo number_format($stats['total_subscribers']); ?> مشتركين (بالفلتر)</small>
                </div>
            </div>
        </div>
        <div class="col-md-4 col-lg-3">
            <div class="card kpi-card border-start border-4 border-primary h-100">
                <div class="card-body">
                    <p class="text-muted mb-1">تم الدفع</p>
                    <h3 style="color: var(--primary-blue);" class=""><?php echo number_format($stats['paid_subscribers_count']); ?></h3> 
                    <small>الذين سددوا اشتراك الشهر الحالي (بالفلتر)</small>
                </div>
            </div>
        </div>
        <div class="col-md-4 col-lg-3">
            <div class="card kpi-card border-start border-4 border-warning h-100">
                <div class="card-body">
                    <p class="text-muted mb-1">المتأخرون</p>
                    <h3 class="text-warning"><?php echo number_format($stats['unpaid_subscribers_count']); ?></h3>
                    <small>الذين لم يسددوا اشتراك الشهر الحالي (بالفلتر)</small>
                </div>
            </div>
        </div>
        <div class="col-md-4 col-lg-3">
            <div class="card kpi-card border-start border-4 border-danger h-100">
                <div class="card-body">
                    <p class="text-muted mb-1">مشتركون لم يجددو الاشتراك</p>
                    <h3 class="text-danger"><?php echo number_format($stats['due_subscribers_count']); ?></h3>
                    <small>يحتاجون لتجديد الاشتراك (بالفلتر)</small>
                </div>
            </div>
        </div>
    </div>
    
    <div class="row g-4 mb-5">
    <div class="col-md-4 col-lg-4">
        <div class="card kpi-card border-start border-4 border-primary h-100">
            <div class="card-body">
                <p class="text-muted mb-1">السعة الكلية (بالفلتر)</p>
                <h3 style="color: var(--primary-blue);"><?php echo number_format($stats['total_capacity'], 0); ?> أمبير</h3>
                <small>إجمالي الأمبيرات المتاحة في المولدات المفلترة</small>
            </div>
        </div>
    </div>
    <div class="col-md-4 col-lg-4">
        <div class="card kpi-card border-start border-4 border-warning h-100">
            <div class="card-body">
                <p class="text-muted mb-1">الأمبيرات المستخدمة (النشطون)</p>
                <h3 class="<?php echo ($stats['subscribed_amperes'] > $stats['total_capacity'] * 0.9) ? 'text-danger' : 'text-warning'; ?>"><?php echo number_format($stats['subscribed_amperes'], 0); ?> أمبير</h3>
                <small>إجمالي الأمبيرات المشتركة حالياً</small>
            </div>
        </div>
    </div>
    <div class="col-md-4 col-lg-4">
        <div class="card kpi-card border-start border-4 border-success h-100">
            <div class="card-body">
                <p class="text-muted mb-1">السعة المتبقية</p>
                <h3 class="<?php echo ($stats['remaining_capacity'] <= 0) ? 'text-danger' : 'text-success'; ?>"><?php echo number_format($stats['remaining_capacity'], 0); ?> أمبير</h3>
                <small>الأمبيرات المتاحة لإضافة مشتركين جدد</small>
            </div>
        </div>
    </div>
</div>
    
    <div class="row g-4 mb-5">
        <div class="col-lg-6">
            <div class="card shadow-sm">
                <div class="card-header bg-light">أعلى 5 مولدات حسب الإيراد المتوقع (بالفلتر)</div>
                <div class="card-body p-0">
                    <?php if(!empty($stats['revenue_by_generator'])): ?>
                        <ul class="list-group list-group-flush">
                        <?php foreach($stats['revenue_by_generator'] as $r): ?>
                            <li class="list-group-item d-flex justify-content-between">
                                <?php echo htmlspecialchars($r['generator_name']); ?>
                                <span class="text-success fw-bold"><?php echo number_format((float)$r['expected_revenue'],2).' '.$currency_unit; ?></span>
                            </li>
                        <?php endforeach; ?>
                        </ul>
                    <?php else: ?>
                        <p class="text-center py-3 text-muted">لا توجد بيانات لهذه المولدات</p>
                    <?php endif; ?>
                </div>
            </div>
        </div>
        <div class="col-lg-6">
            <div class="card shadow-sm">
                 <div class="card-header bg-light">أعلى 5 كابينات حسب الإيراد المتوقع (بالفلتر)</div>
                <div class="card-body p-0">
                    <?php if(!empty($stats['revenue_by_cabinet'])): ?>
                        <ul class="list-group list-group-flush">
                        <?php foreach($stats['revenue_by_cabinet'] as $r): ?>
                            <li class="list-group-item d-flex justify-content-between">
                                <?php echo htmlspecialchars($r['cabinet_name']); ?>
                                <span class="text-success fw-bold"><?php echo number_format((float)$r['expected_revenue'],2).' '.$currency_unit; ?></span>
                            </li>
                        <?php endforeach; ?>
                        </ul>
                    <?php else: ?>
                        <p class="text-center py-3 text-muted">لا توجد بيانات لهذه الكابينات</p>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    </div>

    <div class="card shadow-sm mb-5">
         <div class="card-header bg-light">الإيراد الشهري (التاريخ المحدد أو آخر 6 أشهر)</div>
        <div class="card-body">
            <?php if(!empty($stats['recent_months_revenue'])): ?>
                <div class="table-responsive">
                    <table class="table table-striped mb-0">
                        <thead class="table-light">
                            <tr>
                                <th>الشهر</th>
                                <th class="text-end">الإيراد (<span class="text-success"><?php echo $currency_unit; ?></span>)</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach($stats['recent_months_revenue'] as $r): ?>
                                <tr>
                                    <td><?php echo htmlspecialchars($r['month']); ?></td>
                                    <td class="text-end text-success fw-bold"><?php echo number_format((float)$r['revenue'],2); ?></td> 
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            <?php else: ?>
                <p class="text-center text-muted py-3">لا توجد بيانات إيرادات مطابقة للفلاتر المحددة.</p>
            <?php endif; ?>
        </div>
    </div>
</div>

<?php include '../../includes/footer.php'; ?>