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

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

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

// تحديد الفترة الزمنية للتقرير
$startDate = isset($_GET['start_date']) ? sanitizeInput($_GET['start_date']) : date('Y-01-01'); // بداية السنة الحالية
$endDate = isset($_GET['end_date']) ? sanitizeInput($_GET['end_date']) : date('Y-12-31'); // نهاية السنة الحالية
$source = isset($_GET['source']) ? sanitizeInput($_GET['source']) : '';

// بناء استعلام الإيرادات
$query = "SELECT i.*, u.full_name as created_by_name 
          FROM income i 
          LEFT JOIN users u ON i.created_by = u.id 
          WHERE i.payment_date BETWEEN :start_date AND :end_date";
$params = [':start_date' => $startDate, ':end_date' => $endDate];

// إضافة فلتر المصدر إذا تم تحديده
if (!empty($source)) {
    $query .= " AND i.source = :source";
    $params[':source'] = $source;
}

$query .= " ORDER BY i.payment_date DESC";
$incomeRecords = fetchAll($query, $params);

// حساب إجمالي الإيرادات
$totalIncome = 0;
foreach ($incomeRecords as $record) {
    $totalIncome += $record['amount'];
}

// حساب الإيرادات الشهرية
$monthlyIncome = [];
for ($i = 1; $i <= 12; $i++) {
    $monthlyIncome[$i] = 0;
}

foreach ($incomeRecords as $record) {
    $month = date('n', strtotime($record['payment_date']));
    $monthlyIncome[$month] += $record['amount'];
}

// حساب الإيرادات حسب المصدر
$incomeBySource = [];
$query = "SELECT source, SUM(amount) as total 
          FROM income 
          WHERE payment_date BETWEEN :start_date AND :end_date";
$params = [':start_date' => $startDate, ':end_date' => $endDate];

// إضافة فلتر المصدر إذا تم تحديده
if (!empty($source)) {
    $query .= " AND source = :source";
    $params[':source'] = $source;
}

$query .= " GROUP BY source";
$incomeBySourceRecords = fetchAll($query, $params);

foreach ($incomeBySourceRecords as $record) {
    $incomeBySource[$record['source']] = $record['total'];
}

// عنوان الصفحة
$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-chart-line me-2"></i> تقرير الإيرادات</h1>
    <div>
        <a href="<?php echo SITE_URL; ?>/finance/income/index.php" class="btn btn-secondary">
            <i class="fas fa-arrow-right"></i> العودة إلى قائمة الإيرادات
        </a>
        <button class="btn btn-primary ms-2" onclick="window.print()">
            <i class="fas fa-print"></i> طباعة التقرير
        </button>
    </div>
</div>

<!-- فلتر البحث -->
<div class="card mb-4 print-hide">
    <div class="card-body">
        <form action="" method="get" class="row g-3">
            <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 $startDate; ?>">
            </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 $endDate; ?>">
            </div>
            <div class="col-md-3">
                <label for="source" class="form-label">مصدر الإيراد</label>
                <select class="form-select" id="source" name="source">
                    <option value="">جميع المصادر</option>
                    <option value="subscription" <?php echo ($source === 'subscription') ? 'selected' : ''; ?>>اشتراكات الأعضاء</option>
                    <option value="donation" <?php echo ($source === 'donation') ? 'selected' : ''; ?>>تبرعات</option>
                    <option value="event" <?php echo ($source === 'event') ? 'selected' : ''; ?>>فعاليات</option>
                    <option value="sponsorship" <?php echo ($source === 'sponsorship') ? 'selected' : ''; ?>>رعاية</option>
                    <option value="other" <?php echo ($source === 'other') ? 'selected' : ''; ?>>أخرى</option>
                </select>
            </div>
            <div class="col-md-3 d-flex align-items-end">
                <button type="submit" class="btn btn-primary me-2">
                    <i class="fas fa-search"></i> عرض التقرير
                </button>
                <a href="<?php echo SITE_URL; ?>/finance/income/report.php" class="btn btn-secondary">
                    <i class="fas fa-redo"></i> إعادة تعيين
                </a>
            </div>
        </form>
    </div>
