/**
 * ملف معالجة النماذج في لوحة الإدارة
 */

class AdminForms {
    constructor() {
        this.init();
    }

    init() {
        console.log('تم تهيئة AdminForms');
        this.setupFormHandlers();
        this.setupUserTypeHandlers();
    }

    setupFormHandlers() {
        // معالجة نموذج إنشاء المستخدم
        const createForm = document.getElementById('createUserForm');
        if (createForm) {
            this.setupFormSubmit(createForm, 'create');
        }

        // معالجة نموذج تعديل المستخدم
        const editForm = document.getElementById('editUserForm');
        if (editForm) {
            this.setupFormSubmit(editForm, 'edit');
        }

        // معالجة نموذج الاختبار
        const testForm = document.getElementById('testForm');
        if (testForm) {
            this.setupFormSubmit(testForm, 'test');
        }
    }

    setupFormSubmit(form, type) {
        const submitBtn = form.querySelector('button[type="submit"]');

        form.addEventListener('submit', (e) => {
            console.log(`تم إرسال نموذج ${type}`);

            // منع الإرسال المزدوج
            if (submitBtn && submitBtn.disabled) {
                e.preventDefault();
                console.log('النموذج قيد المعالجة بالفعل');
                return false;
            }

            // التحقق من صحة البيانات
            if (!this.validateForm(form, type)) {
                e.preventDefault();
                return false;
            }

            // تعطيل الزر وإظهار رسالة التحميل
            if (submitBtn) {
                this.disableSubmitButton(submitBtn, type);
            }

            // إرسال النموذج
            console.log(`إرسال نموذج ${type}...`);
            return true;
        });
    }

    validateForm(form, type) {
        // التحقق من البيانات المطلوبة
        const requiredFields = form.querySelectorAll('[required]');
        let isValid = true;

        requiredFields.forEach(field => {
            if (!field.value.trim()) {
                this.showFieldError(field, 'هذا الحقل مطلوب');
                isValid = false;
            } else {
                this.clearFieldError(field);
            }
        });

        // التحقق من كلمة المرور في نموذج الإنشاء
        if (type === 'create') {
            const password = form.querySelector('#password');
            const passwordConfirmation = form.querySelector('#password_confirmation');

            if (password && passwordConfirmation && password.value !== passwordConfirmation.value) {
                this.showFieldError(passwordConfirmation, 'كلمة المرور غير متطابقة');
                isValid = false;
            }
        }

        // التحقق من رقم رخصة القيادة للسائق
        const userType = form.querySelector('#user_type');
        if (userType && userType.value === 'driver') {
            const licenseNumber = form.querySelector('#license_number');
            if (licenseNumber && !licenseNumber.value.trim()) {
                this.showFieldError(licenseNumber, 'رقم رخصة القيادة مطلوب للسائقين');
                isValid = false;
            }
        }

        return isValid;
    }

    showFieldError(field, message) {
        // إزالة رسالة الخطأ السابقة
        this.clearFieldError(field);

        // إضافة class الخطأ
        field.classList.add('is-invalid');

        // إنشاء رسالة الخطأ
        const errorDiv = document.createElement('div');
        errorDiv.className = 'invalid-feedback';
        errorDiv.textContent = message;

        // إضافة رسالة الخطأ بعد الحقل
        field.parentNode.appendChild(errorDiv);
    }

    clearFieldError(field) {
        field.classList.remove('is-invalid');
        const errorDiv = field.parentNode.querySelector('.invalid-feedback');
        if (errorDiv) {
            errorDiv.remove();
        }
    }

    disableSubmitButton(button, type) {
        button.disabled = true;

        const loadingTexts = {
            'create': 'جاري الحفظ...',
            'edit': 'جاري التحديث...',
            'test': 'جاري الاختبار...'
        };

        button.innerHTML = `<i class="fas fa-spinner fa-spin"></i> ${loadingTexts[type] || 'جاري المعالجة...'}`;
    }

    setupUserTypeHandlers() {
        const userTypeSelects = document.querySelectorAll('#user_type');

        userTypeSelects.forEach(select => {
            select.addEventListener('change', (e) => {
                console.log('تم تغيير نوع المستخدم إلى:', e.target.value);
                this.toggleDriverInfo(e.target.value);
            });
        });

        // تشغيل عند تحميل الصفحة
        const userTypeSelect = document.querySelector('#user_type');
        if (userTypeSelect) {
            this.toggleDriverInfo(userTypeSelect.value);
        }
    }

    toggleDriverInfo(userType) {
        const driverInfo = document.getElementById('driver_info');
        const licenseNumberField = document.getElementById('license_number');

        if (driverInfo) {
            if (userType === 'driver') {
                driverInfo.style.display = 'block';
                if (licenseNumberField) {
                    licenseNumberField.required = true;
                }
            } else {
                driverInfo.style.display = 'none';
                if (licenseNumberField) {
                    licenseNumberField.required = false;
                }
            }
        }
    }

    // دالة مساعدة لاختبار النماذج
    testForm(formId) {
        const form = document.getElementById(formId);
        if (!form) {
            console.error(`النموذج ${formId} غير موجود`);
            return false;
        }

        console.log('اختبار النموذج:', formId);

        // محاكاة إرسال النموذج
        const formData = new FormData(form);
        const data = {};

        for (let [key, value] of formData.entries()) {
            data[key] = value;
        }

        console.log('بيانات النموذج:', data);
        return true;
    }
}

// تهيئة عند تحميل الصفحة
document.addEventListener('DOMContentLoaded', function() {
    console.log('تم تحميل AdminForms');

    // إنشاء instance جديد
    window.adminForms = new AdminForms();

    // اختبار إضافي
    console.log('CSRF Token موجود:', document.querySelector('input[name="_token"]') !== null);
    console.log('CSRF Token value:', document.querySelector('input[name="_token"]')?.value);

    // اختبار النماذج الموجودة
    const forms = ['createUserForm', 'editUserForm', 'testForm'];
    forms.forEach(formId => {
        if (document.getElementById(formId)) {
            console.log(`النموذج ${formId} موجود`);
        }
    });
});

// تصدير للاستخدام في ملفات أخرى
if (typeof module !== 'undefined' && module.exports) {
    module.exports = AdminForms;
}
