<?php
require_once '../config.php';

// التحقق من تسجيل الدخول
requireLogin();

// التحقق من الصلاحيات
requirePermission('admin');

// معالجة النموذج
$reportType = isset($_GET['type']) ? sanitizeInput($_GET['type']) : '';
$startDate = isset($_GET['start_date']) ? sanitizeInput($_GET['start_date']) : date('Y-m-01'); // بداية الشهر الحالي
$endDate = isset($_GET['end_date']) ? sanitizeInput($_GET['end_date']) : date('Y-m-t'); // نهاية الشهر الحالي

// تحويل التواريخ إلى تنسيق قاعدة البيانات إن وجدت
if (!empty($startDate)) {
    $startDate = dateToDatabase($startDate);
}
if (!empty($endDate)) {
    $endDate = dateToDatabase($endDate);
}

// عنوان الصفحة
$pageTitle = 'التقارير المالية';

// تضمين ملف الهيدر
include '../includes/header.php';
?>

<div class="d-flex justify-content-between align-items-center mb-4">
    <h1 class="h3 mb-0"><i class="fas fa-file-alt me-2"></i> التقارير المالية</h1>
    <div>
        <a href="<?php echo SITE_URL; ?>/finance/index.php" class="btn btn-secondary">
            <i class="fas fa-arrow-right"></i> العودة إلى لوحة التحكم المالية
        </a>
    </div>
</div>

