From 971da3e57c46e347e0b462b8b3cd979b4e389c13 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Fri, 6 Feb 2026 00:16:55 +0100 Subject: [PATCH] Refactor director data processing in FalukantService: Improved handling of null character references and added default values for character properties. This enhances data integrity and prevents potential runtime errors when processing director information. --- backend/services/falukantService.js | 44 ++++++++++++++--------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/backend/services/falukantService.js b/backend/services/falukantService.js index b22069b..4166b35 100644 --- a/backend/services/falukantService.js +++ b/backend/services/falukantService.js @@ -2567,28 +2567,28 @@ class FalukantService extends BaseService { ], attributes: ['id', 'satisfaction', 'income'], }); - return directors.map(director => { - // 1) avgKnowledge berechnen - const knowledges = director.character.knowledges || []; - const avgKnowledge = knowledges.length - ? knowledges.reduce((sum, k) => sum + k.knowledge, 0) / knowledges.length - : 0; - - // 2) wishedIncome anhand der JS-Formel - const wishedIncome = Math.round( - director.character.nobleTitle.level * Math.pow(1.231, avgKnowledge / 1.5) - ); - - return { - id: director.id, - satisfaction: director.satisfaction, - character: director.character, - age: calcAge(director.character.birthdate), - income: director.income, - region: director.character.region.name, - wishedIncome, - }; - }); + return directors + .filter(director => director.character != null) + .map(director => { + const char = director.character; + const knowledges = char.knowledges || []; + const avgKnowledge = knowledges.length + ? knowledges.reduce((sum, k) => sum + (k.knowledge || 0), 0) / knowledges.length + : 0; + const nobleLevel = char.nobleTitle?.level ?? 1; + const wishedIncome = Math.round( + nobleLevel * Math.pow(1.231, avgKnowledge / 1.5) + ); + return { + id: director.id, + satisfaction: director.satisfaction, + character: char, + age: calcAge(char.birthdate), + income: director.income, + region: char.region?.name ?? '', + wishedIncome, + }; + }); } async updateDirector(hashedUserId, directorId, income) {