diff --git a/src/Controllers/CalculatorController.ts b/src/Controllers/CalculatorController.ts index a82f3b65d534b0297827e45ac77782a704904250..4e15f0fcc59b024c5301d9eb931fe86c3d3841dc 100644 --- a/src/Controllers/CalculatorController.ts +++ b/src/Controllers/CalculatorController.ts @@ -1,7 +1,7 @@ import { Handler, Request, Response, Router, } from 'express'; -import AgeGroup from '../Models/AgeGroup'; +import AgeGroup from '../DTOs/AgeGroupDTO'; import CalculatorService from '../Services/CalculatorService'; import CalculatorResponse from '../DTOs/CalculatorResponseDTO'; diff --git a/src/Models/AgeGroup.ts b/src/DTOs/AgeGroupDTO.ts similarity index 57% rename from src/Models/AgeGroup.ts rename to src/DTOs/AgeGroupDTO.ts index 2ef8fa8eae882c4066ac1be51ec7e0b15281b001..5acf22c1c9045c5d83bc02d16868e07b8d2fe4ef 100644 --- a/src/Models/AgeGroup.ts +++ b/src/DTOs/AgeGroupDTO.ts @@ -1,11 +1,11 @@ -import AgeBracket from '../Enum/AgeBracket' -import Sex from '../Enum/Sex' +import AgeBracket from '../Enum/AgeBracket'; +import Sex from '../Enum/Sex'; type AgeGroup = { edad: AgeBracket; sexo: Sex; pesoMediano: number; cantidad: number; -} +}; export default AgeGroup; diff --git a/src/DTOs/CalculatorResponseDTO.ts b/src/DTOs/CalculatorResponseDTO.ts index c0c792d99a4626d415668a3af7148394622666cb..520aea676b788c33ca5d05f516cfef015e986b31 100644 --- a/src/DTOs/CalculatorResponseDTO.ts +++ b/src/DTOs/CalculatorResponseDTO.ts @@ -1,10 +1,9 @@ -import exp from 'constants'; -import AgeGroup from '../Models/AgeGroup'; -import EnergeticRequirement from '../Models/EnergeticRequirement'; +import AgeGroup from './AgeGroupDTO'; +import EnergeticRequirement from './EnergeticRequirementDTO'; -type CalculatorResponseDTO = { +type CalculatorResponse = { requerimientosPorGrupo: Map<AgeGroup, EnergeticRequirement>; requerimientoTotal: EnergeticRequirement; }; -export default CalculatorResponseDTO; +export default CalculatorResponse; diff --git a/src/Models/EnergeticRequirement.ts b/src/DTOs/EnergeticRequirementDTO.ts similarity index 94% rename from src/Models/EnergeticRequirement.ts rename to src/DTOs/EnergeticRequirementDTO.ts index b1005f859be9890cc99032fd1d839c8b14e0bb26..fbf14e4087a9658680aafb154cce46ba5347b795 100644 --- a/src/Models/EnergeticRequirement.ts +++ b/src/DTOs/EnergeticRequirementDTO.ts @@ -1,6 +1,6 @@ type EnergeticRequirement = { requerimientoEnergeticoPerCapita: number; requerimientoEnergeticoTotal: number; -} +}; export default EnergeticRequirement; diff --git a/src/Services/CalculatorService.ts b/src/Services/CalculatorService.ts index 9a2ecae62d934f475a4b42ae6fd461f6410b225c..36c4909581cf81a6f8430f304a91fbba107e5941 100644 --- a/src/Services/CalculatorService.ts +++ b/src/Services/CalculatorService.ts @@ -1 +1,15 @@ -import AgeGroup from "../Models/AgeGroup"; \ No newline at end of file +import ERCalculator from './ERCalculator'; +import AgeGroup from '../DTOs/AgeGroupDTO'; +import CalculatorResponse from '../DTOs/CalculatorResponseDTO'; + +const calculateEnergeticRequirement = (ageGroups: AgeGroup[]): CalculatorResponse => { + const parametros = new Map<number[], AgeGroup>(); + const params: number[] = [0, 0, 0]; + ageGroups.forEach((group: AgeGroup) => { + parametros.set(params, group); + }); + const res: CalculatorResponse = ERCalculator.calculateER(parametros); + return res; +}; + +export default { calculateEnergeticRequirement }; diff --git a/src/Services/ERCalculator.ts b/src/Services/ERCalculator.ts index 684fb08a1213b96b6467c22c6a439112d5ec77ce..fa7c927ed62723246e175c4cc52215d5880da4bc 100644 --- a/src/Services/ERCalculator.ts +++ b/src/Services/ERCalculator.ts @@ -1,41 +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 }; +import AgeGroup from '../DTOs/AgeGroupDTO'; +import EnergeticRequirement from '../DTOs/EnergeticRequirementDTO'; +import CalculatorResponse from '../DTOs/CalculatorResponseDTO'; + +const calculateER = (groupParameters: Map<number[], AgeGroup>): CalculatorResponse => { + 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: CalculatorResponse = { + requerimientosPorGrupo: requirements, + requerimientoTotal: totalER, + }; + + return result; +}; + +export default { calculateER };