<div class="row mb-4">
    <div class="col-md-4">
        <div class="card mb-4">
            <div class="card-header bg-white">
                <i class="fas fa-filter me-2"></i> خيارات التقرير
            </div>
            <div class="card-body">
                <form action="" method="get">
                    <div class="mb-3">
                        <label for="type" class="form-label">نوع التقرير</label>
                        <select class="form-select" id="type" name="type">
                            <option value="summary" <?php echo $reportType == 'summary' ? 'selected' : ''; ?>>ملخص مالي</option>
                            <option value="income" <?php echo $reportType == 'income' ? 'selected' : ''; ?>>الإيرادات</option>
                            <option value="expenses" <?php echo $reportType == 'expenses' ? 'selected' : ''; ?>>المصروفات</option>
                            <option value="subscriptions" <?php echo $reportType == 'subscriptions' ? 'selected' : ''; ?>>الاشتراكات</option>
                            <option value="monthly_payments" <?php echo $reportType == 'monthly_payments' ? 'selected' : ''; ?>>الدفعات الشهرية</option>
                        </select>
                    </div>
                    <div class="mb-3">
                        <label for="start_date" class="form-label">من تاريخ</label>
                        <input type="date" class="form-control" id="start_date" name="start_date" value="<?php echo $startDate; ?>">
                    </div>
                    <div class="mb-3">
                        <label for="end_date" class="form-label">إلى تاريخ</label>
                        <input type="date" class="form-control" id="end_date" name="end_date" value="<?php echo $endDate; ?>">
                    </div>
                    <button type="submit" class="btn btn-primary w-100">
                        <i class="fas fa-search me-1"></i> عرض التقرير
                    </button>
                </form>
            </div>
        </div>
        
        <div class="card">
            <div class="card-header bg-white">
                <i class="fas fa-file-download me-2"></i> تصدير التقرير
            </div>
            <div class="card-body">
                <form action="" method="post" class="row g-3">
                    <input type="hidden" name="export_type" id="export_type" value="pdf">
                    <input type="hidden" name="report_type" value="<?php echo $reportType; ?>">
                    <input type="hidden" name="start_date" value="<?php echo $startDate; ?>">
                    <input type="hidden" name="end_date" value="<?php echo $endDate; ?>">
                    
                    <div class="col-12">
                        <div class="btn-group w-100" role="group">
                            <button type="button" class="btn btn-outline-primary export-btn" data-export="pdf">
                                <i class="fas fa-file-pdf me-1"></i> PDF
                            </button>
                            <button type="button" class="btn btn-outline-success export-btn" data-export="excel">
                                <i class="fas fa-file-excel me-1"></i> Excel
                            </button>
                            <button type="button" class="btn btn-outline-secondary export-btn" data-export="print">
                                <i class="fas fa-print me-1"></i> طباعة
                            </button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
    
    <div class="col-md-8">
        <div class="card">
            <div class="card-header bg-white d-flex justify-content-between align-items-center">
                <h5 class="mb-0">
                <?php 
                $reportTitle = '';
                switch ($reportType) {
                    case 'income':
                        $reportTitle = '<i class="fas fa-money-bill-wave me-2"></i> تقرير الإيرادات';
                        break;
                    case 'expenses':
                        $reportTitle = '<i class="fas fa-money-bill-alt me-2"></i> تقرير المصروفات';
                        break;
                    case 'subscriptions':
                        $reportTitle = '<i class="fas fa-id-card me-2"></i> تقرير الاشتراكات';
                        break;
                    case 'monthly_payments':
                        $reportTitle = '<i class="fas fa-calendar-alt me-2"></i> تقرير الدفعات الشهرية';
                        break;
                    default:
                        $reportTitle = '<i class="fas fa-chart-pie me-2"></i> الملخص المالي';
                }
                echo $reportTitle;
                ?>
                </h5>
                <span class="text-muted">
                    <?php echo formatDate($startDate); ?> - <?php echo formatDate($endDate); ?>
                </span>
            </div>
            <div class="card-body report-content" id="report-content">
                <?php if (!$reportType || $reportType == 'summary'): ?>
                    <!-- الملخص المالي -->
                    <div class="row">
                        <div class="col-md-6">
                            <div class="card bg-light mb-3">
                                <div class="card-body text-center">
                                    <h6 class="card-title">إجمالي الإيرادات</h6>
                                    <h4 class="text-success">
                                        <?php echo number_format((float)calculateTotalIncome($startDate, $endDate), 2); ?> <?php echo CURRENCY; ?>
                                    </h4>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="card bg-light mb-3">
                                <div class="card-body text-center">
                                    <h6 class="card-title">إجمالي المصروفات</h6>
                                    <h4 class="text-danger">
                                        <?php echo number_format((float)calculateTotalExpenses($startDate, $endDate), 2); ?> <?php echo CURRENCY; ?>
                                    </h4>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-12">
                            <div class="card bg-light mb-3">
                                <div class="card-body text-center">
                                    <h6 class="card-title">الرصيد</h6>
                                    <h4 class="<?php echo (float)calculateBalance($startDate, $endDate) >= 0 ? 'text-success' : 'text-danger'; ?>">
                                        <?php echo number_format((float)calculateBalance($startDate, $endDate), 2); ?> <?php echo CURRENCY; ?>
                                    </h4>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <!-- تفاصيل مصادر الإيرادات -->
