<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once '../config/database.php';
require_once '../includes/functions.php';

if (!isLoggedIn()) {
    header('Location: ../auth/login.php');
    exit;
}

$success = '';
$error = '';

// ============================================================
// دریافت داده‌ها
// ============================================================

// فیلدهای داینامیک گروه‌بندی شده
$dynamicFields = getAllDynamicFieldsGrouped();

// لیست‌های اصلی
$educations = $pdo->query("SELECT * FROM educations WHERE status = 'active' ORDER BY sort_order")->fetchAll();
$allCourses = $pdo->query("SELECT * FROM courses WHERE status = 'active' ORDER BY sort_order")->fetchAll();
$referrals = $pdo->query("SELECT * FROM referrals WHERE status = 'active' ORDER BY sort_order")->fetchAll();
$representatives = $pdo->query("SELECT id, fullname FROM users WHERE level = 'representative' ORDER BY fullname")->fetchAll();

// گروه‌بندی رشته‌ها بر اساس مقطع
$coursesByEducation = [];
foreach ($allCourses as $course) {
    $eduId = $course['education_id'] ?? 0;
    if (!isset($coursesByEducation[$eduId])) {
        $coursesByEducation[$eduId] = [];
    }
    $coursesByEducation[$eduId][] = ['id' => $course['id'], 'name' => $course['name']];
}

// ============================================================
// تشخیص دستگاه و UTM
// ============================================================
$device_type = detectDevice();
$utm = getUtmParams();
$ip_address = $_SERVER['REMOTE_ADDR'] ?? null;

if (!empty($utm['utm_link_id'])) {
    logUtmClick($utm['utm_link_id']);
}

// ============================================================
// پردازش فرم
// ============================================================
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    try {
        // ===== اطلاعات شخصی =====
        $fullname = $_POST['fullname'] ?? '';
        $phone = $_POST['phone'] ?? '';
        $emergency_phone = $_POST['emergency_phone'] ?? '';
        $national_code = $_POST['national_code'] ?? '';
        $gender = $_POST['gender'] ?? '';
        $service_status = $_POST['service_status'] ?? null;
        
        // ===== اطلاعات تحصیلی =====
        $education_id = $_POST['education_id'] ?? 0;
        $course_id = $_POST['course_id'] ?? null;
        
        // ===== وضعیت‌ها =====
        $payment_status = $_POST['payment_status'] ?? 'پرداخت نشده';
        $contact_status = $_POST['contact_status'] ?? 'تماس گرفته نشده';
        $document_status = $_POST['document_status'] ?? 'در انتظار تکمیل مدرک';
        
        // ===== معرف و نحوه آشنایی =====
        $referral_id = $_POST['referral_id'] ?? 0;
        $representative_id = $_POST['representative_id'] ?? null;
        
        // ===== فیلدهای داینامیک =====
        foreach ($dynamicFields as $section => $fields) {
            foreach ($fields as $field) {
                $fixedFields = ['fullname', 'phone', 'emergency_phone', 'national_code', 'gender', 'education_id', 'course_id', 'payment_status', 'contact_status', 'document_status', 'referral_id', 'representative_id'];
                if (in_array($field['field_name'], $fixedFields)) continue;
                
                if ($field['required'] && empty($_POST['dynamic_' . $field['id']])) {
                    throw new Exception("❌ فیلد '" . htmlspecialchars($field['label'] ?? $field['field_name']) . "' اجباری است.");
                }
            }
        }
        
        // ===== اعتبارسنجی کد ملی =====
        if (!preg_match('/^[0-9]{10}$/', $national_code)) {
            throw new Exception("❌ کد ملی باید دقیقاً ۱۰ رقم باشد.");
        }
        
        $checkStmt = $pdo->prepare("SELECT id FROM members WHERE national_code = ?");
        $checkStmt->execute([$national_code]);
        if ($checkStmt->fetch()) {
            throw new Exception("❌ این کد ملی قبلاً در سیستم ثبت شده است.");
        }
        
        // ===== بررسی خدمت وظیفه برای آقایان =====
        if ($gender == 'مرد' && empty($service_status)) {
            throw new Exception("❌ لطفاً وضعیت خدمت وظیفه را انتخاب کنید.");
        }
        
        // ===== تعیین معرف‌کننده =====
        if (empty($representative_id)) {
            if ($_SESSION['user_level'] == 'representative') {
                $representative_id = $_SESSION['user_id'];
            }
        }
        
        // ===== ذخیره در دیتابیس =====
        $stmt = $pdo->prepare("INSERT INTO members (fullname, phone, emergency_phone, national_code, gender, service_status, education_id, study_field_id, course_id, payment_status, registration_status, document_status, referral_id, representative_id, created_by, utm_source, utm_medium, utm_campaign, utm_link_id, device_type, ip_address) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        
        $stmt->execute([
            $fullname,
            $phone,
            $emergency_phone,
            $national_code,
            $gender,
            $service_status,
            $education_id,
            null, // study_field_id (قدیمی)
            $course_id, // course_id (جدید)
            $payment_status,
            $contact_status,
            $document_status,
            $referral_id,
            $representative_id,
            $_SESSION['user_id'],
            $utm['utm_source'],
            $utm['utm_medium'],
            $utm['utm_campaign'],
            $utm['utm_link_id'],
            $device_type,
            $ip_address
        ]);
        
        $memberId = $pdo->lastInsertId();
        
        // ===== بررسی تأیید خودکار =====
        checkAndUpdateVerification($memberId);
        
        logMemberActivity($memberId, $_SESSION['user_id'], 'create', null, ['fullname' => $fullname, 'national_code' => $national_code]);
        
        if (!empty($utm['utm_link_id'])) {
            incrementUtmRegistration($utm['utm_link_id']);
        }
        
        $success = "✅ ثبت‌نام با موفقیت انجام شد در تاریخ " . convertToPersianDateFa(date('Y-m-d H:i:s'));
        
    } catch(Exception $e) {
        $error = $e->getMessage();
    } catch(PDOException $e) {
        $error = "❌ خطای دیتابیس: " . $e->getMessage();
    }
}
?>
<?php include '../includes/header.php'; ?>

