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

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

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

// التحقق من وجود معرف المنخرط
if (!isset($_GET['id']) || empty($_GET['id'])) {
    setAlert('danger', 'معرف المنخرط مطلوب');
    header('Location: ' . SITE_URL . '/members/index.php');
    exit;
}

$memberId = (int)$_GET['id'];

// الحصول على بيانات المنخرط
$query = "SELECT m.*, c.name as category_name, c.subscription_fee, c.insurance_fee 
          FROM members m 
          LEFT JOIN categories c ON m.category_id = c.id 
          WHERE m.id = :id";
$member = fetchOne($query, [':id' => $memberId]);

if (!$member) {
    setAlert('danger', 'المنخرط غير موجود');
    header('Location: ' . SITE_URL . '/members/index.php');
    exit;
}

// الحصول على آخر اشتراك
$query = "SELECT * FROM subscriptions WHERE member_id = :member_id ORDER BY end_date DESC LIMIT 1";
$lastSubscription = fetchOne($query, [':member_id' => $memberId]);

// تحديد تاريخ بداية ونهاية الاشتراك الجديد
$startDate = date('Y-m-d');
$endDate = date('Y-m-d', strtotime('+1 year'));

// إذا كان هناك اشتراك سابق وتاريخ انتهائه في المستقبل، نبدأ من تاريخ انتهائه
if ($lastSubscription && strtotime($lastSubscription['end_date']) > time()) {
    $startDate = date('Y-m-d', strtotime($lastSubscription['end_date'] . ' +1 day'));
    $endDate = date('Y-m-d', strtotime($startDate . ' +1 year'));
}

// معالجة النموذج عند الإرسال
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // التحقق من البيانات المدخلة
    $startDate = sanitizeInput($_POST['start_date']);
    $endDate = sanitizeInput($_POST['end_date']);
    $amountPaid = (float)$_POST['amount_paid'];
    $isInsurancePaid = isset($_POST['is_insurance_paid']) ? 1 : 0;
    $insuranceAmount = $isInsurancePaid ? (float)$_POST['insurance_amount'] : 0;
    $paymentMethod = sanitizeInput($_POST['payment_method']);
    $receiptNumber = sanitizeInput($_POST['receipt_number']);
    $paymentDate = sanitizeInput($_POST['payment_date']);
    $notes = sanitizeInput($_POST['notes']);
    
    // التحقق من البيانات المطلوبة
    $errors = [];
    
    if (empty($startDate)) {
        $errors[] = 'تاريخ بداية الاشتراك مطلوب';
    }
    
    if (empty($endDate)) {
        $errors[] = 'تاريخ نهاية الاشتراك مطلوب';
    }
    
    if ($amountPaid <= 0) {
        $errors[] = 'المبلغ المدفوع يجب أن يكون أكبر من صفر';
    }
    
    if ($isInsurancePaid && $insuranceAmount <= 0) {
        $errors[] = 'مبلغ التأمين يجب أن يكون أكبر من صفر';
    }
    
    if (empty($paymentMethod)) {
        $errors[] = 'طريقة الدفع مطلوبة';
    }
    
    if (empty($paymentDate)) {
        $errors[] = 'تاريخ الدفع مطلوب';
    }
    
    // إذا لم تكن هناك أخطاء، قم بإضافة الاشتراك الجديد
    if (empty($errors)) {
        // إضافة الاشتراك الجديد في قاعدة البيانات
        $query = "INSERT INTO subscriptions (
                  member_id, start_date, end_date, amount_paid, is_insurance_paid, 
                  insurance_amount, payment_method, receipt_number, payment_date, 
                  notes, created_by
                  ) VALUES (
                  :member_id, :start_date, :end_date, :amount_paid, :is_insurance_paid, 
                  :insurance_amount, :payment_method, :receipt_number, :payment_date, 
                  :notes, :created_by
                  )";
        
        $params = [
            ':member_id' => $memberId,
            ':start_date' => $startDate,
            ':end_date' => $endDate,
            ':amount_paid' => $amountPaid,
            ':is_insurance_paid' => $isInsurancePaid,
            ':insurance_amount' => $insuranceAmount,
            ':payment_method' => $paymentMethod,
            ':receipt_number' => $receiptNumber,
            ':payment_date' => $paymentDate,
            ':notes' => $notes,
            ':created_by' => $_SESSION['user_id']
        ];
        
        $result = executeQuery($query, $params);
        
        if ($result) {
            // إضافة المبلغ المدفوع إلى سجل الإيرادات
            $totalAmount = $amountPaid + ($isInsurancePaid ? $insuranceAmount : 0);
            
            $query = "INSERT INTO income (
                      amount, source, description, payment_method, receipt_number, 
                      payment_date, created_by, created_at
                      ) VALUES (
                      :amount, :source, :description, :payment_method, :receipt_number, 
                      :payment_date, :created_by, :created_at
                      )";
            
            $params = [
                ':amount' => $totalAmount,
                ':source' => 'subscription',
                ':description' => 'اشتراك المنخرط: ' . $member['first_name'] . ' ' . $member['last_name'] . ' (' . $member['category_name'] . ')',
                ':payment_method' => $paymentMethod,
                ':receipt_number' => $receiptNumber,
                ':payment_date' => $paymentDate,
                ':created_by' => $_SESSION['user_id'],
                ':created_at' => date('Y-m-d H:i:s')
            ];
            
            executeQuery($query, $params);
            
            setAlert('success', 'تم تجديد اشتراك المنخرط بنجاح');
            header('Location: ' . SITE_URL . '/members/view.php?id=' . $memberId);
            exit;
        } else {
            $errors[] = 'حدث خطأ أثناء تجديد الاشتراك';
        }
    }
    
    // إذا كانت هناك أخطاء، قم بعرضها
    if (!empty($errors)) {
        $errorMessage = implode('<br>', $errors);
        setAlert('danger', $errorMessage);
    }
}

