From f04bb33651f6f8fd05f06dc74fb48e8f7514d386 Mon Sep 17 00:00:00 2001 From: "ignacio.bengoa" <ignacio.bengoa@fing.edu.uy> Date: Sat, 11 Sep 2021 17:14:27 -0300 Subject: [PATCH] ERCalculator implemented --- src/Services/ERCalculator.ts | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/Services/ERCalculator.ts diff --git a/src/Services/ERCalculator.ts b/src/Services/ERCalculator.ts new file mode 100644 index 0000000..684fb08 --- /dev/null +++ b/src/Services/ERCalculator.ts @@ -0,0 +1,41 @@ +import AgeGroup from '../Models/AgeGroup'; +import EnergeticRequirement from '../Models/EnergeticRequirement'; +import CalculatorResponseDTO from '../DTOs/CalculatorResponseDTO'; + +const calculateER = (groupParameters: Map<number[], AgeGroup>): CalculatorResponseDTO => { + let totalOfPeople = 0; + let totalRequirement = 0; + + const requirements = new Map(); + + groupParameters.forEach((group: AgeGroup, parameters: number[]) => { + totalOfPeople = +group.cantidad; + + const requirement = parameters[0] + + (parameters[1] * group.pesoMediano) + + (parameters[2] * group.pesoMediano); + + const groupRequirement: EnergeticRequirement = { + requerimientoEnergeticoPerCapita: requirement, + requerimientoEnergeticoTotal: requirement * group.cantidad, + }; + + totalRequirement = +groupRequirement.requerimientoEnergeticoTotal; + + requirements.set(group, groupRequirement); + }); + + const totalER: EnergeticRequirement = { + requerimientoEnergeticoPerCapita: totalRequirement / totalOfPeople, + requerimientoEnergeticoTotal: totalOfPeople, + }; + + const result: CalculatorResponseDTO = { + requerimientosPorGrupo: requirements, + requerimientoTotal: totalER, + }; + + return result; +}; + +export default { calculateER }; -- GitLab