feat(FalukantService): add numeric value conversion for money checks
All checks were successful
Deploy to production / deploy (push) Successful in 2m12s

- 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.
This commit is contained in:
Torsten Schulz (local)
2026-05-05 08:03:05 +02:00
parent 3365f1dd2a
commit 511146da74

View File

@@ -6105,8 +6105,30 @@ class FalukantService extends BaseService {
return {}; 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) { 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) { async checkBranchesRequirement(hashedUserId, requirement) {