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

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

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

// تحديد الفترة الزمنية للتقرير
$startMonth = isset($_GET['start_month']) ? sanitizeInput($_GET['start_month']) : date('Y-m', strtotime('-6 months'));
$endMonth = isset($_GET['end_month']) ? sanitizeInput($_GET['end_month']) : date('Y-m');
$categoryId = isset($_GET['category_id']) ? (int) sanitizeInput($_GET['category_id']) : null;
$memberId = isset($_GET['member_id']) ? (int) sanitizeInput($_GET['member_id']) : null;
$paymentStatus = isset($_GET['payment_status']) ? sanitizeInput($_GET['payment_status']) : null;

// تحويل التواريخ إلى صيغة كاملة (مع اليوم الأول من الشهر)
$startDate = $startMonth . '-01';
$endDate = date('Y-m-t', strtotime($endMonth . '-01')); // آخر يوم في الشهر المحدد

// بناء استعلام البحث
$query = "
    SELECT mp.*, m.first_name, m.last_name, m.category_id, c.name as category_name, u.full_name as created_by_name
    FROM monthly_payments mp
    JOIN members m ON mp.member_id = m.id
    LEFT JOIN categories c ON m.category_id = c.id
    LEFT JOIN users u ON mp.created_by = u.id
    WHERE mp.payment_month BETWEEN ? AND ?
";

$params = [$startDate, $endDate];

// إضافة فلاتر إضافية إذا تم تحديدها
if ($categoryId) {
    $query .= " AND m.category_id = ?";
    $params[] = $categoryId;
}

if ($memberId) {
    $query .= " AND mp.member_id = ?";
    $params[] = $memberId;
}

if ($paymentStatus) {
    $query .= " AND mp.payment_status = ?";
    $params[] = $paymentStatus;
}

$query .= " ORDER BY mp.payment_month DESC, m.first_name, m.last_name";

// تنفيذ الاستعلام
$payments = fetchAll($query, $params);

// الحصول على قائمة المنخرطين للفلتر
$members = fetchAll("SELECT id, first_name, last_name FROM members WHERE status = 'active' ORDER BY first_name, last_name");

// الحصول على قائمة الفئات للفلتر
$categories = fetchAll("SELECT id, name FROM categories ORDER BY name");

// تنسيق التاريخ للعرض
function formatMonthYear($date) {
    $timestamp = strtotime($date);
    return date('m/Y', $timestamp);
}

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

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

