kaza namazı hesaplama düzeltildi.

This commit is contained in:
2026-07-31 04:29:58 +02:00
parent d533c6a196
commit 143a1de4e1
+44 -12
View File
@@ -149,13 +149,14 @@ export function renderKaza(pb) {
new CustomEvent("navigate", { detail: "kaza" }),
);
} catch (err) {
alert("Profil kaydedilemedi.");
alert(
"Profil kaydedilemedi. PocketBase alan adlarını kontrol edin.",
);
}
});
} else {
refreshKazaStats(container, pb);
// Hesapla & Kaydet Butonu Tıklanması
container
.querySelector("#calcAndSaveBtn")
?.addEventListener("click", async () => {
@@ -164,13 +165,21 @@ export function renderKaza(pb) {
"Kaza borçlarınız doğum tarihinize göre yeniden hesaplanıp veritabanına sabitlenecek. Onaylıyor musunuz?",
)
) {
await initAndSaveInitialKaza(pb, birthDate, gender);
const res = await initAndSaveInitialKaza(pb, birthDate, gender);
if (res.success) {
await refreshKazaStats(container, pb);
showKazaMsg(
container.querySelector("#kazaMsg"),
"Kaza borçları hesaplandı ve PocketBase'e kaydedildi!",
`Kaza borçları hesaplandı (${res.days} gün = ${res.fajr} vakit) ve PocketBase'e kaydedildi!`,
true,
);
} else {
showKazaMsg(
container.querySelector("#kazaMsg"),
`Hata: ${res.error}`,
false,
);
}
}
});
@@ -190,17 +199,28 @@ export function renderKaza(pb) {
};
}
// Otomatik hesaplayıp PocketBase'e toplam borç olarak kaydetme
async function initAndSaveInitialKaza(pb, birthDate, gender) {
try {
const calc = calculateMissedPrayers(birthDate, gender, 12);
const userId = pb.authStore.model.id;
if (!calc || calc.fajr === 0) {
return {
success: false,
error:
"Hesaplanan gün sayısı 0 çıktı. Doğum tarihinizin doğrulunu kontrol edin.",
};
}
const userId = pb.authStore.model.id;
let userRecord = null;
try {
userRecord = await pb
.collection("kaza_logs")
.getFirstListItem(`user = "${userId}"`);
} catch {}
} catch (e) {
// Kayıt bulunamazsa sorun yok, yenisini oluşturacağız
}
const initialData = {
user: userId,
@@ -223,6 +243,17 @@ async function initAndSaveInitialKaza(pb, birthDate, gender) {
} else {
await pb.collection("kaza_logs").create(initialData);
}
return { success: true, days: calc.days, fajr: calc.fajr };
} catch (err) {
console.error("PocketBase Kayıt Hatası:", err);
return {
success: false,
error:
err?.message ||
"PocketBase kayıt yaparken hata oluştu. kaza_logs koleksiyon izinlerini (API Rules) ve alan adlarını kontrol edin.",
};
}
}
async function updateKazaCount(container, pb, direction) {
@@ -239,8 +270,10 @@ async function updateKazaCount(container, pb, direction) {
.getFirstListItem(`user = "${userId}"`);
if (!userRecord) {
alert(
"Önce 'Kaza Borçlarını Otomatik Hesapla & Kaydet' butonuna basmalısınız.",
showKazaMsg(
msg,
"Önce yukarıdaki 'Hesapla & Kaydet' butonuna tıklamalısınız.",
false,
);
return;
}
@@ -264,7 +297,7 @@ async function updateKazaCount(container, pb, direction) {
await refreshKazaStats(container, pb);
} catch (err) {
console.error("Güncelleme hatası:", err);
showKazaMsg(msg, "Güncelleme başarısız. Lütfen kontrol edin.", false);
showKazaMsg(msg, "Güncelleme başarısız.", false);
}
}
@@ -279,7 +312,6 @@ async function refreshKazaStats(container, pb) {
} catch (err) {}
if (!userRecord) {
// Kayıt yoksa kartları sıfır göster
PRAYERS.forEach((p) => {
const remainEl = container.querySelector(`#remaining-${p.id}`);
const completedEl = container.querySelector(`#completed-${p.id}`);
@@ -341,6 +373,6 @@ async function refreshKazaStats(container, pb) {
function showKazaMsg(el, text, success) {
if (!el) return;
el.textContent = text;
el.className = `text-xs mt-3 ${success ? "text-emerald-400 font-medium" : "text-rose-400"}`;
el.className = `text-xs mt-3 ${success ? "text-emerald-400 font-medium" : "text-rose-400 font-medium"}`;
el.classList.remove("hidden");
}