نخبة من أفضل المحامين والمستشارين القانونيين في مصر




جاري تحميل بيانات المحامين…

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.msgContent || 'اسم غير متوفر'}

${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);

تابع جديد الوظائف
Scroll to Top