const firebaseConfig = { apiKey: "AIzaSyCXUgLNYwKB9_wrOONQOrD8mlO2zdp4tuc", authDomain: "derby1.firebaseapp.com", projectId: "derby1", storageBucket: "derby1.appspot.com", messagingSenderId: "839166015287", appId: "1:839166015287:web:786225f8220461ea9d0cb2" };
const app = initializeApp(firebaseConfig); const db = getFirestore(app); const auth = getAuth(app);
let currentUser = null; const modal = document.getElementById('consultationModal'); const closeModalBtn = document.getElementById('closeModalBtn'); const consultationForm = document.getElementById('consultationForm'); const submitBtn = document.getElementById('submitConsultationBtn');
onAuthStateChanged(auth, (user) => { currentUser = user; });
function showModal() { modal.style.display = 'flex'; setTimeout(() => modal.classList.add('show'), 10); } function hideModal() { modal.classList.remove('show'); setTimeout(() => { modal.style.display = 'none'; consultationForm.reset(); }, 300); }
closeModalBtn.addEventListener('click', hideModal); modal.addEventListener('click', (e) => { if (e.target === modal) hideModal(); });
async function fetchAndDisplayLawyers() { const container = document.getElementById('lawyers-container'); try { // ✅ --- [هذا هو السطر الذي تم تعديله] --- ✅ // أضفنا شرطًا جديدًا لجلب المحامين فقط عندما تكون قيمة حقل "wait" هي "false" const q = query(collection(db, "contactForm"), where("role", "==", "lawyer"), where("wait", "==", false));
const querySnapshot = await getDocs(q); container.innerHTML = ''; if (querySnapshot.empty) { container.innerHTML = '
'; return; } querySnapshot.forEach((docSnap) => { const lawyerData = docSnap.data(); const lawyerId = docSnap.id; const lawyerCard = document.createElement('div'); lawyerCard.className = 'lawyer-card';
lawyerCard.innerHTML = `
${lawyerData.descriptionrw || 'وصف غير متوفر'}
${lawyerData.degree || 'غير محدد'}
${lawyerData.expertise || 'غير محدد'}
`; container.appendChild(lawyerCard); }); addEventListenersToButtons(); } catch (error) { console.error("Error fetching documents: ", error); container.innerHTML = '
'; } }
// ✅ الكود الجديد والمُصَحَّح function addEventListenersToButtons() { document.querySelectorAll('.request-btn').forEach(button => { button.addEventListener('click', () => { if (!currentUser) { alert("يرجى تسجيل الدخول أولاً لطلب استشارة."); return; } // عند الضغط على الزر، نقوم بتخزين بيانات المحامي في النموذج نفسه consultationForm.dataset.targetLawyerUid = button.dataset.lawyerUid; consultationForm.dataset.targetLawyerName = button.dataset.lawyerName; // <-- ✅ هذا هو السطر الجديد الذي يحل المشكلة showModal(); }); }); // ... الكود الحالي الخاص بزر طلب الاستشارة // --- ✅ أضف الكود التالي --- document.querySelectorAll('.profile-btn').forEach(button => { button.addEventListener('click', () => { const profileLink = button.dataset.profileLink; if (profileLink) { // إذا كان الرابط موجودًا، انتقل إليه window.location.href = profileLink; } else { // إذا كان الرابط فارغًا، أظهر الرسالة alert('هذا المحامي ينتظر التفعيل'); } }); }); // --- نهاية الكود المضاف --- }
consultationForm.addEventListener('submit', async (e) => { e.preventDefault(); const targetLawyerUid = e.target.dataset.targetLawyerUid; const targetLawyerName = e.target.dataset.targetLawyerName;
if (!currentUser) { alert("يرجى تسجيل الدخول أولاً لإرسال الاستشارة."); return; }
// ========================================================== // ✅✅✅ تطبيق نفس منطق كود البروفايل الناجح ✅✅✅
// 1. تعريف المتغيرات بالقيم الافتراضية (من حساب جوجل) let senderName = currentUser.displayName || 'مستخدم غير معروف'; let senderPhoto = currentUser.photoURL || '';
try { // 2. جلب ملف المُرسِل من قاعدة البيانات (تمامًا مثلما يفعل كود البروفايل) const userRef = doc(db, 'contactForm', currentUser.uid); const userSnap = await getDoc(userRef);
// 3. إذا وُجد الملف، نستخدم البيانات المخصصة if (userSnap.exists()) { const userData = userSnap.data(); senderName = userData.msgContent || senderName; senderPhoto = userData.photoUrlXP || senderPhoto; }
submitBtn.disabled = true; submitBtn.textContent = 'جاري الإرسال...';
// 4. تجهيز بيانات الاستشارة بالبيانات الصحيحة const consultationData = { subject: document.getElementById('consultSubject').value, details: document.getElementById('consultDetails').value, caseNumber: document.getElementById('consultCaseNumber').value || '', phone: document.getElementById('consultPhone').value, status: 'pending', createdAt: new Date(),
senderUid: currentUser.uid,
senderName: senderName, // <-- الاسم الصحيح الآن
senderPhoto: senderPhoto, // <-- الصورة الصحيحة الآن
lawyerUid: targetLawyerUid,
lawyerName: targetLawyerName,
participants: [currentUser.uid, targetLawyerUid]
};
// 5. إنشاء الطلب في قاعدة البيانات
const docRef = await addDoc(collection(db, "requestToLawyers"), consultationData);
alert('تم إرسال استشارتك بنجاح!');
hideModal();
} catch (error) {
console.error("خطأ فادح أثناء إرسال الاستشارة:", error);
alert('حدث خطأ غير متوقع. يرجى المحاولة مرة أخرى.');
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'إرسال الاستشارة';
}
// --- نهاية الكود ---
// ==========================================================
});
document.addEventListener('DOMContentLoaded', fetchAndDisplayLawyers);