<div class="container-fluid py-4">
    <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="index.php" class="btn btn-secondary">
                <i class="fas fa-arrow-right"></i> العودة إلى إدارة الاشتراكات
            </a>
        </div>
    </div>

    <?php displayAlert(); ?>

    <!-- فلاتر البحث -->
    <div class="card mb-4">
        <div class="card-header bg-white">
            <h5 class="mb-0"><i class="fas fa-filter me-2"></i> فلاتر البحث</h5>
        </div>
        <div class="card-body">
            <form action="" method="get" class="row g-3">
                <div class="col-md-2">
                    <label for="start_month" class="form-label">من شهر</label>
                    <input type="month" class="form-control" id="start_month" name="start_month" value="<?php echo $startMonth; ?>">
                </div>
                <div class="col-md-2">
                    <label for="end_month" class="form-label">إلى شهر</label>
                    <input type="month" class="form-control" id="end_month" name="end_month" value="<?php echo $endMonth; ?>">
                </div>
                <div class="col-md-3">
                    <label for="category_id" class="form-label">الفئة</label>
                    <select class="form-select" id="category_id" name="category_id">
                        <option value="">جميع الفئات</option>
                        <?php foreach ($categories as $category): ?>
                            <option value="<?php echo $category['id']; ?>" <?php echo $categoryId == $category['id'] ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($category['name']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="col-md-3">
                    <label for="member_id" class="form-label">المنخرط</label>
                    <select class="form-select" id="member_id" name="member_id">
                        <option value="">جميع المنخرطين</option>
                        <?php foreach ($members as $member): ?>
                            <option value="<?php echo $member['id']; ?>" <?php echo $memberId == $member['id'] ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($member['first_name'] . ' ' . $member['last_name']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="col-md-2">
                    <label for="payment_status" class="form-label">حالة الدفع</label>
                    <select class="form-select" id="payment_status" name="payment_status">
                        <option value="">الكل</option>
                        <option value="paid" <?php echo $paymentStatus === 'paid' ? 'selected' : ''; ?>>مدفوع</option>
                        <option value="partial" <?php echo $paymentStatus === 'partial' ? 'selected' : ''; ?>>مدفوع جزئيا</option>
                        <option value="unpaid" <?php echo $paymentStatus === 'unpaid' ? 'selected' : ''; ?>>غير مدفوع</option>
                    </select>
                </div>
                <div class="col-12 text-end">
                    <button type="submit" class="btn btn-primary">
                        <i class="fas fa-search me-1"></i> بحث
                    </button>
                    <a href="report.php" class="btn btn-secondary">
                        <i class="fas fa-redo me-1"></i> إعادة ضبط
                    </a>
                    <button type="button" class="btn btn-success" id="exportBtn">
                        <i class="fas fa-file-excel me-1"></i> تصدير إلى Excel
                    </button>
                    <button type="button" class="btn btn-info" id="printReportBtn">
                        <i class="fas fa-print me-1"></i> طباعة التقرير
                    </button>
                </div>
            </form>
        </div>
    </div>

    <!-- نتائج البحث -->
    <div class="card">
        <div class="card-header bg-white d-flex justify-content-between align-items-center">
            <h5 class="mb-0"><i class="fas fa-list me-2"></i> نتائج البحث</h5>
            <span class="badge bg-info"><?php echo count($payments); ?> سجل</span>
        </div>
        <div class="card-body">
            <div class="table-responsive">
                <table class="table table-striped table-hover" id="paymentsTable">
                    <thead>
                        <tr>
                            <th>المنخرط</th>
                            <th>الفئة</th>
                            <th>شهر الاشتراك</th>
                            <th>حالة الدفع</th>
                            <th>تاريخ الدفع</th>
                            <th>المبلغ المدفوع</th>
                            <th>طريقة الدفع</th>
                            <th>ملاحظات</th>
                            <th>المسجل</th>
                            <th>تاريخ التسجيل</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php if (empty($payments)): ?>
                            <tr>
                                <td colspan="10" class="text-center">لا توجد نتائج للبحث</td>
                            </tr>
                        <?php else: ?>
                            <?php foreach ($payments as $payment): ?>
                                <tr>
                                    <td><?php echo htmlspecialchars($payment['first_name'] . ' ' . $payment['last_name']); ?></td>
                                    <td><?php echo htmlspecialchars($payment['category_name'] ?? '-'); ?></td>
                                    <td><?php echo formatMonthYear($payment['payment_month']); ?></td>
                                    <td>
                                        <?php if ($payment['payment_status'] == 'paid'): ?>
                                            <span class="badge bg-success">مدفوع</span>
                                        <?php elseif ($payment['payment_status'] == 'partial'): ?>
                                            <span class="badge bg-warning">مدفوع جزئيا</span>
                                        <?php else: ?>
                                            <span class="badge bg-danger">غير مدفوع</span>
                                        <?php endif; ?>
                                    </td>
                                    <td><?php echo $payment['payment_date'] ? date('d/m/Y', strtotime($payment['payment_date'])) : '-'; ?></td>
                                    <td><?php echo number_format($payment['amount_paid'], 2) . ' درهم'; ?></td>
                                    <td><?php echo getPaymentMethodName($payment['payment_method']); ?></td>
                                    <td><?php echo htmlspecialchars($payment['notes'] ?? '-'); ?></td>
                                    <td><?php echo htmlspecialchars($payment['created_by_name'] ?? '-'); ?></td>
                                    <td><?php echo date('d/m/Y', strtotime($payment['created_at'])); ?></td>
                                </tr>
                            <?php endforeach; ?>
                        <?php endif; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // إضافة وظيفة طباعة التقرير
    document.getElementById('printReportBtn').addEventListener('click', function() {
        // إنشاء نافذة طباعة جديدة
        let printWindow = window.open('', '_blank');
        
        // إنشاء محتوى HTML للطباعة
        let printContent = `
            <!DOCTYPE html>
            <html dir="rtl" lang="ar">
            <head>
                <meta charset="UTF-8">
                <title>تقرير الاشتراكات الشهرية</title>
                <style>
                    body { font-family: Arial, sans-serif; direction: rtl; }
                    h1 { text-align: center; margin-bottom: 20px; }
                    table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }
                    th, td { border: 1px solid #ddd; padding: 8px; text-align: right; }
                    th { background-color: #f2f2f2; }
                    .print-header { display: flex; justify-content: space-between; margin-bottom: 20px; }
                    .print-filters { margin-bottom: 20px; padding: 10px; border: 1px solid #ddd; background-color: #f9f9f9; }
                    .text-center { text-align: center; }
                    @media print {
                        button { display: none; }
                    }
                </style>
            </head>
            <body>
                <div class="print-header">
                    <h1>تقرير الاشتراكات الشهرية</h1>
                    <div>تاريخ الطباعة: ${new Date().toLocaleDateString('ar-MA')}</div>
                </div>
                
                <div class="print-filters">
                    <strong>الفترة:</strong> ${document.getElementById('start_month').value} إلى ${document.getElementById('end_month').value}
                    <br>
                    <strong>عدد السجلات:</strong> ${document.querySelectorAll('#paymentsTable tbody tr').length}
                </div>
                
                <table>
                    <thead>
                        <tr>
                            <th>المنخرط</th>
                            <th>الفئة</th>
                            <th>شهر الاشتراك</th>
                            <th>حالة الدفع</th>
                            <th>تاريخ الدفع</th>
                            <th>المبلغ المدفوع</th>
                            <th>طريقة الدفع</th>
                        </tr>
                    </thead>
                    <tbody>
        `;
        
        // نسخ بيانات الجدول
        const rows = document.querySelectorAll('#paymentsTable tbody tr');
        rows.forEach(row => {
            const cells = row.querySelectorAll('td');
            if (cells.length > 1) { // تجاهل صف "لا توجد نتائج"
                printContent += '<tr>';
                // إضافة الخلايا المطلوبة فقط (7 خلايا)
                for (let i = 0; i < 7; i++) {
                    if (cells[i]) {
                        printContent += '<td>' + cells[i].innerHTML + '</td>';
                    } else {
                        printContent += '<td>-</td>';
                    }
                }
                printContent += '</tr>';
            }
        });
        
        printContent += `
                    </tbody>
                </table>
                
                <button onclick="window.print(); window.close();" style="padding: 10px 20px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;">
                    طباعة
                </button>
            </body>
            </html>
        `;
        
        // كتابة المحتوى في نافذة الطباعة
        printWindow.document.open();
        printWindow.document.write(printContent);
        printWindow.document.close();
    });
    // تصدير البيانات إلى Excel
    document.getElementById('exportBtn').addEventListener('click', function() {
        // تحضير البيانات
        let table = document.getElementById('paymentsTable');
        let html = table.outerHTML.replace(/ /g, '%20');
        
        // إنشاء رابط التنزيل
        let a = document.createElement('a');
        a.href = 'data:application/vnd.ms-excel,' + html;
        a.download = 'تقرير_الاشتراكات_الشهرية_' + new Date().toISOString().slice(0,10) + '.xls';
        a.click();
    });
});

// دالة للحصول على اسم طريقة الدفع
function getPaymentMethodName(method) {
    switch(method) {
        case 'cash':
            return 'نقدا';
        case 'bank_transfer':
            return 'تحويل بنكي';
        case 'check':
            return 'شيك';
        default:
            return '-';
    }
}
</script>

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