Skip to content
Snippets Groups Projects
ERCalculator.ts 1.25 KiB
Newer Older
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 ** 2));

    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 };