<?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'); // نهاية السنة الحالية
$category = isset($_GET['category']) ? sanitizeInput($_GET['category']) : '';

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

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

$query .= " ORDER BY e.payment_date DESC";
$expensesRecords = fetchAll($query, $params);

// حساب إجمالي المصروفات
$totalExpenses = 0;
foreach ($expensesRecords as $record) {
    $totalExpenses += $record['amount'];
}

// حساب المصروفات الشهرية
$monthlyExpenses = [];
for ($i = 1; $i <= 12; $i++) {
    $monthlyExpenses[$i] = 0;
}

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

// حساب المصروفات حسب الفئة
$expensesByCategory = [];
$query = "SELECT category, SUM(amount) as total 
          FROM expenses 
          WHERE payment_date BETWEEN :start_date AND :end_date";
$params = [':start_date' => $startDate, ':end_date' => $endDate];

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

$query .= " GROUP BY category";
$expensesByCategoryRecords = fetchAll($query, $params);

foreach ($expensesByCategoryRecords as $record) {
    $expensesByCategory[$record['category']] = $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/expenses/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="category" class="form-label">فئة المصروف</label>
                <select class="form-select" id="category" name="category">
                    <option value="">جميع الفئات</option>
                    <option value="salaries" <?php echo ($category === 'salaries') ? 'selected' : ''; ?>>رواتب ومكافآت</option>
                    <option value="equipment" <?php echo ($category === 'equipment') ? 'selected' : ''; ?>>معدات وتجهيزات</option>
                    <option value="rent" <?php echo ($category === 'rent') ? 'selected' : ''; ?>>إيجارات</option>
                    <option value="utilities" <?php echo ($category === 'utilities') ? 'selected' : ''; ?>>فواتير ومرافق</option>
                    <option value="transportation" <?php echo ($category === 'transportation') ? 'selected' : ''; ?>>نقل ومواصلات</option>
                    <option value="maintenance" <?php echo ($category === 'maintenance') ? 'selected' : ''; ?>>صيانة</option>
                    <option value="events" <?php echo ($category === 'events') ? 'selected' : ''; ?>>فعاليات ومسابقات</option>
                    <option value="administrative" <?php echo ($category === 'administrative') ? 'selected' : ''; ?>>مصاريف إدارية</option>
                    <option value="other" <?php echo ($category === '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/expenses/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-danger 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($category)) {
                                $categoriesLabels = [
                                    'salaries' => 'رواتب ومكافآت',
                                    'equipment' => 'معدات وتجهيزات',
                                    'rent' => 'إيجارات',
                                    'utilities' => 'فواتير ومرافق',
                                    'transportation' => 'نقل ومواصلات',
                                    'maintenance' => 'صيانة',
                                    'events' => 'فعاليات ومسابقات',
                                    'administrative' => 'مصاريف إدارية',
                                    'other' => 'أخرى'
                                ];
                                echo $categoriesLabels[$category] ?? $category;
                            } 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-danger fw-bold"><?php echo number_format($totalExpenses, 2); ?> درهم</td>
                    </tr>
                    <tr>
                        <th class="bg-light">عدد المعاملات</th>
                        <td><?php echo count($expensesRecords); ?> معاملة</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-danger text-white">
                <i class="fas fa-chart-line me-2"></i> المصروفات الشهرية
            </div>
            <div class="card-body">
                <canvas id="monthlyExpensesChart" 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="expensesByCategoryChart" 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="expenses-details-table">
                <thead>
                    <tr>
                        <th>التاريخ</th>
                        <th>الفئة</th>
                        <th>الوصف</th>
                        <th>طريقة الدفع</th>
                        <th>رقم الإيصال</th>
                        <th>المبلغ</th>
                        <th>مسجل بواسطة</th>
                        <th class="print-hide">الإيصال</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (count($expensesRecords) > 0): ?>
                        <?php foreach ($expensesRecords as $record): ?>
                            <tr>
                                <td><?php echo formatDate($record['payment_date']); ?></td>
                                <td>
                                    <?php
                                    $categoriesLabels = [
                                        'salaries' => 'رواتب ومكافآت',
                                        'equipment' => 'معدات وتجهيزات',
                                        'rent' => 'إيجارات',
                                        'utilities' => 'فواتير ومرافق',
                                        'transportation' => 'نقل ومواصلات',
                                        'maintenance' => 'صيانة',
                                        'events' => 'فعاليات ومسابقات',
                                        'administrative' => 'مصاريف إدارية',
                                        'other' => 'أخرى'
                                    ];
                                    echo $categoriesLabels[$record['category']] ?? $record['category'];
                                    ?>
                                </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>
                                <td class="print-hide">
                                    <?php if (!empty($record['receipt_file'])): ?>
                                        <?php
                                        $fileExtension = pathinfo($record['receipt_file'], PATHINFO_EXTENSION);
                                        $isImage = in_array(strtolower($fileExtension), ['jpg', 'jpeg', 'png', 'gif']);
                                        ?>
                                        <?php if ($isImage): ?>
                                            <a href="<?php echo SITE_URL . '/uploads/receipts/' . $record['receipt_file']; ?>" target="_blank" class="btn btn-sm btn-outline-primary">
                                                <i class="fas fa-image"></i> عرض
                                            </a>
                                        <?php else: ?>
                                            <a href="<?php echo SITE_URL . '/uploads/receipts/' . $record['receipt_file']; ?>" target="_blank" class="btn btn-sm btn-outline-primary">
                                                <i class="fas fa-file-pdf"></i> عرض
                                            </a>
                                        <?php endif; ?>
                                    <?php else: ?>
                                        <span class="text-muted">-</span>
                                    <?php endif; ?>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    <?php else: ?>
                        <tr>
                            <td colspan="8" class="text-center">لا توجد بيانات متاحة</td>
                        </tr>
                    <?php endif; ?>
                </tbody>
                <tfoot>
                    <tr class="table-danger">
                        <th colspan="5" class="text-end">الإجمالي:</th>
                        <th><?php echo number_format($totalExpenses, 2); ?> درهم</th>
                        <th colspan="2"></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() {
    // تهيئة جدول تفاصيل المصروفات
    $('#expenses-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 monthlyExpensesCtx = document.getElementById('monthlyExpensesChart').getContext('2d');
    const monthlyExpensesChart = new Chart(monthlyExpensesCtx, {
        type: 'line',
        data: {
            labels: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
            datasets: [{
                label: 'المصروفات الشهرية (درهم)',
                data: [
                    <?php echo implode(', ', array_values($monthlyExpenses)); ?>
                ],
                backgroundColor: 'rgba(220, 53, 69, 0.2)',
                borderColor: 'rgba(220, 53, 69, 1)',
                borderWidth: 2,
                tension: 0.1
            }]
        },
        options: {
            responsive: true,
            scales: {
                y: {
                    beginAtZero: true
                }
            }
        }
    });
    
    // رسم بياني للمصروفات حسب الفئة
    const expensesByCategoryCtx = document.getElementById('expensesByCategoryChart').getContext('2d');
    const expensesByCategoryChart = new Chart(expensesByCategoryCtx, {
        type: 'pie',
        data: {
            labels: [
                <?php 
                $categoriesLabels = [
                    'salaries' => 'رواتب ومكافآت',
                    'equipment' => 'معدات وتجهيزات',
                    'rent' => 'إيجارات',
                    'utilities' => 'فواتير ومرافق',
                    'transportation' => 'نقل ومواصلات',
                    'maintenance' => 'صيانة',
                    'events' => 'فعاليات ومسابقات',
                    'administrative' => 'مصاريف إدارية',
                    'other' => 'أخرى'
                ];
                
                $labels = [];
                foreach ($expensesByCategory as $category => $amount) {
                    $labels[] = "'" . ($categoriesLabels[$category] ?? $category) . "'";
                }
                echo implode(', ', $labels);
                ?>
            ],
            datasets: [{
                data: [
                    <?php echo implode(', ', array_values($expensesByCategory)); ?>
                ],
                backgroundColor: [
                    'rgba(220, 53, 69, 0.7)',
                    'rgba(0, 123, 255, 0.7)',
                    'rgba(255, 193, 7, 0.7)',
                    'rgba(40, 167, 69, 0.7)',
                    'rgba(108, 117, 125, 0.7)',
                    'rgba(23, 162, 184, 0.7)',
                    'rgba(111, 66, 193, 0.7)',
                    'rgba(253, 126, 20, 0.7)',
                    'rgba(52, 58, 64, 0.7)'
                ],
                borderWidth: 1
            }]
        },
        options: {
            responsive: true
        }
    });
});
</script>

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