diff --git a/backend/src/jobs/dailyDunningJob.ts b/backend/src/jobs/dailyDunningJob.ts new file mode 100644 index 0000000..d00d76d --- /dev/null +++ b/backend/src/jobs/dailyDunningJob.ts @@ -0,0 +1,28 @@ +import 'dotenv/config'; +import { PrismaClient } from '@prisma/client'; +import { PaymentService } from '../modules/banking/paymentService'; + +/** + * Täglicher Cron-Job (z.B. via Supabase Scheduled Edge Function oder + * node-cron: `0 8 * * *` = jeden Tag 08:00 Uhr). + * Prüft alle überfälligen Zahlungen nach dem 3. Werktag und löst + * Mahn-Notifications an Mieter + Vermieter aus. + */ +export async function runDailyDunningJob() { + const prisma = new PrismaClient(); + const paymentService = new PaymentService(prisma); + try { + const result = await paymentService.runDailyDunningCheck(); + console.log(`[dailyDunningJob] ${result.dunningsSent} Mahnungen versendet.`); + return result; + } finally { + await prisma.$disconnect(); + } +} + +if (require.main === module) { + runDailyDunningJob().catch((err) => { + console.error('[dailyDunningJob] Fehlgeschlagen:', err); + process.exit(1); + }); +}