import { gregorianToHijri, calculateMissedPrayers, getHijriAge, getHijriBirthDate, } from "../utils/hijri.js"; const PRAYERS = [ { id: "fajr", name: "SABAH", arabic: "Fecr" }, { id: "dhuhr", name: "ÖĞLE", arabic: "Zuhur" }, { id: "asr", name: "İKİNDİ", arabic: "Asr" }, { id: "maghrib", name: "AKŞAM", arabic: "Mağrib" }, { id: "isha", name: "YATSI", arabic: "İşa" }, { id: "vitr", name: "VİTR", arabic: "Vitr" }, ]; export function renderKaza(pb) { const pbBirthDate = pb.authStore.model?.birthdate; const pbGender = pb.authStore.model?.gender; const profileS = localStorage.getItem("kaza_profile"); let profile = profileS ? JSON.parse(profileS) : null; const birthDate = pbBirthDate || profile?.birthDate; const gender = pbGender || profile?.gender; const html = `

🕌 Kaza Namaz Takibi

Hicri yaşını ve kalan kaza namazını takip et.

${ !birthDate ? `

Profil Bilgileri

` : `

Hicri Doğum Tarihi

-

${PRAYERS.map( (p) => `

${p.name}

Kalan: -

Toplam: -

`, ).join("")}

Kaza Namaz Ekle / Çıkar

Bugünkü Namazlar

${PRAYERS.map((p) => { const todayKey = new Date().toISOString().split("T")[0]; const alreadyDone = profile?.todayLogs?.some( (l) => l.prayerId === p.id && l.date === todayKey, ); return `

${p.arabic}

${p.name}

${alreadyDone ? "

✓ Kılındı

" : ""}
`; }).join("")}

Son İşlemler

Yükleniyor...

` }
`; return { html, initEvents: (container) => { const closeBtn = container.querySelector("#closeBtn"); if (closeBtn) { closeBtn.addEventListener("click", () => { const event = new CustomEvent("navigate", { detail: "desktop" }); window.dispatchEvent(event); }); } if (!birthDate) { const form = container.querySelector("#profileForm"); const genderSelect = container.querySelector("#gender"); if (gender && genderSelect) { genderSelect.value = gender; } if (form) { form.addEventListener("submit", async (e) => { e.preventDefault(); const birthDateInput = container.querySelector("#birthDate").value; const genderInput = container.querySelector("#gender").value; if (!birthDateInput) { alert("Lütfen doğum tarihinizi girin."); return; } try { await pb.collection("users").update(pb.authStore.model.id, { birthDate: birthDateInput, gender: genderInput, }); } catch (err) { console.error("PocketBase kaydedilemedi:", err); } profile = { gender: genderInput, logs: profile?.logs || [], todayLogs: profile?.todayLogs || [], createdAt: profile?.createdAt || new Date().toISOString(), }; localStorage.setItem("kaza_profile", JSON.stringify(profile)); const event = new CustomEvent("navigate", { detail: "kaza" }); window.dispatchEvent(event); }); } } else { refreshKazaStats(container, pb, birthDate, gender, profile); const addBtn = container.querySelector("#addKazaBtn"); const removeBtn = container.querySelector("#removeKazaBtn"); if (addBtn) { addBtn.addEventListener("click", async () => { const prayerId = container.querySelector("#kazaPrayerType").value; const countInput = container.querySelector("#kazaCount"); const count = Math.max(1, parseInt(countInput?.value || "1", 10)); const msg = container.querySelector("#kazaMsg"); try { await pb.collection("kaza_logs").create({ user: pb.authStore.model.id, prayerId, count, date: new Date().toISOString().split("T")[0], }); showKazaMsg(msg, `${count} kaza namaz eklendi!`, true); if (countInput) countInput.value = "1"; await refreshKazaStats(container, pb, birthDate, gender, profile); } catch (err) { console.error("Kaza eklenemedi:", err); showKazaMsg( msg, "Eklenemedi. PocketBase bağlantısını kontrol et.", false, ); } }); } if (removeBtn) { removeBtn.addEventListener("click", async () => { const prayerId = container.querySelector("#kazaPrayerType").value; const countInput = container.querySelector("#kazaCount"); const count = Math.max(1, parseInt(countInput?.value || "1", 10)); const msg = container.querySelector("#kazaMsg"); try { const records = await pb.collection("kaza_logs").getFullList({ filter: `user = "${pb.authStore.model.id}" && prayerId = "${prayerId}"`, sort: "-createdAt", }); let remaining = count; for (const record of records) { if (remaining <= 0) break; const recordCount = record.count || 1; if (recordCount > remaining) { await pb.collection("kaza_logs").update(record.id, { count: recordCount - remaining, }); remaining = 0; } else { await pb.collection("kaza_logs").delete(record.id); remaining -= recordCount; } } showKazaMsg(msg, `${count} kaza namaz çıkarıldı!`, true); if (countInput) countInput.value = "1"; await refreshKazaStats(container, pb, birthDate, gender, profile); } catch (err) { console.error("Kaza çıkarılamadı:", err); showKazaMsg( msg, "Çıkarılamadı. PocketBase bağlantısını kontrol et.", false, ); } }); } } }, }; } async function refreshKazaStats(container, pb, birthDate, gender, profile) { if (!birthDate) return; const calc = calculateMissedPrayers(birthDate, gender); const hijriBirth = getHijriBirthDate(birthDate); const birthDateEl = container.querySelector("#hijriBirthDateDisplay"); if (birthDateEl) { birthDateEl.textContent = `${hijriBirth.day} ${hijriBirth.monthName} ${hijriBirth.year}`; } let logs = []; let logsByPrayer = {}; try { const records = await pb.collection("kaza_logs").getFullList({ filter: `user = "${pb.authStore.model.id}"`, sort: "-createdAt", }); logs = records.map((r) => ({ id: r.id, prayerId: r.prayerId, count: r.count || 1, date: r.date, createdAt: r.createdAt, })); logs.forEach((l) => { logsByPrayer[l.prayerId] = (logsByPrayer[l.prayerId] || 0) + (l.count || 1); }); } catch (err) { console.error("Loglar yüklenemedi:", err); } PRAYERS.forEach((p) => { const totalEl = container.querySelector(`#total-${p.id}`); const remainEl = container.querySelector(`#remaining-${p.id}`); const missed = calc[p.id] || 0; const completed = logsByPrayer[p.id] || 0; const remaining = Math.max(0, missed - completed); if (totalEl) totalEl.textContent = missed; if (remainEl) remainEl.textContent = remaining; }); const todayKey = new Date().toISOString().split("T")[0]; const todayLogs = logs.filter((l) => l.date === todayKey); if (profile) { profile.todayLogs = todayLogs; localStorage.setItem("kaza_profile", JSON.stringify(profile)); } const logsContainer = container.querySelector("#logsContainer"); if (logsContainer) { logsContainer.innerHTML = logs .slice(0, 20) .map((log) => { const prayer = PRAYERS.find((p) => p.id === log.prayerId); return `
${prayer?.name || log.prayerId} x${log.count} - ${log.date} +${log.count}
`; }) .join("") || '

Henüz kayıt yok.

'; } } function showKazaMsg(el, text, success) { el.textContent = text; el.className = `text-xs mt-2 ${success ? "text-emerald-400" : "text-rose-400"}`; el.classList.remove("hidden"); }