<!DOCTYPE html>
const user = auth.currentUser; if (!user) return dlgAuth.showModal();
document.getElementById('r-blood').value = '';
document.getElementById('r-area').value = '';
document.getElementById('r-contact').value = '';
document.getElementById('r-date').value = '';
document.getElementById('r-note').value = '';
dlgRequest.showModal();
});
document.getElementById('btn-post-req').addEventListener('click', async () => {
const user = auth.currentUser; if (!user) return dlgAuth.showModal();
const payload = {
uid: user.uid,
blood: document.getElementById('r-blood').value,
area: document.getElementById('r-area').value.trim(),
contact: document.getElementById('r-contact').value.trim(),
needAt: document.getElementById('r-date').value,
note: document.getElementById('r-note').value.trim(),
createdAt: serverTimestamp()
};
if (!payload.blood || !payload.area || !payload.contact) { alert('রক্তের গ্রুপ, এলাকা ও কন্ট্যাক্ট দিন'); return; }
await addDoc(collection(db, 'requests'), payload);
alert('রিকোয়েস্ট পোস্ট হয়েছে');
dlgRequest.close();
await loadRequests();
});
document.getElementById('btn-refresh-req').addEventListener('click', () => loadRequests());
async function loadRequests() {
const reqEl = document.getElementById('req-list');
reqEl.innerHTML = '<div class="text-sm text-gray-500">লোডিং...</div>';
const qRef = query(collection(db, 'requests'), orderBy('createdAt', 'desc'), limit(50));
const snap = await getDocs(qRef);
const arr = []; snap.forEach(d => arr.push({ id: d.id, ...d.data() }));
reqEl.innerHTML = '';
arr.forEach(r => {
const el = document.createElement('div');
el.className = 'p-3 rounded-2xl border bg-white flex flex-col sm:flex-row sm:items-center gap-3';
el.innerHTML = `
<div class="flex-1">
<div class="flex items-center gap-2">
<span class="badge bg-red-100 text-red-700">${r.blood}</span>
<span class="font-semibold">${r.area}</span>
</div>
<div class="text-sm">📞 <a class="underline" href="tel:${r.contact}">${r.contact}</a></div>
<div class="text-xs text-gray-600">চাই: ${r.needAt || 'সময় উল্লেখ নেই'}</div>
<div class="text-sm">${r.note || ''}</div>
</div>
<div class="flex gap-2">
<a href="tel:${r.contact}" class="btn btn-primary">কল</a>
<a href="sms:${r.contact}" class="btn btn-secondary">SMS</a>
</div>`;
reqEl.appendChild(el);
});
}
// Initial load
search();
loadRequests();
// Open profile shortcut card
document.getElementById('btn-open-profile').addEventListener('click', () => {});
</script>
<!-- Firestore Security Rules (copy these into Firebase console > Firestore > Rules) -->
<!--
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /donors/{uid} {
allow read: if true; // সবার জন্য ডোনার লিস্ট দৃশ্যমান
allow write: if request.auth != null && request.auth.uid == uid; // কেবল নিজে আপডেট
}
match /requests/{doc} {
allow read: if true; // সবাই রিকোয়েস্ট দেখতে পারবে
allow create: if request.auth != null; // লগইন থাকতে হবে
allow update, delete: if request.auth != null && request.resource.data.uid == request.auth.uid;
}
}
}
-->
<footer class="max-w-5xl mx-auto px-4 py-10 text-center text-xs text-gray-500">
তৈরি করেছেন — আপনার এলাকার সেবার জন্য। ওপেন সোর্স।
</footer>