<style>
.register-card { background: white; border-radius: 16px; border: 1px solid #e9edf2; overflow: hidden; }
.register-card .card-header-custom { background: linear-gradient(135deg, #4f46e5, #7c3aed); padding: 20px 25px; color: white; }
.register-card .card-header-custom h4 { margin: 0; font-weight: 700; font-size: 1.2rem; }
.register-card .card-header-custom p { margin: 0; opacity: 0.8; font-size: 0.85rem; }
.register-card .card-body-custom { padding: 25px; }
.field-group { margin-bottom: 25px; }
.field-group .group-title { font-size: 0.85rem; font-weight: 600; color: #0f172a; margin-bottom: 15px; padding-bottom: 8px; border-bottom: 2px solid #e9edf2; }
.field-group .group-title i { color: #4f46e5; margin-left: 8px; }
.form-control, .form-select { border-radius: 10px; height: 44px; font-size: 0.9rem; border: 1px solid #d1d5db; transition: all 0.2s ease; }
.form-control:focus, .form-select:focus { border-color: #4f46e5; box-shadow: 0 0 0 3px rgba(79,70,229,0.1); }
.form-label { font-weight: 500; font-size: 0.85rem; color: #334155; margin-bottom: 4px; }
.form-label .text-danger { color: #ef4444; }
.text-muted { font-size: 0.75rem; }
.btn-register { background: linear-gradient(135deg, #4f46e5, #7c3aed); color: white; border: none; padding: 12px 35px; border-radius: 12px; font-size: 1rem; font-weight: 600; transition: all 0.3s ease; }
.btn-register:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(79,70,229,0.3); color: white; }
.btn-register i { margin-left: 8px; }
.btn-back { padding: 12px 25px; border-radius: 12px; font-size: 1rem; }
.alert-custom { border-radius: 12px; padding: 12px 18px; border: none; }
.alert-custom.alert-success { background: #dcfce7; color: #16a34a; }
.alert-custom.alert-danger { background: #fee2e2; color: #dc2626; }
</style>

<div class="register-card">
    <div class="card-header-custom">
        <h4><i class="bi bi-person-plus"></i> فرم ثبت‌نام</h4>
        <p>لطفاً اطلاعات دانشجو را به دقت وارد کنید</p>
    </div>
    <div class="card-body-custom">
        
        <?php if(!empty($success)): ?>
            <div class="alert-custom alert-success mb-4">
                <i class="bi bi-check-circle me-1"></i> <?php echo $success; ?>
            </div>
        <?php endif; ?>
        
        <?php if(!empty($error)): ?>
            <div class="alert-custom alert-danger mb-4">
                <i class="bi bi-exclamation-circle me-1"></i> <?php echo $error; ?>
            </div>
        <?php endif; ?>

        <form method="POST" id="registerForm">
            
            <!-- ============================================================
            گروه ۱: اطلاعات شخصی
            ============================================================ -->
            <div class="field-group">
                <div class="group-title"><i class="bi bi-person"></i> اطلاعات شخصی</div>
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label class="form-label">نام و نام خانوادگی <span class="text-danger">*</span></label>
                        <input type="text" name="fullname" class="form-control" placeholder="مثال: علی محمدی" required>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">شماره تماس <span class="text-danger">*</span></label>
                        <input type="text" name="phone" class="form-control" placeholder="مثال: 09123456789" required>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">شماره تماس ضروری</label>
                        <input type="text" name="emergency_phone" class="form-control" placeholder="مثال: 09123456789">
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">کد ملی <span class="text-danger">*</span></label>
                        <input type="text" name="national_code" class="form-control" maxlength="10" pattern="[0-9]{10}" placeholder="۱۰ رقم" required>
                        <small class="text-muted">کد ملی باید دقیقاً ۱۰ رقم باشد</small>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">جنسیت <span class="text-danger">*</span></label>
                        <select name="gender" id="gender" class="form-select" required onchange="toggleServiceStatus()">
                            <option value="مرد">مرد</option>
                            <option value="زن">زن</option>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3" id="service_status_container" style="display: none;">
                        <label class="form-label">وضعیت خدمت وظیفه</label>
                        <select name="service_status" id="service_status" class="form-select">
                            <option value="">انتخاب کنید...</option>
                            <option value="دارای پایان خدمت">دارای پایان خدمت</option>
                            <option value="معافیت تحصیلی">معافیت تحصیلی</option>
                        </select>
                    </div>
                    
                    <!-- ===== فیلدهای داینامیک بخش personal ===== -->
                    <?php if (!empty($dynamicFields['personal'])): ?>
                        <?php foreach ($dynamicFields['personal'] as $field): ?>
                            <?php 
                            $fixedFields = ['fullname', 'phone', 'emergency_phone', 'national_code', 'gender'];
                            if (in_array($field['field_name'], $fixedFields)) continue; 
                            ?>
                            <div class="col-md-6 mb-3">
                                <label class="form-label">
                                    <?php echo htmlspecialchars($field['label'] ?? $field['field_name']); ?>
                                    <?php if ($field['required']): ?>
                                        <span class="text-danger">*</span>
                                    <?php endif; ?>
                                </label>
                                <input type="text" name="dynamic_<?php echo $field['id']; ?>" class="form-control" <?php echo $field['required'] ? 'required' : ''; ?>>
                            </div>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </div>
            </div>

            <!-- ============================================================
            گروه ۲: اطلاعات تحصیلی
            ============================================================ -->
            <div class="field-group">
                <div class="group-title"><i class="bi bi-mortarboard"></i> اطلاعات تحصیلی</div>
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label class="form-label">مقطع تحصیلی <span class="text-danger">*</span></label>
                        <select name="education_id" id="education_id" class="form-select" required>
                            <?php foreach($educations as $edu): ?>
                                <option value="<?php echo $edu['id']; ?>"><?php echo htmlspecialchars($edu['name']); ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">رشته تحصیلی <span class="text-danger">*</span></label>
                        <select name="course_id" id="course_id" class="form-select" required>
                            <option value="">ابتدا مقطع را انتخاب کنید</option>
                        </select>
                    </div>
                    
                    <!-- ===== فیلدهای داینامیک بخش educational ===== -->
                    <?php if (!empty($dynamicFields['educational'])): ?>
                        <?php foreach ($dynamicFields['educational'] as $field): ?>
                            <?php 
                            $fixedFields = ['education_id', 'course_id'];
                            if (in_array($field['field_name'], $fixedFields)) continue; 
                            ?>
                            <div class="col-md-6 mb-3">
                                <label class="form-label">
                                    <?php echo htmlspecialchars($field['label'] ?? $field['field_name']); ?>
                                    <?php if ($field['required']): ?>
                                        <span class="text-danger">*</span>
                                    <?php endif; ?>
                                </label>
                                <input type="text" name="dynamic_<?php echo $field['id']; ?>" class="form-control" <?php echo $field['required'] ? 'required' : ''; ?>>
                            </div>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </div>
            </div>

            <!-- ============================================================
            گروه ۳: وضعیت‌ها
            ============================================================ -->
            <div class="field-group">
                <div class="group-title"><i class="bi bi-check2-circle"></i> وضعیت‌ها</div>
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label class="form-label">وضعیت پرداخت <span class="text-danger">*</span></label>
                        <select name="payment_status" class="form-select" required>
                            <option value="پرداخت شده">پرداخت شده</option>
                            <option value="پرداخت نشده" selected>پرداخت نشده</option>
                            <option value="در انتظار پرداخت">در انتظار پرداخت</option>
                            <option value="عودت وجه">عودت وجه</option>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">وضعیت تماس <span class="text-danger">*</span></label>
                        <select name="contact_status" class="form-select" required>
                            <option value="تماس گرفته شده">تماس گرفته شده</option>
                            <option value="تماس گرفته نشده" selected>تماس گرفته نشده</option>
                            <option value="در انتظار پاسخ">در انتظار پاسخ</option>
                            <option value="عدم پاسخ گویی">عدم پاسخ گویی</option>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">وضعیت مدارک <span class="text-danger">*</span></label>
                        <select name="document_status" class="form-select" required>
                            <option value="در انتظار تکمیل مدرک" selected>در انتظار تکمیل مدرک</option>
                            <option value="مدارک تکمیل شده">مدارک تکمیل شده</option>
                            <option value="تایید شده">تایید شده</option>
                            <option value="انصراف">انصراف</option>
                        </select>
                    </div>
                    
                    <!-- ===== فیلدهای داینامیک بخش status ===== -->
                    <?php if (!empty($dynamicFields['status'])): ?>
                        <?php foreach ($dynamicFields['status'] as $field): ?>
                            <?php 
                            $fixedFields = ['payment_status', 'contact_status', 'document_status'];
                            if (in_array($field['field_name'], $fixedFields)) continue; 
                            ?>
                            <div class="col-md-6 mb-3">
                                <label class="form-label">
                                    <?php echo htmlspecialchars($field['label'] ?? $field['field_name']); ?>
                                    <?php if ($field['required']): ?>
                                        <span class="text-danger">*</span>
                                    <?php endif; ?>
                                </label>
                                <input type="text" name="dynamic_<?php echo $field['id']; ?>" class="form-control" <?php echo $field['required'] ? 'required' : ''; ?>>
                            </div>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </div>
            </div>

            <!-- ============================================================
            گروه ۴: معرف و نحوه آشنایی
            ============================================================ -->
            <div class="field-group">
                <div class="group-title"><i class="bi bi-share"></i> معرف و نحوه آشنایی</div>
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label class="form-label">نحوه آشنایی <span class="text-danger">*</span></label>
                        <select name="referral_id" class="form-select" required>
                            <?php foreach($referrals as $ref): ?>
                                <option value="<?php echo $ref['id']; ?>"><?php echo htmlspecialchars($ref['name']); ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">معرف‌کننده (اختیاری)</label>
                        <select name="representative_id" class="form-select">
                            <option value="">انتخاب کنید...</option>
                            <?php foreach($representatives as $rep): ?>
                                <option value="<?php echo $rep['id']; ?>"><?php echo htmlspecialchars($rep['fullname']); ?></option>
                            <?php endforeach; ?>
                        </select>
                        <small class="text-muted">اگر دانشجو توسط یک معرف‌کننده ثبت شده، او را انتخاب کنید</small>
                    </div>
                    
                    <!-- ===== فیلدهای داینامیک بخش referral ===== -->
                    <?php if (!empty($dynamicFields['referral'])): ?>
                        <?php foreach ($dynamicFields['referral'] as $field): ?>
                            <?php 
                            $fixedFields = ['referral_id', 'representative_id'];
                            if (in_array($field['field_name'], $fixedFields)) continue; 
                            ?>
                            <div class="col-md-6 mb-3">
                                <label class="form-label">
                                    <?php echo htmlspecialchars($field['label'] ?? $field['field_name']); ?>
                                    <?php if ($field['required']): ?>
                                        <span class="text-danger">*</span>
                                    <?php endif; ?>
                                </label>
                                <input type="text" name="dynamic_<?php echo $field['id']; ?>" class="form-control" <?php echo $field['required'] ? 'required' : ''; ?>>
                            </div>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </div>
            </div>

            <!-- ============================================================
            دکمه‌ها
            ============================================================ -->
            <div class="d-flex flex-wrap gap-3 mt-3">
                <button type="submit" class="btn btn-register">
                    <i class="bi bi-check-circle"></i> ثبت‌نام
                </button>
                <a href="../index.php" class="btn btn-secondary btn-back">
                    <i class="bi bi-arrow-right"></i> بازگشت
                </a>
            </div>

        </form>
    </div>
</div>

<script>
// ============================================================
// به‌روزرسانی رشته‌ها بر اساس مقطع
// ============================================================
document.addEventListener('DOMContentLoaded', function() {
    const educationSelect = document.getElementById('education_id');
    const courseSelect = document.getElementById('course_id');
    
    // داده‌های رشته‌ها از PHP
    const coursesData = <?php 
        $allCourses = $pdo->query("SELECT * FROM courses WHERE status = 'active' ORDER BY sort_order")->fetchAll();
        $grouped = [];
        foreach ($allCourses as $course) {
            $eduId = $course['education_id'] ?? 0;
            if (!isset($grouped[$eduId])) {
                $grouped[$eduId] = [];
            }
            $grouped[$eduId][] = ['id' => $course['id'], 'name' => $course['name']];
        }
        echo json_encode($grouped); 
    ?>;
    
    function updateCourses() {
        const eduId = educationSelect.value;
        const courses = coursesData[eduId] || [];
        
        courseSelect.innerHTML = '<option value="">انتخاب رشته...</option>';
        courses.forEach(function(course) {
            const option = document.createElement('option');
            option.value = course.id;
            option.textContent = course.name;
            courseSelect.appendChild(option);
        });
        
        if (courses.length === 0) {
            courseSelect.innerHTML = '<option value="">هیچ رشته‌ای برای این مقطع یافت نشد</option>';
        }
    }
    
    educationSelect.addEventListener('change', updateCourses);
    if (educationSelect.value) {
        updateCourses();
    }
});

// ============================================================
// نمایش/مخفی‌سازی خدمت وظیفه
// ============================================================
function toggleServiceStatus() {
    var gender = document.getElementById('gender').value;
    var container = document.getElementById('service_status_container');
    var serviceSelect = document.getElementById('service_status');
    if (gender === 'مرد') {
        container.style.display = 'block';
        serviceSelect.setAttribute('required', 'required');
    } else {
        container.style.display = 'none';
        serviceSelect.removeAttribute('required');
        serviceSelect.value = '';
    }
}
</script>

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