ghostfolio/apps/api/src/app/portfolio/rules.service.ts
Thomas Kaul 308d3b64b1
Feature/Remove empty constructors (#3958)
* Remove empty constructors
2024-10-19 18:54:49 +02:00

40 lines
1004 B
TypeScript

import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface';
import { Rule } from '@ghostfolio/api/models/rule';
import {
PortfolioReportRule,
UserSettings
} from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common';
@Injectable()
export class RulesService {
public async evaluate<T extends RuleSettings>(
aRules: Rule<T>[],
aUserSettings: UserSettings
): Promise<PortfolioReportRule[]> {
return aRules.map((rule) => {
const settings = rule.getSettings(aUserSettings);
if (settings?.isActive) {
const { evaluation, value } = rule.evaluate(settings);
return {
evaluation,
value,
configuration: rule.getConfiguration(),
isActive: true,
key: rule.getKey(),
name: rule.getName()
};
} else {
return {
isActive: false,
key: rule.getKey(),
name: rule.getName()
};
}
});
}
}