<h5 class="mt-4 mb-3">تفاصيل مصادر الإيرادات</h5>
<div class="row">
    <?php
    // حساب الإيرادات حسب المصدر
    $query = "SELECT source, SUM(amount) as total FROM income 
              WHERE payment_date BETWEEN :start_date AND :end_date 
              GROUP BY source";
    $incomeBySource = fetchAll($query, [':start_date' => $startDate, ':end_date' => $endDate]);
    
    // تحديد الألوان والعناوين لكل مصدر
    $sourceInfo = [
        'subscription' => [
            'title' => 'الاشتراكات السنوية',
            'color' => 'primary',
            'icon' => 'fas fa-id-card'
        ],
        'monthly_subscription' => [
            'title' => 'الدفعات الشهرية',
            'color' => 'info',
            'icon' => 'fas fa-calendar-alt'
        ],
        'event' => [
            'title' => 'الفعاليات',
            'color' => 'success',
            'icon' => 'fas fa-calendar-check'
        ],
        'donation' => [
            'title' => 'التبرعات',
            'color' => 'warning',
            'icon' => 'fas fa-hand-holding-heart'
        ],
        'other' => [
            'title' => 'مصادر أخرى',
            'color' => 'secondary',
            'icon' => 'fas fa-ellipsis-h'
        ]
    ];
    
    // عرض الإيرادات حسب المصدر
    foreach ($incomeBySource as $income) {
        $source = $income['source'];
        $info = isset($sourceInfo[$source]) ? $sourceInfo[$source] : $sourceInfo['other'];
        ?>
        <div class="col-md-4 mb-3">
            <div class="card border-<?php echo $info['color']; ?> h-100">
                <div class="card-body text-center">
                    <h6 class="card-title">
                        <i class="<?php echo $info['icon']; ?> me-2"></i>
                        <?php echo $info['title']; ?>
                    </h6>
                    <h5 class="text-<?php echo $info['color']; ?> mt-3">
                        <?php echo number_format((float)$income['total'], 2); ?> <?php echo CURRENCY; ?>
                    </h5>
                </div>
            </div>
        </div>
        <?php
    }
    ?>
