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

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

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

// الحصول على قائمة الدفعات الأخيرة
$recentPayments = fetchAll("
    SELECT mp.*, m.first_name, m.last_name, u.username as created_by_username
    FROM monthly_payments mp
    JOIN members m ON mp.member_id = m.id
    LEFT JOIN users u ON mp.created_by = u.id
    ORDER BY mp.created_at DESC
    LIMIT 50
");

// دالة مساعدة لتنسيق الشهر والسنة
function formatMonthYear($date) {
    return date('m/Y', strtotime($date));
}

// تحديد الشهر الحالي والسنة
$currentMonth = date('m');
$currentYear = date('Y');

// تضمين ملف الهيدر
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-money-bill-wave me-2"></i> إدارة الاشتراكات الشهرية</h1>
        <div>
            <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addPaymentModal">
                <i class="fas fa-plus me-1"></i> تسجيل دفعة جديدة
            </button>
            <button type="button" class="btn btn-success ms-2" data-bs-toggle="modal" data-bs-target="#multiplePaymentModal">
                <i class="fas fa-layer-group me-1"></i> تسجيل دفعات متعددة
            </button>
        </div>
    </div>

    <?php displayAlert(); ?>

    <div class="row">
        <div class="col-md-12">
            <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-history me-2"></i> سجل الاشتراكات الشهرية الأخيرة</h5>
                    <div>
                        <a href="report.php" class="btn btn-sm btn-outline-primary">
                            <i class="fas fa-chart-bar me-1"></i> تقارير الاشتراكات
                        </a>
                    </div>
                </div>
                <div class="card-body">
                    <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>
                                    <th>تاريخ التسجيل</th>
                                    <th>بواسطة</th>
                                    <th>إجراءات</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php if (empty($recentPayments)): ?>
                                    <tr>
                                        <td colspan="10" class="text-center">لا توجد دفعات مسجلة بعد</td>
                                    </tr>
                                <?php else: ?>
                                    <?php foreach ($recentPayments as $index => $payment): ?>
                                        <tr>
                                            <td><?php echo $index + 1; ?></td>
                                            <td>
                                                <a href="../members/view.php?id=<?php echo $payment['member_id']; ?>">
                                                    <?php echo htmlspecialchars($payment['first_name'] . ' ' . $payment['last_name']); ?>
                                                </a>
                                            </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 date('d/m/Y H:i', strtotime($payment['created_at'])); ?></td>
                                            <td><?php echo htmlspecialchars($payment['created_by_username']); ?></td>
                                            <td>
                                                <button type="button" class="btn btn-sm btn-primary edit-payment" 
                                                        data-id="<?php echo $payment['id']; ?>"
                                                        data-member-id="<?php echo $payment['member_id']; ?>"
                                                        data-payment-month="<?php echo date('Y-m', strtotime($payment['payment_month'])); ?>"
                                                        data-payment-status="<?php echo $payment['payment_status']; ?>"
                                                        data-payment-date="<?php echo $payment['payment_date']; ?>"
                                                        data-amount-paid="<?php echo $payment['amount_paid']; ?>"
                                                        data-payment-method="<?php echo $payment['payment_method']; ?>"
                                                        data-notes="<?php echo htmlspecialchars($payment['notes']); ?>">
                                                    <i class="fas fa-edit"></i>
                                                </button>
                                                <button type="button" class="btn btn-sm btn-danger delete-payment" 
                                                        data-id="<?php echo $payment['id']; ?>">
                                                    <i class="fas fa-trash"></i>
                                                </button>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                <?php endif; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- Modal إضافة دفعة جديدة -->
<div class="modal fade" id="addPaymentModal" tabindex="-1" aria-labelledby="addPaymentModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="addPaymentModalLabel">تسجيل دفعة اشتراك شهري جديدة</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <form action="save_payment.php" method="post" class="needs-validation" novalidate>
                <div class="modal-body">
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="member_id" class="form-label">المنخرط <span class="text-danger">*</span></label>
                            <select class="form-select" id="member_id" name="member_id" required>
                                <option value="">اختر المنخرط</option>
                                <?php foreach ($members as $member): ?>
                                    <option value="<?php echo $member['id']; ?>">
                                        <?php echo htmlspecialchars($member['first_name'] . ' ' . $member['last_name']); ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>
                            <div class="invalid-feedback">يرجى اختيار المنخرط</div>
                        </div>
                        <div class="col-md-6">
                            <label for="payment_month" class="form-label">شهر الاشتراك <span class="text-danger">*</span></label>
                            <input type="month" class="form-control" id="payment_month" name="payment_month" 
                                   value="<?php echo date('Y-m'); ?>" required>
                            <div class="invalid-feedback">يرجى تحديد شهر الاشتراك</div>
                        </div>
                    </div>
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="payment_status" class="form-label">حالة الدفع <span class="text-danger">*</span></label>
                            <select class="form-select" id="payment_status" name="payment_status" required>
                                <option value="paid">مدفوع</option>
                                <option value="partial">مدفوع جزئيا</option>
                                <option value="unpaid">غير مدفوع</option>
                            </select>
                            <div class="invalid-feedback">يرجى تحديد حالة الدفع</div>
                        </div>
                        <div class="col-md-6 payment-date-container">
                            <label for="payment_date" class="form-label">تاريخ الدفع</label>
                            <input type="date" class="form-control" id="payment_date" name="payment_date" 
                                   value="<?php echo date('Y-m-d'); ?>">
                            <div class="invalid-feedback">يرجى تحديد تاريخ الدفع</div>
                        </div>
                    </div>
                    <div class="row mb-3 amount-container">
                        <div class="col-md-6">
                            <label for="amount_paid" class="form-label">المبلغ المدفوع</label>
                            <input type="number" class="form-control" id="amount_paid" name="amount_paid" step="0.01" value="0">
                            <div class="invalid-feedback">يرجى إدخال المبلغ المدفوع</div>
                        </div>
                        <div class="col-md-6 payment-method-container">
                            <label for="payment_method" class="form-label">طريقة الدفع</label>
                            <select class="form-select" id="payment_method" name="payment_method">
                                <option value="">اختر طريقة الدفع</option>
                                <option value="cash">نقدا</option>
                                <option value="bank_transfer">تحويل بنكي</option>
                                <option value="check">شيك</option>
                            </select>
                        </div>
                    </div>
                    <div class="mb-3">
                        <label for="notes" class="form-label">ملاحظات</label>
                        <textarea class="form-control" id="notes" name="notes" rows="3"></textarea>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
                    <button type="submit" class="btn btn-primary">حفظ</button>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- Modal تعديل دفعة -->
<div class="modal fade" id="editPaymentModal" tabindex="-1" aria-labelledby="editPaymentModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="editPaymentModalLabel">تعديل دفعة اشتراك شهري</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <form action="update_payment.php" method="post" class="needs-validation" novalidate>
                <input type="hidden" id="edit_payment_id" name="payment_id">
                <div class="modal-body">
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="edit_member_id" class="form-label">المنخرط <span class="text-danger">*</span></label>
                            <select class="form-select" id="edit_member_id" name="member_id" required>
                                <option value="">اختر المنخرط</option>
                                <?php foreach ($members as $member): ?>
                                    <option value="<?php echo $member['id']; ?>">
                                        <?php echo htmlspecialchars($member['first_name'] . ' ' . $member['last_name']); ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>
                            <div class="invalid-feedback">يرجى اختيار المنخرط</div>
                        </div>
                        <div class="col-md-6">
                            <label for="edit_payment_month" class="form-label">شهر الاشتراك <span class="text-danger">*</span></label>
                            <input type="month" class="form-control" id="edit_payment_month" name="payment_month" required>
                            <div class="invalid-feedback">يرجى تحديد شهر الاشتراك</div>
                        </div>
                    </div>
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="edit_payment_status" class="form-label">حالة الدفع <span class="text-danger">*</span></label>
                            <select class="form-select" id="edit_payment_status" name="payment_status" required>
                                <option value="paid">مدفوع</option>
                                <option value="partial">مدفوع جزئيا</option>
                                <option value="unpaid">غير مدفوع</option>
                            </select>
                            <div class="invalid-feedback">يرجى تحديد حالة الدفع</div>
                        </div>
                        <div class="col-md-6 edit-payment-date-container">
                            <label for="edit_payment_date" class="form-label">تاريخ الدفع</label>
                            <input type="date" class="form-control" id="edit_payment_date" name="payment_date">
                            <div class="invalid-feedback">يرجى تحديد تاريخ الدفع</div>
                        </div>
                    </div>
                    <div class="row mb-3 edit-amount-container">
                        <div class="col-md-6">
                            <label for="edit_amount_paid" class="form-label">المبلغ المدفوع</label>
                            <input type="number" class="form-control" id="edit_amount_paid" name="amount_paid" step="0.01">
                            <div class="invalid-feedback">يرجى إدخال المبلغ المدفوع</div>
                        </div>
                        <div class="col-md-6 edit-payment-method-container">
                            <label for="edit_payment_method" class="form-label">طريقة الدفع</label>
                            <select class="form-select" id="edit_payment_method" name="payment_method">
                                <option value="">اختر طريقة الدفع</option>
                                <option value="cash">نقدا</option>
                                <option value="bank_transfer">تحويل بنكي</option>
                                <option value="check">شيك</option>
                            </select>
                        </div>
                    </div>
                    <div class="mb-3">
                        <label for="edit_notes" class="form-label">ملاحظات</label>
                        <textarea class="form-control" id="edit_notes" name="notes" rows="3"></textarea>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
                    <button type="submit" class="btn btn-primary">حفظ التغييرات</button>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- Modal حذف دفعة -->
<div class="modal fade" id="deletePaymentModal" tabindex="-1" aria-labelledby="deletePaymentModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="deletePaymentModalLabel">تأكيد حذف الدفعة</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                <p>هل أنت متأكد من رغبتك في حذف هذه الدفعة؟ هذا الإجراء لا يمكن التراجع عنه.</p>
            </div>
            <div class="modal-footer">
                <form action="delete_payment.php" method="post">
                    <input type="hidden" id="delete_payment_id" name="payment_id">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
                    <button type="submit" class="btn btn-danger">تأكيد الحذف</button>
                </form>
            </div>
        </div>
    </div>
</div>

<!-- تضمين نموذج الدفعات المتعددة -->
<?php include 'multiple_payment_modal.php'; ?>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // تحديث حقول النموذج بناءً على حالة الدفع
    function updateFormFields(status, prefix = '') {
        const paymentDateContainer = document.querySelector(prefix ? `.${prefix}-payment-date-container` : '.payment-date-container');
        const amountContainer = document.querySelector(prefix ? `.${prefix}-amount-container` : '.amount-container');
        const methodContainer = document.querySelector(prefix ? `.${prefix}-payment-method-container` : '.payment-method-container');
        
        if (status === 'unpaid') {
            if (paymentDateContainer) paymentDateContainer.style.display = 'none';
            if (amountContainer) amountContainer.style.display = 'none';
            if (methodContainer) methodContainer.style.display = 'none';
        } else {
            if (paymentDateContainer) paymentDateContainer.style.display = '';
            if (amountContainer) amountContainer.style.display = '';
            if (methodContainer) methodContainer.style.display = '';
        }
    }
    
    // تحديث حقول نموذج الإضافة
    const paymentStatusSelect = document.getElementById('payment_status');
    if (paymentStatusSelect) {
        paymentStatusSelect.addEventListener('change', function() {
            updateFormFields(this.value);
        });
        
        // تحديث الحقول عند تحميل الصفحة
        updateFormFields(paymentStatusSelect.value);
    }
    
    // تحديث حقول نموذج التعديل
    const editPaymentStatusSelect = document.getElementById('edit_payment_status');
    if (editPaymentStatusSelect) {
        editPaymentStatusSelect.addEventListener('change', function() {
            updateFormFields(this.value, 'edit');
        });
    }
    
    // تحديث حقول نموذج الدفعات المتعددة
    const multiplePaymentStatusSelect = document.getElementById('multiple_payment_status');
    if (multiplePaymentStatusSelect) {
        multiplePaymentStatusSelect.addEventListener('change', function() {
            updateFormFields(this.value, 'multiple');
        });
        
        // تحديث الحقول عند تحميل الصفحة
        updateFormFields(multiplePaymentStatusSelect.value, 'multiple');
    }
    
    // تعبئة بيانات نموذج التعديل
    const editButtons = document.querySelectorAll('.edit-payment');
    const editPaymentModal = new bootstrap.Modal(document.getElementById('editPaymentModal'));
    
    editButtons.forEach(button => {
        button.addEventListener('click', function() {
            const id = this.getAttribute('data-id');
            const memberId = this.getAttribute('data-member-id');
            const paymentMonth = this.getAttribute('data-payment-month');
            const paymentStatus = this.getAttribute('data-payment-status');
            const paymentDate = this.getAttribute('data-payment-date');
            const amountPaid = this.getAttribute('data-amount-paid');
            const paymentMethod = this.getAttribute('data-payment-method');
            const notes = this.getAttribute('data-notes');
            
            document.getElementById('edit_payment_id').value = id;
            document.getElementById('edit_member_id').value = memberId;
            document.getElementById('edit_payment_month').value = paymentMonth;
            document.getElementById('edit_payment_status').value = paymentStatus;
            document.getElementById('edit_payment_date').value = paymentDate;
            document.getElementById('edit_amount_paid').value = amountPaid;
            document.getElementById('edit_payment_method').value = paymentMethod;
            document.getElementById('edit_notes').value = notes;
            
            // تحديث حقول النموذج بناءً على حالة الدفع
            updateFormFields(paymentStatus, 'edit');
            
            editPaymentModal.show();
        });
    });
    
    // تعبئة بيانات نموذج الحذف
    const deleteButtons = document.querySelectorAll('.delete-payment');
    const deletePaymentModal = new bootstrap.Modal(document.getElementById('deletePaymentModal'));
    
    deleteButtons.forEach(button => {
        button.addEventListener('click', function() {
            const id = this.getAttribute('data-id');
            document.getElementById('delete_payment_id').value = id;
            
            deletePaymentModal.show();
        });
    });
    
    // تفعيل التحقق من صحة النماذج
    const forms = document.querySelectorAll('.needs-validation');
    Array.from(forms).forEach(form => {
        form.addEventListener('submit', event => {
            if (!form.checkValidity()) {
                event.preventDefault();
                event.stopPropagation();
            }
            form.classList.add('was-validated');
        }, false);
    });
});
</script>

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