</div>

<!-- معلومات التقرير -->
<div class="card mb-4">
    <div class="card-header bg-primary text-white">
        <i class="fas fa-info-circle me-2"></i> معلومات التقرير
    </div>
    <div class="card-body">
        <div class="row">
            <div class="col-md-6">
                <table class="table table-bordered">
                    <tr>
                        <th class="bg-light">الفترة</th>
                        <td><?php echo formatDate($startDate) . ' إلى ' . formatDate($endDate); ?></td>
                    </tr>
                    <tr>
                        <th class="bg-light">مصدر الإيراد</th>
                        <td>
                            <?php
                            if (!empty($source)) {
                                $sourcesLabels = [
                                    'subscription' => 'اشتراكات الأعضاء',
                                    'donation' => 'تبرعات',
                                    'event' => 'فعاليات',
                                    'sponsorship' => 'رعاية',
                                    'other' => 'أخرى'
                                ];
                                echo $sourcesLabels[$source] ?? $source;
                            } else {
                                echo 'جميع المصادر';
                            }
                            ?>
                        </td>
                    </tr>
                </table>
            </div>
            <div class="col-md-6">
                <table class="table table-bordered">
                    <tr>
                        <th class="bg-light">إجمالي الإيرادات</th>
                        <td class="text-success fw-bold"><?php echo number_format($totalIncome, 2); ?> درهم</td>
                    </tr>
                    <tr>
                        <th class="bg-light">عدد المعاملات</th>
                        <td><?php echo count($incomeRecords); ?> معاملة</td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
</div>

<!-- الرسوم البيانية -->
<div class="row mb-4">
    <!-- الإيرادات الشهرية -->
    <div class="col-md-6">
        <div class="card h-100">
            <div class="card-header bg-success text-white">
                <i class="fas fa-chart-line me-2"></i> الإيرادات الشهرية
            </div>
            <div class="card-body">
                <canvas id="monthlyIncomeChart" width="400" height="300"></canvas>
            </div>
        </div>
    </div>
    
    <!-- الإيرادات حسب المصدر -->
    <div class="col-md-6">
        <div class="card h-100">
            <div class="card-header bg-primary text-white">
                <i class="fas fa-chart-pie me-2"></i> الإيرادات حسب المصدر
            </div>
            <div class="card-body">
                <canvas id="incomeBySourceChart" width="400" height="300"></canvas>
            </div>
        </div>
    </div>
</div>

<!-- تفاصيل الإيرادات -->
<div class="card">
    <div class="card-header bg-white">
        <i class="fas fa-list me-2"></i> تفاصيل الإيرادات
    </div>
    <div class="card-body">
        <div class="table-responsive">
            <table class="table table-striped table-hover" id="income-details-table">
                <thead>
                    <tr>
                        <th>التاريخ</th>
                        <th>المصدر</th>
                        <th>الوصف</th>
                        <th>طريقة الدفع</th>
                        <th>رقم الإيصال</th>
                        <th>المبلغ</th>
                        <th>مسجل بواسطة</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (count($incomeRecords) > 0): ?>
                        <?php foreach ($incomeRecords as $record): ?>
                            <tr>
                                <td><?php echo formatDate($record['payment_date']); ?></td>
                                <td>
                                    <?php
                                    $sourcesLabels = [
                                        'subscription' => 'اشتراكات الأعضاء',
                                        'donation' => 'تبرعات',
                                        'event' => 'فعاليات',
                                        'sponsorship' => 'رعاية',
                                        'other' => 'أخرى'
                                    ];
                                    echo $sourcesLabels[$record['source']] ?? $record['source'];
                                    ?>
                                </td>
                                <td><?php echo $record['description']; ?></td>
                                <td>
                                    <?php
                                    $paymentMethods = [
                                        'cash' => 'نقدا',
                                        'bank_transfer' => 'تحويل بنكي',
                                        'check' => 'شيك'
                                    ];
                                    echo $paymentMethods[$record['payment_method']] ?? $record['payment_method'];
                                    ?>
                                </td>
                                <td><?php echo $record['receipt_number'] ?: '-'; ?></td>
                                <td><?php echo number_format($record['amount'], 2); ?> درهم</td>
                                <td><?php echo $record['created_by_name']; ?></td>
                            </tr>
                        <?php endforeach; ?>
                    <?php else: ?>
                        <tr>
                            <td colspan="7" class="text-center">لا توجد بيانات متاحة</td>
                        </tr>
                    <?php endif; ?>
                </tbody>
                <tfoot>
                    <tr class="table-success">
                        <th colspan="5" class="text-end">الإجمالي:</th>
                        <th><?php echo number_format($totalIncome, 2); ?> درهم</th>
                        <th></th>
                    </tr>
                </tfoot>
            </table>
        </div>
    </div>
