From 511146da742d9c866bae8cbc7f58b69b6f102489 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Tue, 5 May 2026 08:03:05 +0200 Subject: [PATCH] feat(FalukantService): add numeric value conversion for money checks - Introduced a new private method `_toNumericValue` to handle conversion of various input types to numeric values, ensuring proper validation of user money and requirement values. - Updated `checkMoneyRequirement` method to utilize the new conversion logic, improving accuracy in money requirement checks by handling edge cases for non-finite values. --- backend/services/falukantService.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/backend/services/falukantService.js b/backend/services/falukantService.js index 75c73fa..2c8825f 100644 --- a/backend/services/falukantService.js +++ b/backend/services/falukantService.js @@ -6105,8 +6105,30 @@ class FalukantService extends BaseService { return {}; } + _toNumericValue(raw) { + if (typeof raw === 'number') { + return Number.isFinite(raw) ? raw : NaN; + } + if (typeof raw === 'string') { + const normalized = raw + .trim() + .replace(/\s/g, '') + .replace(/\.(?=\d{3}(?:\D|$))/g, '') + .replace(',', '.'); + const parsed = Number(normalized); + return Number.isFinite(parsed) ? parsed : NaN; + } + const parsed = Number(raw); + return Number.isFinite(parsed) ? parsed : NaN; + } + async checkMoneyRequirement(user, requirement) { - return user.money >= requirement.requirementValue; + const availableMoney = this._toNumericValue(user?.money); + const requiredMoney = this._toNumericValue(requirement?.requirementValue); + if (!Number.isFinite(availableMoney) || !Number.isFinite(requiredMoney)) { + return false; + } + return availableMoney >= requiredMoney; } async checkBranchesRequirement(hashedUserId, requirement) {