</div>

                    
                    <h5 class="mt-4 mb-3">توزيع الإيرادات والمصروفات</h5>
                    <div class="table-responsive">
                        <table class="table table-striped">
                            <thead>
                                <tr>
                                    <th>الشهر</th>
                                    <th>الإيرادات</th>
                                    <th>المصروفات</th>
                                    <th>الرصيد</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php
                                // شهرياً من تاريخ البدء إلى النهاية
                                $currentDate = new DateTime($startDate);
                                $endDateTime = new DateTime($endDate);
                                
                                while ($currentDate <= $endDateTime) {
                                    $monthStart = $currentDate->format('Y-m-01');
                                    $monthEnd = $currentDate->format('Y-m-t');
                                    
                                    $monthlyIncome = calculateTotalIncome($monthStart, $monthEnd);
                                    $monthlyExpenses = calculateTotalExpenses($monthStart, $monthEnd);
                                    $monthlyBalance = $monthlyIncome - $monthlyExpenses;
                                    
                                    echo '<tr>';
                                    echo '<td>' . formatDate($monthStart, 'M Y') . '</td>';
                                    echo '<td class="text-success">' . number_format((float)$monthlyIncome, 2) . ' ' . CURRENCY . '</td>';
                                    echo '<td class="text-danger">' . number_format((float)$monthlyExpenses, 2) . ' ' . CURRENCY . '</td>';
                                    echo '<td class="' . ($monthlyBalance >= 0 ? 'text-success' : 'text-danger') . '">' . number_format((float)$monthlyBalance, 2) . ' ' . CURRENCY . '</td>';
                                    echo '</tr>';
                                    
                                    $currentDate->modify('+1 month');
                                }
                                ?>
                            </tbody>
                        </table>
                    </div>
                    
                <?php elseif ($reportType == 'income'): ?>
                    <!-- تقرير الإيرادات -->
                    <h5 class="mb-3">تفاصيل الإيرادات</h5>
                    <?php
                    $query = "SELECT * FROM income 
                              WHERE payment_date BETWEEN :start_date AND :end_date 
                              ORDER BY payment_date DESC";
                    $incomes = fetchAll($query, [':start_date' => $startDate, ':end_date' => $endDate]);
                    ?>
                    
                    <?php if (count($incomes) > 0): ?>
                        <div class="table-responsive">
                            <table class="table table-striped table-hover">
                                <thead>
                                    <tr>
                                        <th>التاريخ</th>
                                        <th>المصدر</th>
                                        <th>الوصف</th>
                                        <th>طريقة الدفع</th>
                                        <th>المبلغ</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($incomes as $income): ?>
                                        <tr>
                                            <td><?php echo formatDate($income['payment_date']); ?></td>
                                            <td>
                                                <?php 
                                                switch ($income['source']) {
                                                    case 'subscription':
                                                        echo '<span class="badge bg-primary">اشتراك سنوي</span>';
                                                        break;
                                                    case 'monthly_subscription':
                                                        echo '<span class="badge bg-info">اشتراك شهري</span>';
                                                        break;
                                                    case 'event':
                                                        echo '<span class="badge bg-success">فعالية</span>';
                                                        break;
                                                    case 'donation':
                                                        echo '<span class="badge bg-warning">تبرع</span>';
                                                        break;
                                                    default:
                                                        echo '<span class="badge bg-secondary">أخرى</span>';
                                                }
                                                ?>
                                            </td>
                                            <td><?php echo $income['description']; ?></td>
                                            <td><?php echo $income['payment_method']; ?></td>
                                            <td class="text-success"><?php echo number_format((float)$income['amount'], 2); ?> <?php echo CURRENCY; ?></td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                                <tfoot>
                                    <tr class="table-secondary fw-bold">
                                        <td colspan="4">الإجمالي</td>
                                        <td class="text-success">
                                            <?php 
                                            $totalIncome = array_sum(array_column($incomes, 'amount'));
                                            echo number_format((float)$totalIncome, 2); 
                                            ?> 
                                            <?php echo CURRENCY; ?>
                                        </td>
                                    </tr>
                                </tfoot>
                            </table>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info">
                            <i class="fas fa-info-circle me-2"></i> لا توجد إيرادات خلال الفترة المحددة
                        </div>
                    <?php endif; ?>
                    
                <?php elseif ($reportType == 'expenses'): ?>
                    <!-- تقرير المصروفات -->
                    <h5 class="mb-3">تفاصيل المصروفات</h5>
                    <?php
                    $query = "SELECT e.* 
                              FROM expenses e 
                              WHERE e.expense_date BETWEEN :start_date AND :end_date 
                              ORDER BY e.expense_date DESC";
                    $expenses = fetchAll($query, [':start_date' => $startDate, ':end_date' => $endDate]);
                    ?>
                    
                    <?php if (count($expenses) > 0): ?>
                        <div class="table-responsive">
                            <table class="table table-striped table-hover">
                                <thead>
                                    <tr>
                                        <th>التاريخ</th>
                                        <th>الفئة</th>
                                        <th>الوصف</th>
                                        <th>طريقة الدفع</th>
                                        <th>المبلغ</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($expenses as $expense): ?>
                                        <tr>
                                            <td><?php echo formatDate($expense['expense_date']); ?></td>
                                            <td><?php echo $expense['category']; ?></td>
                                            <td><?php echo $expense['description']; ?></td>
                                            <td><?php echo $expense['payment_method']; ?></td>
                                            <td class="text-danger"><?php echo number_format((float)$expense['amount'], 2); ?> <?php echo CURRENCY; ?></td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                                <tfoot>
                                    <tr class="table-secondary fw-bold">
                                        <td colspan="4">الإجمالي</td>
                                        <td class="text-danger">
                                            <?php 
                                            $totalExpenses = array_sum(array_column($expenses, 'amount'));
                                            echo number_format((float)$totalExpenses, 2); 
                                            ?> 
                                            <?php echo CURRENCY; ?>
                                        </td>
                                    </tr>
                                </tfoot>
                            </table>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info">
                            <i class="fas fa-info-circle me-2"></i> لا توجد مصروفات خلال الفترة المحددة
                        </div>
                    <?php endif; ?>
                    
                <?php elseif ($reportType == 'subscriptions'): ?>
                    <!-- تقرير الاشتراكات -->
                    <h5 class="mb-3">تفاصيل الاشتراكات</h5>
                    <?php
                    $query = "SELECT s.*, m.first_name, m.last_name, c.name as category_name 
                              FROM subscriptions s 
                              JOIN members m ON s.member_id = m.id 
                              JOIN categories c ON m.category_id = c.id 
                              WHERE s.start_date BETWEEN :start_date AND :end_date 
                              ORDER BY s.start_date DESC";
                    $subscriptions = fetchAll($query, [':start_date' => $startDate, ':end_date' => $endDate]);
                    ?>
                    
                    <?php if (count($subscriptions) > 0): ?>
                        <div class="table-responsive">
                            <table class="table table-striped table-hover">
                                <thead>
                                    <tr>
                                        <th>تاريخ الدفع</th>
                                        <th>المنخرط</th>
                                        <th>الفئة</th>
                                        <th>نوع الاشتراك</th>
                                        <th>مدة الاشتراك</th>
                                        <th>تاريخ الانتهاء</th>
                                        <th>المبلغ</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($subscriptions as $subscription): ?>
                                        <tr>
                                            <td><?php echo formatDate($subscription['start_date']); ?></td>
                                            <td><?php echo $subscription['first_name'] . ' ' . $subscription['last_name']; ?></td>
                                            <td><?php echo $subscription['category_name']; ?></td>
                                            <td><?php echo $subscription['subscription_type']; ?></td>
                                            <td><?php echo $subscription['duration']; ?> أشهر</td>
                                            <td><?php echo formatDate($subscription['end_date']); ?></td>
                                            <td class="text-success"><?php echo number_format((float)$subscription['amount_paid'], 2); ?> <?php echo CURRENCY; ?></td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                                <tfoot>
                                    <tr class="table-secondary fw-bold">
                                        <td colspan="6">الإجمالي</td>
                                        <td class="text-success">
                                            <?php 
                                            $totalSubscriptions = array_sum(array_column($subscriptions, 'amount_paid'));
                                            echo number_format((float)$totalSubscriptions, 2); 
                                            ?> 
                                            <?php echo CURRENCY; ?>
                                        </td>
                                    </tr>
                                </tfoot>
                            </table>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info">
                            <i class="fas fa-info-circle me-2"></i> لا توجد اشتراكات خلال الفترة المحددة
                        </div>
                    <?php endif; ?>
                
                <?php elseif ($reportType == 'monthly_payments'): ?>
                    <!-- تقرير الدفعات الشهرية -->
                    <h5 class="mb-3">تفاصيل الدفعات الشهرية</h5>
                    <?php
                    $query = "SELECT mp.*, m.first_name, m.last_name, c.name as category_name 
                              FROM monthly_payments mp 
                              JOIN members m ON mp.member_id = m.id 
                              JOIN categories c ON m.category_id = c.id 
                              WHERE (mp.payment_month BETWEEN :start_date AND :end_date OR mp.payment_date BETWEEN :start_date AND :end_date)
                              AND mp.payment_status = 'paid'
                              ORDER BY mp.payment_month DESC, m.first_name ASC";
                    $monthlyPayments = fetchAll($query, [':start_date' => $startDate, ':end_date' => $endDate]);
                    ?>
                    
                    <?php if (count($monthlyPayments) > 0): ?>
                        <div class="table-responsive">
                            <table class="table table-striped table-hover">
                                <thead>
                                    <tr>
                                        <th>شهر الدفع</th>
                                        <th>تاريخ الدفع</th>
                                        <th>المنخرط</th>
                                        <th>الفئة</th>
                                        <th>طريقة الدفع</th>
                                        <th>ملاحظات</th>
                                        <th>المبلغ</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($monthlyPayments as $payment): ?>
                                        <tr>
                                            <td><?php echo date('m/Y', strtotime($payment['payment_month'])); ?></td>
                                            <td><?php echo formatDate($payment['payment_date']); ?></td>
                                            <td><?php echo $payment['first_name'] . ' ' . $payment['last_name']; ?></td>
                                            <td><?php echo $payment['category_name']; ?></td>
                                            <td><?php echo $payment['payment_method']; ?></td>
                                            <td><?php echo $payment['notes']; ?></td>
                                            <td class="text-success"><?php echo number_format((float)$payment['amount_paid'], 2); ?> <?php echo CURRENCY; ?></td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                                <tfoot>
                                    <tr class="table-secondary fw-bold">
                                        <td colspan="6">الإجمالي</td>
                                        <td class="text-success">
                                            <?php 
                                            $totalMonthlyPayments = array_sum(array_column($monthlyPayments, 'amount_paid'));
                                            echo number_format((float)$totalMonthlyPayments, 2); 
                                            ?> 
                                            <?php echo CURRENCY; ?>
                                        </td>
                                    </tr>
                                </tfoot>
                            </table>
                        </div>
                        
                        <!-- إحصائيات الدفعات الشهرية -->
                        <div class="row mt-4">
                            <div class="col-md-12">
                                <h5 class="mb-3">إحصائيات الدفعات الشهرية</h5>
                                <div class="table-responsive">
                                    <table class="table table-bordered">
                                        <thead class="table-light">
                                            <tr>
                                                <th>الشهر</th>
                                                <th>عدد الدفعات</th>
                                                <th>إجمالي المبالغ</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <?php
                                            // تجميع الدفعات حسب الشهر
                                            $monthlyStats = [];
                                            foreach ($monthlyPayments as $payment) {
                                                $month = date('m/Y', strtotime($payment['payment_month']));
                                                if (!isset($monthlyStats[$month])) {
                                                    $monthlyStats[$month] = [
                                                        'count' => 0,
                                                        'total' => 0
                                                    ];
                                                }
                                                $monthlyStats[$month]['count']++;
                                                $monthlyStats[$month]['total'] += (float)$payment['amount_paid'];
                                            }
                                            
                                            // ترتيب الإحصائيات حسب الشهر (تنازلياً)
                                            krsort($monthlyStats);
                                            
                                            foreach ($monthlyStats as $month => $stats):
                                            ?>
                                                <tr>
                                                    <td><?php echo $month; ?></td>
                                                    <td><?php echo $stats['count']; ?></td>
                                                    <td class="text-success"><?php echo number_format($stats['total'], 2); ?> <?php echo CURRENCY; ?></td>
                                                </tr>
                                            <?php endforeach; ?>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info">
                            <i class="fas fa-info-circle me-2"></i> لا توجد دفعات شهرية خلال الفترة المحددة
                        </div>
                    <?php endif; ?>
                <?php endif; ?>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // تغيير نوع التصدير
    const exportButtons = document.querySelectorAll('.export-btn');
    const exportTypeInput = document.getElementById('export_type');
    
    exportButtons.forEach(button => {
        button.addEventListener('click', function() {
            const exportType = this.getAttribute('data-export');
            exportTypeInput.value = exportType;
            
            if (exportType === 'print') {
                window.print();
            } else {
                // هنا يمكن إضافة كود لتصدير التقرير بتنسيق PDF أو Excel
                alert('سيتم تفعيل خاصية التصدير بتنسيق ' + exportType + ' قريباً');
            }
        });
    });
});
</script>

<!-- أنماط الطباعة -->
<style>
@media print {
    header, nav, footer, .btn, form, .card-header, .col-md-4, .no-print {
        display: none !important;
    }
    
    .card {
        border: none !important;
        box-shadow: none !important;
    }
    
    .card-body {
        padding: 0 !important;
    }
    
    .col-md-8 {
        width: 100% !important;
        flex: 0 0 100% !important;
        max-width: 100% !important;
    }
    
    table {
        width: 100% !important;
    }
    
    body {
        padding: 0 !important;
        margin: 0 !important;
    }
    
    @page {
        size: A4;
        margin: 1cm;
    }
    
    tr {
        page-break-inside: avoid;
    }
}
</style>

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