</div>

<style>
@media print {
    .print-hide {
        display: none !important;
    }
    
    .navbar, .btn, footer {
        display: none !important;
    }
    
    .container {
        width: 100% !important;
        max-width: 100% !important;
    }
    
    .card {
        border: 1px solid #ddd !important;
        margin-bottom: 20px !important;
    }
    
    .card-header {
        background-color: #f8f9fa !important;
        color: #000 !important;
    }
}
</style>

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
    // تهيئة جدول تفاصيل الإيرادات
    $('#income-details-table').DataTable({
        "language": {
            "url": "//cdn.datatables.net/plug-ins/1.10.25/i18n/Arabic.json"
        },
        "order": [[0, "desc"]],
        "dom": 'Bfrtip',
        "buttons": [
            'excel', 'pdf'
        ]
    });
    
    // رسم بياني للإيرادات الشهرية
    const monthlyIncomeCtx = document.getElementById('monthlyIncomeChart').getContext('2d');
    const monthlyIncomeChart = new Chart(monthlyIncomeCtx, {
        type: 'line',
        data: {
            labels: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
            datasets: [{
                label: 'الإيرادات الشهرية (درهم)',
                data: [
                    <?php echo implode(', ', array_values($monthlyIncome)); ?>
                ],
                backgroundColor: 'rgba(40, 167, 69, 0.2)',
                borderColor: 'rgba(40, 167, 69, 1)',
                borderWidth: 2,
                tension: 0.1
            }]
        },
        options: {
            responsive: true,
            scales: {
                y: {
                    beginAtZero: true
                }
            }
        }
    });
    
    // رسم بياني للإيرادات حسب المصدر
    const incomeBySourceCtx = document.getElementById('incomeBySourceChart').getContext('2d');
    const incomeBySourceChart = new Chart(incomeBySourceCtx, {
        type: 'pie',
        data: {
            labels: [
                <?php 
                $sourcesLabels = [
                    'subscription' => 'اشتراكات الأعضاء',
                    'donation' => 'تبرعات',
                    'event' => 'فعاليات',
                    'sponsorship' => 'رعاية',
                    'other' => 'أخرى'
                ];
                
                $labels = [];
                foreach ($incomeBySource as $source => $amount) {
                    $labels[] = "'" . ($sourcesLabels[$source] ?? $source) . "'";
                }
                echo implode(', ', $labels);
                ?>
            ],
            datasets: [{
                data: [
                    <?php echo implode(', ', array_values($incomeBySource)); ?>
                ],
                backgroundColor: [
                    'rgba(40, 167, 69, 0.7)',
                    'rgba(0, 123, 255, 0.7)',
                    'rgba(255, 193, 7, 0.7)',
                    'rgba(220, 53, 69, 0.7)',
                    'rgba(108, 117, 125, 0.7)'
                ],
                borderWidth: 1
            }]
        },
        options: {
            responsive: true
        }
    });
});
</script>

<?php
// تضمين ملف الفوتر
include '../../includes/footer.php';
?>
