<?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);
                
                // إدخال بيانات الاشتراك - استخدام date('now') بدلاً من CURRENT_DATE
                $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, date('now'), :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}";
                $source = 'subscription';
                
                $incomeQuery = "INSERT INTO income (source, description, amount, payment_method, payment_date, created_by, created_at) 
                              VALUES (?, ?, ?, ?, date('now'), ?, datetime('now'))";
                
                $incomeParams = [
                    $source,
                    $incomeDescription,
                    $amountPaid,
                    $paymentMethod,
                    $_SESSION['user_id']
                ];
                
                $incomeStmt = $db->prepare($incomeQuery);
                $incomeStmt->execute($incomeParams);
            }
            
            $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="row mb-3">
                                    <div class="col-md-12">
                                        <label for="address" class="form-label">العنوان</label>
                                        <textarea class="form-control" id="address" name="address" rows="2"><?php echo isset($_POST['address']) ? htmlspecialchars($_POST['address']) : ''; ?></textarea>
                                    </div>
                                </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="row mb-3">
                                    <div class="col-md-12">
                                        <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>
                    </div>
                    
                    <!-- صورة المنخرط -->
                    <div class="col-md-4">
                        <div class="card mb-4">
                            <div class="card-header bg-primary text-white">
                                <i class="fas fa-image me-2"></i> صورة المنخرط
                            </div>
                            <div class="card-body text-center">
                                <div class="mb-3">
                                    <img id="photo-preview" src="<?php echo SITE_URL; ?>/assets/img/profile-placeholder.jpg" class="img-thumbnail mb-2" style="max-height: 200px;">
                                    <input type="file" class="form-control" id="photo" name="photo" accept="image/*">
                                    <div class="form-text">الحد الأقصى للحجم: 2 ميجابايت. الصيغ المدعومة: JPG, PNG, GIF.</div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <!-- بيانات الاشتراك -->
                <div class="card mb-4">
                    <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" <?php echo (isset($_POST['create_subscription']) && $_POST['create_subscription'] == 1) ? 'checked' : ''; ?>>
                            <label class="form-check-label" for="create_subscription"><i class="fas fa-money-bill me-2"></i> إنشاء اشتراك جديد</label>
                        </div>
                    </div>
                    <div class="card-body subscription-section">
                        <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 isset($_POST['subscription_start_date']) ? htmlspecialchars($_POST['subscription_start_date']) : 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 isset($_POST['subscription_end_date']) ? htmlspecialchars($_POST['subscription_end_date']) : date('d/m/Y', strtotime('+1 year')); ?>">
                            </div>
                        </div>
                        <div class="row mb-3">
                            <div class="col-md-4">
                                <label for="subscription_fee" class="form-label">رسوم الاشتراك <span class="text-danger">*</span></label>
                                <div class="input-group">
                                    <input type="number" class="form-control" id="subscription_fee" name="subscription_fee" min="0" step="0.01" value="<?php echo isset($_POST['subscription_fee']) ? htmlspecialchars($_POST['subscription_fee']) : '0.00'; ?>">
                                    <span class="input-group-text">درهم</span>
                                </div>
                                <small class="form-text text-muted">يمكن تعديل هذه القيمة يدويًا</small>
                            </div>
                            <div class="col-md-4">
                                <div class="form-check mt-4">
                                    <input class="form-check-input" type="checkbox" id="is_insurance_paid" name="is_insurance_paid" <?php echo (isset($_POST['is_insurance_paid'])) ? 'checked' : ''; ?>>
                                    <label class="form-check-label" for="is_insurance_paid">
                                        دفع رسوم التأمين
                                    </label>
                                </div>
                            </div>
                            <div class="col-md-4">
                                <label for="insurance_amount" class="form-label">مبلغ التأمين</label>
                                <div class="input-group">
                                    <input type="number" class="form-control" id="insurance_amount" name="insurance_amount" min="0" step="0.01" value="<?php echo isset($_POST['insurance_amount']) ? htmlspecialchars($_POST['insurance_amount']) : '0.00'; ?>">
                                    <span class="input-group-text">درهم</span>
                                </div>
                                <small class="form-text text-muted">يمكن تعديل هذه القيمة يدويًا</small>
                            </div>
                        </div>
                        <div class="row mb-3">
                            <div class="col-md-4">
                                <label for="amount_paid" class="form-label">المبلغ الإجمالي المدفوع <span class="text-danger">*</span></label>
                                <div class="input-group">
                                    <input type="number" class="form-control" id="amount_paid" name="amount_paid" min="0" step="0.01" required value="<?php echo isset($_POST['amount_paid']) ? htmlspecialchars($_POST['amount_paid']) : '0.00'; ?>">
                                    <span class="input-group-text">درهم</span>
                                </div>
                            </div>
                            <div class="col-md-4">
                                <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" <?php echo (isset($_POST['payment_method']) && $_POST['payment_method'] == 'cash') ? 'selected' : ''; ?>>نقدا</option>
                                    <option value="bank_transfer" <?php echo (isset($_POST['payment_method']) && $_POST['payment_method'] == 'bank_transfer') ? 'selected' : ''; ?>>تحويل بنكي</option>
                                    <option value="check" <?php echo (isset($_POST['payment_method']) && $_POST['payment_method'] == 'check') ? 'selected' : ''; ?>>شيك</option>
                                </select>
                            </div>
                            <div class="col-md-4">
                                <label for="receipt_number" class="form-label">رقم الإيصال</label>
                                <input type="text" class="form-control" id="receipt_number" name="receipt_number" value="<?php echo isset($_POST['receipt_number']) ? htmlspecialchars($_POST['receipt_number']) : ''; ?>">
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-12">
                                <label for="subscription_notes" class="form-label">ملاحظات الاشتراك</label>
                                <textarea class="form-control" id="subscription_notes" name="subscription_notes" rows="2"><?php echo isset($_POST['subscription_notes']) ? htmlspecialchars($_POST['subscription_notes']) : ''; ?></textarea>
                            </div>
                        </div>
                    </div>
                </div>
                
                <div class="d-grid gap-2 d-md-flex justify-content-md-end">
                    <button type="reset" class="btn btn-light me-md-2"><i class="fas fa-redo-alt me-1"></i> إعادة تعيين</button>
                    <button type="submit" class="btn btn-primary"><i class="fas fa-save me-1"></i> حفظ المنخرط</button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // تحميل معاينة الصورة
    document.getElementById('photo').addEventListener('change', function(e) {
        const file = e.target.files[0];
        if (file) {
            const reader = new FileReader();
            reader.onload = function(event) {
                document.getElementById('photo-preview').src = event.target.result;
            };
            reader.readAsDataURL(file);
        }
    });
    
    // إخفاء/إظهار قسم الاشتراك
    const createSubscriptionCheckbox = document.getElementById('create_subscription');
    const subscriptionSection = document.querySelector('.subscription-section');
    
    function toggleSubscriptionSection() {
        if (createSubscriptionCheckbox.checked) {
            subscriptionSection.style.display = 'block';
        } else {
            subscriptionSection.style.display = 'none';
        }
    }
    
    createSubscriptionCheckbox.addEventListener('change', toggleSubscriptionSection);
    toggleSubscriptionSection(); // تطبيق الحالة الأولية
    
    // تحديث رسوم الاشتراك والتأمين عند تغيير الفئة
    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 isInsurancePaidCheckbox = document.getElementById('is_insurance_paid');
    
    categorySelect.addEventListener('change', function() {
        const categoryId = this.value;
        if (categoryId) {
            // استدعاء API للحصول على رسوم الفئة
            fetch(`${siteUrl}/api/get_category_fees.php?category_id=${categoryId}`)
                .then(response => response.json())
                .then(data => {
                    if (data.success) {
                        subscriptionFeeInput.value = data.subscription_fee;
                        insuranceAmountInput.value = data.insurance_fee;
                        updateTotalAmount();
                    }
                })
                .catch(error => console.error('Error fetching category fees:', error));
        }
    });
    
    // تحديث المبلغ الإجمالي عند تغيير أي من المدخلات
    function updateTotalAmount() {
        let total = parseFloat(subscriptionFeeInput.value) || 0;
        
        // إضافة رسوم التأمين فقط إذا كان مختارًا
        if (isInsurancePaidCheckbox.checked) {
            total += parseFloat(insuranceAmountInput.value) || 0;
        }
        
        amountPaidInput.value = total.toFixed(2);
    }
    
    subscriptionFeeInput.addEventListener('input', updateTotalAmount);
    insuranceAmountInput.addEventListener('input', updateTotalAmount);
    isInsurancePaidCheckbox.addEventListener('change', updateTotalAmount);
    
    // إضافة تلميحات للمستخدم حول إمكانية تعديل القيم
    const feeInputs = [subscriptionFeeInput, insuranceAmountInput];
    feeInputs.forEach(input => {
        input.addEventListener('focus', function() {
            this.parentElement.classList.add('border-primary');
        });
        
        input.addEventListener('blur', function() {
            this.parentElement.classList.remove('border-primary');
        });
    });
    
    // تطبيق الحالة الأولية إذا تم اختيار فئة بالفعل
    if (categorySelect.value) {
        const event = new Event('change');
        categorySelect.dispatchEvent(event);
    }
});
</script>

<?php include '../includes/footer.php'; ?>