// عنوان الصفحة
$pageTitle = 'تجديد اشتراك المنخرط - ' . $member['first_name'] . ' ' . $member['last_name'];

// تضمين ملف الهيدر
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-sync-alt me-2"></i> تجديد اشتراك المنخرط</h1>
    <div>
        <a href="<?php echo SITE_URL; ?>/members/view.php?id=<?php echo $member['id']; ?>" class="btn btn-secondary">
            <i class="fas fa-arrow-right"></i> العودة إلى بيانات المنخرط
        </a>
    </div>
</div>

<div class="row">
    <!-- معلومات المنخرط -->
    <div class="col-md-4 mb-4">
        <div class="card h-100">
            <div class="card-header bg-primary text-white">
                <i class="fas fa-info-circle me-2"></i> معلومات المنخرط
            </div>
            <div class="card-body">
                <div class="text-center mb-4">
                    <?php
                    $photoPath = !empty($member['photo']) 
                        ? SITE_URL . '/uploads/members/' . $member['photo'] 
                        : SITE_URL . '/assets/img/default-user.png';
                    ?>
                    <img src="<?php echo $photoPath; ?>" alt="صورة المنخرط" class="img-fluid rounded-circle" style="max-width: 120px;">
                    <h4 class="mt-3"><?php echo $member['first_name'] . ' ' . $member['last_name']; ?></h4>
                    <p class="text-muted"><?php echo $member['category_name']; ?></p>
                    
                    <?php
                    $subscriptionValid = isSubscriptionValid($member['id']);
                    $endDate = getSubscriptionEndDate($member['id']);
                    
                    if ($subscriptionValid) {
                        echo '<div class="badge bg-success p-2 mb-3">الاشتراك ساري حتى ' . $endDate . '</div>';
                    } else {
                        echo '<div class="badge bg-danger p-2 mb-3">الاشتراك منتهي</div>';
                    }
                    ?>
                </div>
                
                <div class="mb-3">
                    <h5>معلومات الفئة</h5>
                    <hr>
                    <p><strong>رسوم الاشتراك:</strong> <?php echo number_format($member['subscription_fee'], 2); ?> درهم</p>
                    <p><strong>رسوم التأمين:</strong> <?php echo number_format($member['insurance_fee'], 2); ?> درهم</p>
                </div>
                
                <?php if ($lastSubscription): ?>
                <div class="mb-3">
                    <h5>آخر اشتراك</h5>
                    <hr>
                    <p><strong>تاريخ البداية:</strong> <?php echo formatDate($lastSubscription['start_date']); ?></p>
                    <p><strong>تاريخ النهاية:</strong> <?php echo formatDate($lastSubscription['end_date']); ?></p>
                    <p><strong>المبلغ المدفوع:</strong> <?php echo number_format($lastSubscription['amount_paid'], 2); ?> درهم</p>
                    <p><strong>التأمين:</strong> 
                        <?php
                        if ($lastSubscription['is_insurance_paid']) {
                            echo 'مدفوع (' . number_format($lastSubscription['insurance_amount'], 2) . ' درهم)';
                        } else {
                            echo 'غير مدفوع';
                        }
                        ?>
                    </p>
                </div>
                <?php endif; ?>
            </div>
        </div>
    </div>
    
    <!-- نموذج تجديد الاشتراك -->
    <div class="col-md-8 mb-4">
        <div class="card">
            <div class="card-header bg-success text-white">
                <i class="fas fa-money-bill-wave me-2"></i> نموذج تجديد الاشتراك
            </div>
            <div class="card-body">
                <form action="" method="post">
                    <div class="row">
                        <!-- فترة الاشتراك -->
                        <div class="col-md-6">
                            <h5 class="mb-3">فترة الاشتراك</h5>
                            
                            <div class="mb-3">
                                <label for="start_date" class="form-label">تاريخ بداية الاشتراك <span class="text-danger">*</span></label>
                                <input type="date" class="form-control" id="start_date" name="start_date" value="<?php echo $startDate; ?>" required>
                            </div>
                            
                            <div class="mb-3">
                                <label for="end_date" class="form-label">تاريخ نهاية الاشتراك <span class="text-danger">*</span></label>
                                <input type="date" class="form-control" id="end_date" name="end_date" value="<?php echo $endDate; ?>" required>
                            </div>
                        </div>
                        
                        <!-- تفاصيل الدفع -->
                        <div class="col-md-6">
                            <h5 class="mb-3">تفاصيل الدفع</h5>
                            
                            <div class="mb-3">
                                <label for="amount_paid" class="form-label">المبلغ المدفوع (درهم) <span class="text-danger">*</span></label>
                                <input type="number" class="form-control" id="amount_paid" name="amount_paid" value="<?php echo $member['subscription_fee']; ?>" step="0.01" min="0" required>
                            </div>
                            
                            <div class="mb-3">
                                <div class="form-check">
                                    <input class="form-check-input" type="checkbox" id="is_insurance_paid" name="is_insurance_paid" checked>
                                    <label class="form-check-label" for="is_insurance_paid">
                                        دفع رسوم التأمين
                                    </label>
                                </div>
                            </div>
                            
                            <div class="mb-3" id="insurance_amount_container">
                                <label for="insurance_amount" class="form-label">مبلغ التأمين (درهم)</label>
                                <input type="number" class="form-control" id="insurance_amount" name="insurance_amount" value="<?php echo $member['insurance_fee']; ?>" step="0.01" min="0">
                            </div>
                        </div>
                        
                        <!-- معلومات الإيصال -->
                        <div class="col-md-6">
                            <h5 class="mb-3">معلومات الإيصال</h5>
                            
                            <div class="mb-3">
                                <label for="payment_method" class="form-label">طريقة الدفع <span class="text-danger">*</span></label>
                                <select class="form-select" id="payment_method" name="payment_method" required>
                                    <option value="cash">نقدا</option>
                                    <option value="bank_transfer">تحويل بنكي</option>
                                    <option value="check">شيك</option>
                                </select>
                            </div>
                            
                            <div class="mb-3">
                                <label for="receipt_number" class="form-label">رقم الإيصال</label>
                                <input type="text" class="form-control" id="receipt_number" name="receipt_number">
                            </div>
                            
                            <div class="mb-3">
                                <label for="payment_date" class="form-label">تاريخ الدفع <span class="text-danger">*</span></label>
                                <input type="date" class="form-control" id="payment_date" name="payment_date" value="<?php echo date('Y-m-d'); ?>" required>
                            </div>
                        </div>
                        
                        <!-- ملاحظات -->
                        <div class="col-md-6">
                            <h5 class="mb-3">ملاحظات إضافية</h5>
                            
                            <div class="mb-3">
                                <label for="notes" class="form-label">ملاحظات</label>
                                <textarea class="form-control" id="notes" name="notes" rows="6"></textarea>
                            </div>
                        </div>
                    </div>
                    
                    <div class="d-grid gap-2 d-md-flex justify-content-md-end mt-4">
                        <a href="<?php echo SITE_URL; ?>/members/view.php?id=<?php echo $member['id']; ?>" class="btn btn-secondary me-md-2">
                            <i class="fas fa-times"></i> إلغاء
                        </a>
                        <button type="submit" class="btn btn-success">
                            <i class="fas fa-save"></i> تجديد الاشتراك
                        </button>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // إظهار/إخفاء حقل مبلغ التأمين
    const insuranceCheckbox = document.getElementById('is_insurance_paid');
    const insuranceAmountContainer = document.getElementById('insurance_amount_container');
    
    function toggleInsuranceAmount() {
        if (insuranceCheckbox.checked) {
            insuranceAmountContainer.style.display = 'block';
        } else {
            insuranceAmountContainer.style.display = 'none';
        }
    }
    
    insuranceCheckbox.addEventListener('change', toggleInsuranceAmount);
    toggleInsuranceAmount(); // تشغيل الدالة عند تحميل الصفحة
    
    // حساب تاريخ نهاية الاشتراك تلقائيًا (بعد سنة من تاريخ البداية)
    const startDateInput = document.getElementById('start_date');
    const endDateInput = document.getElementById('end_date');
    
    startDateInput.addEventListener('change', function() {
        if (this.value) {
            const startDate = new Date(this.value);
            const endDate = new Date(startDate);
            endDate.setFullYear(endDate.getFullYear() + 1);
            endDate.setDate(endDate.getDate() - 1); // نقص يوم واحد للحصول على نفس اليوم من السنة القادمة
            
            const year = endDate.getFullYear();
            const month = String(endDate.getMonth() + 1).padStart(2, '0');
            const day = String(endDate.getDate()).padStart(2, '0');
            
            endDateInput.value = `${year}-${month}-${day}`;
        }
    });
});
</script>

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