79753839

Date: 2025-09-02 18:49:08
Score: 0.5
Natty:
Report link

<!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>

Reasons:
  • Long answer (-1):
  • No code block (0.5):
  • Low reputation (1):
Posted by: MD SHAIFUL ISLAM