diff --git a/backend/services/falukantPoliticalPowersService.js b/backend/services/falukantPoliticalPowersService.js index 4a558d7..5a7fdb1 100644 --- a/backend/services/falukantPoliticalPowersService.js +++ b/backend/services/falukantPoliticalPowersService.js @@ -457,8 +457,14 @@ class FalukantPoliticalPowersService { } const start = new Date(); + const termDays = Number(officeType.termLength); + if (!Number.isFinite(termDays) || termDays <= 0) { + const err = new Error('invalid_office_term_length'); + err.status = 500; + throw err; + } const end = new Date(start); - end.setFullYear(end.getFullYear() + (officeType.termLength || 4)); + end.setDate(end.getDate() + termDays); let newOffice; await sequelize.transaction(async (t) => { diff --git a/backend/services/falukantService.js b/backend/services/falukantService.js index 6dbe06d..4043f99 100644 --- a/backend/services/falukantService.js +++ b/backend/services/falukantService.js @@ -6388,13 +6388,14 @@ class FalukantService extends BaseService { return offices.map((office) => { const o = office.get({ plain: true }); - // Enddatum der Amtszeit berechnen: Start = createdAt, Dauer = termLength Jahre + // Enddatum der Amtszeit: wie DB/C++-Worker — Start + termLength Kalendertage + // (falukant_type.political_office_type.term_length ist in Tagen, vgl. politics_worker.h) let termEnds = null; - if (o.createdAt && o.type && typeof o.type.termLength === 'number') { + if (o.createdAt && o.type && typeof o.type.termLength === 'number' && o.type.termLength > 0) { const start = new Date(o.createdAt); if (!Number.isNaN(start.getTime())) { const end = new Date(start); - end.setFullYear(end.getFullYear() + o.type.termLength); + end.setDate(end.getDate() + o.type.termLength); termEnds = end; } }