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

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

// معالجة النموذج عند الإرسال
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // تنظيف وتحقق من المدخلات
    $firstName = sanitizeInput($_POST['first_name']);
    $lastName = sanitizeInput($_POST['last_name']);
    $birthDate = dateToDatabase(sanitizeInput($_POST['birth_date']));
    $categoryId = (int)$_POST['category_id'];
    $phone = sanitizeInput($_POST['phone']);
    $email = sanitizeInput($_POST['email']);
    $address = sanitizeInput($_POST['address']);
    $parentName = sanitizeInput($_POST['parent_name']);
    $parentIdCard = sanitizeInput($_POST['parent_id_card']);
    $notes = sanitizeInput($_POST['notes']);
    
    // التحقق من البيانات المطلوبة
    $errors = [];
    
    if (empty($firstName)) {
        $errors[] = 'الاسم الشخصي مطلوب.';
    }
    
    if (empty($lastName)) {
        $errors[] = 'الاسم العائلي مطلوب.';
    }
    
    if (empty($birthDate)) {
        $errors[] = 'تاريخ الازدياد مطلوب.';
    }
    
    if ($categoryId <= 0) {
        $errors[] = 'يرجى اختيار الفئة.';
    }
    
    // التحقق من البريد الإلكتروني إذا تم إدخاله
    if (!empty($email) && !isValidEmail($email)) {
        $errors[] = 'البريد الإلكتروني غير صالح.';
    }
    
    // التحقق من رقم الهاتف إذا تم إدخاله
    if (!empty($phone) && !isValidPhone($phone)) {
        $errors[] = 'رقم الهاتف غير صالح.';
    }
    
    // معالجة الصورة إذا تم تحميلها
    $photoName = '';
    if (isset($_FILES['photo']) && $_FILES['photo']['error'] === UPLOAD_ERR_OK) {
        $photoName = uploadMemberPhoto($_FILES['photo']);
        if (!$photoName) {
            $errors[] = 'فشل في تحميل الصورة. يرجى التأكد من أن الصورة بتنسيق صالح (JPG, PNG, GIF) وحجمها أقل من 2 ميجابايت.';
        }
    }
    
    // إذا لم تكن هناك أخطاء، قم بإدخال البيانات
    if (empty($errors)) {
        $query = "INSERT INTO members (first_name, last_name, birth_date, category_id, phone, email, address, photo, parent_name, parent_id_card, notes) 
                 VALUES (:first_name, :last_name, :birth_date, :category_id, :phone, :email, :address, :photo, :parent_name, :parent_id_card, :notes)";
        
        $params = [
            ':first_name' => $firstName,
            ':last_name' => $lastName,
            ':birth_date' => $birthDate,
            ':category_id' => $categoryId,
            ':phone' => $phone,
            ':email' => $email,
            ':address' => $address,
            ':photo' => $photoName,
            ':parent_name' => $parentName,
            ':parent_id_card' => $parentIdCard,
            ':notes' => $notes
        ];
        
        try {
            $db->beginTransaction();
            
            // إدخال بيانات المنخرط
            $stmt = $db->prepare($query);
            $stmt->execute($params);
            
            // الحصول على معرف المنخرط المضاف
            $memberId = $db->lastInsertId();
            
            // إنشاء اشتراك جديد إذا تم اختيار ذلك
            if (isset($_POST['create_subscription']) && $_POST['create_subscription'] == 1) {
                $startDate = dateToDatabase(sanitizeInput($_POST['subscription_start_date']));
                $endDate = dateToDatabase(sanitizeInput($_POST['subscription_end_date']));
                $amountPaid = (float) sanitizeInput($_POST['amount_paid']);
                $paymentMethod = sanitizeInput($_POST['payment_method']);
                $receiptNumber = sanitizeInput($_POST['receipt_number'] ?? '');
                $subscriptionNotes = sanitizeInput($_POST['subscription_notes'] ?? '');
                $isInsurancePaid = isset($_POST['is_insurance_paid']) ? 1 : 0;
                $insuranceAmount = (float) sanitizeInput($_POST['insurance_amount'] ?? 0);
                
                // إدخال بيانات الاشتراك
                $query = "INSERT INTO subscriptions (member_id, start_date, end_date, amount_paid, payment_date, payment_method, is_insurance_paid, insurance_amount, receipt_number, notes, created_by) 
                         VALUES (:member_id, :start_date, :end_date, :amount_paid, CURRENT_DATE, :payment_method, :is_insurance_paid, :insurance_amount, :receipt_number, :notes, :created_by)";
                
                $params = [
                    ':member_id' => $memberId,
                    ':start_date' => $startDate,
                    ':end_date' => $endDate,
                    ':amount_paid' => $amountPaid,
                    ':payment_method' => $paymentMethod,
                    ':is_insurance_paid' => $isInsurancePaid,
                    ':insurance_amount' => $insuranceAmount,
                    ':receipt_number' => $receiptNumber,
                    ':notes' => $subscriptionNotes,
                    ':created_by' => $_SESSION['user_id']
                ];
                
                $stmt = $db->prepare($query);
                $stmt->execute($params);
                
                // إضافة الدفعة كإيراد
                $incomeDescription = "اشتراك جديد للمنخرط: {$firstName} {$lastName}";
                addSubscriptionAsIncome($memberId, $amountPaid, $paymentMethod, $incomeDescription);
            }
            
            $db->commit();
            
            // تعيين رسالة نجاح وإعادة التوجيه
            setAlert('success', 'تمت إضافة المنخرط بنجاح');
            header('Location: ' . SITE_URL . '/members/view.php?id=' . $memberId);
            exit;
            
        } catch (PDOException $e) {
            $db->rollBack();
            $errors[] = 'حدث خطأ أثناء إضافة المنخرط: ' . $e->getMessage();
        }
    }
}

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

