Files
butcem/src/app/(app)/raporlar/kisi-hesap/csv/route.ts
T
suphicakir 29d7b29cfa feat(ui): dashboard ana grafiği ve rapor sayfaları
- dashboard: periyot seçici ve kümülatif/dönemsel görünüm, tablo; günlük plan kartı sadeleşti
- /raporlar özet ve kategori, trend, kişi/hesap, bütçe sayfaları; ay seçici ve CSV indirme

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 00:29:25 +03:00

37 lines
1.2 KiB
TypeScript

import { csvContext, csvPct, csvResponse, forbidden, unauthorized } from "@/features/reports/csv";
import { getPeopleAccountsReport } from "@/features/reports/service";
import { tr } from "@/i18n/tr";
import { csvMoney, toCsv } from "@/shared/csv";
/** GET /raporlar/kisi-hesap/csv?ay=YYYY-MM&tablo=kisi|hesap */
export async function GET(request: Request) {
const c = await csvContext(request);
if (!c) return unauthorized();
const r = await getPeopleAccountsReport(c.userId, c.householdId, c.month);
if (!r) return forbidden();
const h = tr.reports.csvHeaders;
if (c.params.get("tablo") === "hesap")
return csvResponse(
toCsv(
h.accounts,
r.accounts.map((a) => [
a.name,
csvMoney(a.incomeMinor),
csvMoney(a.expenseMinor),
csvMoney(a.transferInMinor),
csvMoney(a.transferOutMinor),
csvMoney(a.netMinor),
a.count,
]),
),
tr.reports.csvFiles.accounts(r.month),
);
return csvResponse(
toCsv(
h.people,
r.people.map((p) => [p.name, csvMoney(p.expenseMinor), p.count, csvPct(p.sharePct)]),
),
tr.reports.csvFiles.people(r.month),
);
}