// عنوان الصفحة
$pageTitle = 'إضافة منخرط جديد';

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

<div class="container py-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h1 class="h3 mb-0"><i class="fas fa-user-plus me-2"></i> إضافة منخرط جديد</h1>
        <a href="<?php echo SITE_URL; ?>/members/index.php" class="btn btn-secondary">
            <i class="fas fa-arrow-right"></i> العودة إلى قائمة المنخرطين
        </a>
    </div>
    
    <?php if (!empty($errors)): ?>
        <div class="alert alert-danger">
            <ul class="mb-0">
                <?php foreach ($errors as $error): ?>
                    <li><?php echo $error; ?></li>
                <?php endforeach; ?>
            </ul>
        </div>
    <?php endif; ?>
    
    <div class="card">
        <div class="card-body">
            <form method="post" action="" enctype="multipart/form-data">
                <div class="row">
                    <!-- بيانات المنخرط الأساسية -->
                    <div class="col-md-8">
                        <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 mb-3">
                                    <div class="col-md-6">
                                        <label for="first_name" class="form-label">الاسم الشخصي <span class="text-danger">*</span></label>
                                        <input type="text" class="form-control" id="first_name" name="first_name" required value="<?php echo isset($_POST['first_name']) ? htmlspecialchars($_POST['first_name']) : ''; ?>">
                                    </div>
                                    <div class="col-md-6">
                                        <label for="last_name" class="form-label">الاسم العائلي <span class="text-danger">*</span></label>
                                        <input type="text" class="form-control" id="last_name" name="last_name" required value="<?php echo isset($_POST['last_name']) ? htmlspecialchars($_POST['last_name']) : ''; ?>">
                                    </div>
                                </div>
                                <div class="row mb-3">
                                    <div class="col-md-6">
                                        <label for="birth_date" class="form-label">تاريخ الازدياد <span class="text-danger">*</span></label>
                                        <input type="text" class="form-control date-picker" id="birth_date" name="birth_date" required value="<?php echo isset($_POST['birth_date']) ? htmlspecialchars($_POST['birth_date']) : ''; ?>">
                                    </div>
                                    <div class="col-md-6">
                                        <label for="category_id" class="form-label">الفئة <span class="text-danger">*</span></label>
                                        <select class="form-select" id="category_id" name="category_id" required>
                                            <option value="">-- اختر الفئة --</option>
                                            <?php foreach ($categories as $category): ?>
                                                <option value="<?php echo $category['id']; ?>" <?php echo (isset($_POST['category_id']) && $_POST['category_id'] == $category['id']) ? 'selected' : ''; ?>>
                                                    <?php echo htmlspecialchars($category['name']); ?>
                                                </option>
                                            <?php endforeach; ?>
                                        </select>
                                    </div>
                                </div>
                                <div class="row mb-3">
                                    <div class="col-md-6">
                                        <label for="phone" class="form-label">رقم الهاتف</label>
                                        <input type="text" class="form-control" id="phone" name="phone" value="<?php echo isset($_POST['phone']) ? htmlspecialchars($_POST['phone']) : ''; ?>">
                                    </div>
                                    <div class="col-md-6">
                                        <label for="email" class="form-label">البريد الإلكتروني</label>
                                        <input type="email" class="form-control" id="email" name="email" value="<?php echo isset($_POST['email']) ? htmlspecialchars($_POST['email']) : ''; ?>">
                                    </div>
                                </div>
                                <div class="mb-3">
                                    <label for="address" class="form-label">العنوان</label>
                                    <input type="text" class="form-control" id="address" name="address" value="<?php echo isset($_POST['address']) ? htmlspecialchars($_POST['address']) : ''; ?>">
                                </div>
                                <div class="row mb-3">
                                    <div class="col-md-6">
                                        <label for="parent_name" class="form-label">اسم الأب/الولي</label>
                                        <input type="text" class="form-control" id="parent_name" name="parent_name" value="<?php echo isset($_POST['parent_name']) ? htmlspecialchars($_POST['parent_name']) : ''; ?>">
                                    </div>
                                    <div class="col-md-6">
                                        <label for="parent_id_card" class="form-label">رقم بطاقة الأب/الولي</label>
                                        <input type="text" class="form-control" id="parent_id_card" name="parent_id_card" value="<?php echo isset($_POST['parent_id_card']) ? htmlspecialchars($_POST['parent_id_card']) : ''; ?>">
                                    </div>
                                </div>
                                <div class="mb-3">
                                    <label for="notes" class="form-label">ملاحظات</label>
                                    <textarea class="form-control" id="notes" name="notes" rows="3"><?php echo isset($_POST['notes']) ? htmlspecialchars($_POST['notes']) : ''; ?></textarea>
                                </div>
                            </div>
                        </div>
                        
                        <!-- بيانات الاشتراك -->
                        <div class="card">
                            <div class="card-header bg-success text-white">
                                <div class="form-check form-switch">
                                    <input class="form-check-input" type="checkbox" id="create_subscription" name="create_subscription" value="1" checked>
                                    <label class="form-check-label" for="create_subscription">إنشاء اشتراك جديد</label>
                                </div>
                            </div>
                            <div class="card-body" id="subscription_details">
                                <div class="row mb-3">
                                    <div class="col-md-6">
                                        <label for="subscription_start_date" class="form-label">تاريخ بداية الاشتراك <span class="text-danger">*</span></label>
                                        <input type="text" class="form-control date-picker" id="subscription_start_date" name="subscription_start_date" value="<?php echo date('d/m/Y'); ?>">
                                    </div>
                                    <div class="col-md-6">
                                        <label for="subscription_end_date" class="form-label">تاريخ نهاية الاشتراك <span class="text-danger">*</span></label>
                                        <input type="text" class="form-control date-picker" id="subscription_end_date" name="subscription_end_date" value="<?php echo date('d/m/Y', strtotime('+1 year')); ?>">
                                    </div>
                                </div>
                                <div class="row mb-3">
                                    <div class="col-md-6">
                                        <label for="subscription_fee" class="form-label">رسوم الاشتراك</label>
                                        <input type="number" class="form-control" id="subscription_fee" name="subscription_fee" step="0.01">
                                    </div>
                                    <div class="col-md-6">
                                        <label for="insurance_amount" class="form-label">رسوم التأمين</label>
                                        <input type="number" class="form-control" id="insurance_amount" name="insurance_amount" step="0.01">
                                    </div>
                                </div>
                                <div class="row mb-3">
                                    <div class="col-md-6">
                                        <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" step="0.01" required>
                                    </div>
                                    <div class="col-md-6">
                                        <label for="payment_method" class="form-label">طريقة الدفع</label>
                                        <select class="form-select" id="payment_method" name="payment_method">
                                            <option value="cash">نقدا</option>
                                            <option value="bank_transfer">تحويل بنكي</option>
                                            <option value="check">شيك</option>
                                        </select>
                                    </div>
                                </div>
                                <div class="mb-3">
                                    <div class="form-check">
                                        <input class="form-check-input" type="checkbox" id="is_insurance_paid" name="is_insurance_paid" value="1" checked>
                                        <label class="form-check-label" for="is_insurance_paid">تم دفع رسوم التأمين</label>
                                    </div>
                                </div>
                                <div class="mb-3">
                                    <label for="subscription_notes" class="form-label">ملاحظات الاشتراك</label>
                                    <textarea class="form-control" id="subscription_notes" name="subscription_notes" rows="2"></textarea>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <!-- الصورة الشخصية -->
                    <div class="col-md-4">
                        <div class="card">
                            <div class="card-header bg-info text-white">
                                <i class="fas fa-image me-2"></i> الصورة الشخصية
                            </div>
                            <div class="card-body text-center">
                                <img src="<?php echo SITE_URL; ?>/assets/img/default-profile.png" id="photoPreview" class="img-fluid rounded mb-3" style="max-height: 200px;">
                                <div class="mb-3">
                                    <label for="photo" class="form-label">اختر صورة</label>
                                    <input class="form-control" type="file" id="photo" name="photo" accept="image/*">
                                </div>
                                <small class="text-muted">الحد الأقصى للحجم: 2 ميجابايت. الصيغ المدعومة: JPG, PNG, GIF</small>
                            </div>
                        </div>
                    </div>
                </div>
                
                <div class="text-center mt-4">
                    <button type="submit" class="btn btn-primary btn-lg px-5">
                        <i class="fas fa-save me-2"></i> حفظ المنخرط
                    </button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // تحميل معاينة الصورة
    const photoInput = document.getElementById('photo');
    const photoPreview = document.getElementById('photoPreview');
    
    photoInput.addEventListener('change', function() {
        if (this.files && this.files[0]) {
            const reader = new FileReader();
            reader.onload = function(e) {
                photoPreview.src = e.target.result;
            };
            reader.readAsDataURL(this.files[0]);
        }
    });
    
    // التحكم في قسم الاشتراك
    const createSubscriptionCheckbox = document.getElementById('create_subscription');
    const subscriptionDetails = document.getElementById('subscription_details');
    
    createSubscriptionCheckbox.addEventListener('change', function() {
        if (this.checked) {
            subscriptionDetails.style.display = 'block';
        } else {
            subscriptionDetails.style.display = 'none';
        }
    });
    
    // تحديث رسوم الاشتراك والتأمين عند تغيير الفئة
    const categorySelect = document.getElementById('category_id');
    const subscriptionFeeInput = document.getElementById('subscription_fee');
    const insuranceAmountInput = document.getElementById('insurance_amount');
    const amountPaidInput = document.getElementById('amount_paid');
    const insuranceCheckbox = document.getElementById('is_insurance_paid');
    
    // وظيفة لحساب المبلغ الإجمالي
    function updateTotalAmount() {
        let subscriptionFee = parseFloat(subscriptionFeeInput.value) || 0;
        let insuranceFee = parseFloat(insuranceAmountInput.value) || 0;
        
        // إضافة رسوم التأمين فقط إذا كانت الخانة محددة
        let totalAmount = subscriptionFee;
        if (insuranceCheckbox.checked) {
            totalAmount += insuranceFee;
        }
        
        amountPaidInput.value = totalAmount.toFixed(2);
    }
    
    // إضافة مستمع للتغيير في خانة التأمين
    insuranceCheckbox.addEventListener('change', updateTotalAmount);
    
    // إضافة مستمعين للتغيير في حقول الرسوم
    subscriptionFeeInput.addEventListener('input', updateTotalAmount);
    insuranceAmountInput.addEventListener('input', updateTotalAmount);
    
    categorySelect.addEventListener('change', function() {
        const categoryId = this.value;
        
        if (categoryId) {
            // استعلام عن رسوم الفئة
            fetch(`<?php echo SITE_URL; ?>/api/get_category_fees.php?id=${categoryId}`)
                .then(response => response.json())
                .then(data => {
                    if (data.success) {
                        // تعبئة الحقول بالقيم الافتراضية ولكن يمكن تعديلها يدويًا
                        subscriptionFeeInput.value = data.subscription_fee;
                        insuranceAmountInput.value = data.insurance_fee;
                        
                        // حساب المبلغ الإجمالي (مع مراعاة حالة خانة التأمين)
                        updateTotalAmount();
                        
                        // إضافة تعليق توضيحي
                        const feeHint = document.createElement('small');
                        feeHint.className = 'text-muted d-block mt-1';
                        feeHint.textContent = 'يمكنك تعديل هذه القيمة يدويًا إذا لزم الأمر';
                        
                        // إزالة أي تعليقات سابقة
                        const existingHints = document.querySelectorAll('.fee-hint');
                        existingHints.forEach(hint => hint.remove());
                        
                        // إضافة التعليقات الجديدة
                        const feeHint1 = feeHint.cloneNode(true);
                        feeHint1.classList.add('fee-hint');
                        const feeHint2 = feeHint.cloneNode(true);
                        feeHint2.classList.add('fee-hint');
                        
                        subscriptionFeeInput.parentNode.appendChild(feeHint1);
                        insuranceAmountInput.parentNode.appendChild(feeHint2);
                    }
                })
                .catch(error => console.error('Error:', error));
        } else {
            subscriptionFeeInput.value = '';
            insuranceAmountInput.value = '';
            amountPaidInput.value = '';
        }
    });
});
</script>

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