diff --git a/src/Config/DBConfig.ts b/src/Config/DBConfig.ts index ff2e0b593a861d778215770dc47942b5fbae4221..ddd9d64e490508284986414c5e5181364fb75260 100644 --- a/src/Config/DBConfig.ts +++ b/src/Config/DBConfig.ts @@ -1,7 +1,7 @@ export const DBConfig = { HOST: 'localhost', USER: 'root', - PASSWORD: 'rootroot', // antes decia 'password' + PASSWORD: 'password', // antes decia 'password' DB: 'parameter_database', dialect: 'mysql', }; diff --git a/src/Controllers/ParameterController.ts b/src/Controllers/ParameterController.ts index 72c9fb4f96454c8296b7141ad799c5cd0247ec1b..1cf49463913181c8b20ac7f878f9da12056fb7d6 100644 --- a/src/Controllers/ParameterController.ts +++ b/src/Controllers/ParameterController.ts @@ -8,29 +8,72 @@ import ParameterService from '../Services/ParameterService'; const router = Router(); const getParameters: Handler = async (req: Request, res: Response) => { - // try { - // const parameters = await ParameterService.getParameters(); - // return res.status(200).send(parameters); - // } catch (error) { - // const e = error as Error; - // logger.info(e.message); - // return res.status(400).json({ error: e.message }); - // } + try { + const parameters = await ParameterService.getParameters(); + return res.status(200).send(parameters); + } catch (error) { + const e = error as Error; + logger.info(e.message); + return res.status(400).json({ error: e.message }); + } }; -const getParametersOfType: Handler = async (req: Request, res: Response) => { - // const { paramType } = req.body; - // try { - // const parameters = await ParameterService.getParametersOfType(paramType as ParameterType); - // return res.status(200).send(parameters); - // } catch (error) { - // const e = error as Error; - // logger.info(e.message); - // return res.status(400).json({ error: e.message }); - // } +const getDefaultWeights: Handler = async (req: Request, res: Response) => { + try { + const weights = await ParameterService.getDefaultWeights(); + return res.status(200).send(weights); + } catch (error) { + const e = error as Error; + logger.info(e.message); + return res.status(400).json({ error: e.message }); + } +}; + +const getDefaultExtraData: Handler = async (req: Request, res: Response) => { + try { + const weights = await ParameterService.getDefaultExtraData(); + return res.status(200).send(weights); + } catch (error) { + const e = error as Error; + logger.info(e.message); + return res.status(400).json({ error: e.message }); + } +}; + +const updateParameterValue: Handler = async (req: Request, res: Response) => { + const { parameter } = req.body; + try { + switch (parameter.parameterType) { + case ParameterType.DefaultWeight: + await ParameterService.updateDefaultWeight( + parameter.ageRange, parameter.sex, parameter.value, + ); + break; + case ParameterType.MinorPAL: + case ParameterType.AdultPAL: + case ParameterType.Maternity: + await ParameterService.updateExtraData(parameter.id, parameter.value); + break; + case ParameterType.TEE: + case ParameterType.BMR: + await ParameterService.updateEquationConstant( + parameter.ageRange, parameter.sex, parameter.order, parameter.value, + ); + break; + default: + break; + } + return res.status(200).send(); + } catch (error) { + const e = error as Error; + logger.info(e.message); + return res.status(400).json({ error: e.message }); + } }; router.post('/', getParameters); -router.post('/type/', getParametersOfType); +router.post('/weights/', getDefaultWeights); +router.post('/extraData/', getDefaultExtraData); +router.put('/parameterUpdate/', updateParameterValue); export default router; diff --git a/src/DTOs/DefaultWeightDTO.ts b/src/DTOs/DefaultWeightDTO.ts index 44ddff68cacf9b4e4a8ec670235a316216c80283..3d316450d19acb5dfc66de798b6ee2cc3432b9c4 100644 --- a/src/DTOs/DefaultWeightDTO.ts +++ b/src/DTOs/DefaultWeightDTO.ts @@ -1,10 +1,12 @@ import AgeBracket from '../Enum/AgeBracket'; +import ParameterType from '../Enum/ParameterType'; import Sex from '../Enum/Sex'; type DefaultWeightDTO = { value: number; ageRange: AgeBracket; sex: Sex; + parameterType: ParameterType; }; export default DefaultWeightDTO; diff --git a/src/DTOs/ParameterWrapperDTO.ts b/src/DTOs/ParameterWrapperDTO.ts new file mode 100644 index 0000000000000000000000000000000000000000..b43fc4746d6c9f66720c66ab8fdb3066b11816f1 --- /dev/null +++ b/src/DTOs/ParameterWrapperDTO.ts @@ -0,0 +1,11 @@ +import DefaultExtraDataDTO from './DefaultExtraDataDTO'; +import DefaultWeightDTO from './DefaultWeightDTO'; +import EquationConstantDTO from './EquationConstantDTO'; + +type ParameterWrapperDTO = { + defaultExtraData: DefaultExtraDataDTO[]; + defaultWeights: DefaultWeightDTO[]; + equationConstants: EquationConstantDTO[]; +}; + +export default ParameterWrapperDTO; diff --git a/src/Enum/ParameterType.ts b/src/Enum/ParameterType.ts index 5d8d96ae9f72dfddde392a5ff4e99d63fc4674e3..c26deb19002650e14957e360d72f2f814b380468 100644 --- a/src/Enum/ParameterType.ts +++ b/src/Enum/ParameterType.ts @@ -4,7 +4,8 @@ enum ParameterType { Maternity = 'Embarazo y lactancia', TEE = 'GET', BMR = 'TMB', - GrowthEnergy = 'Energia para crecimiento' + GrowthEnergy = 'Energia para crecimiento', + DefaultWeight = 'Peso por defecto', } export default ParameterType; diff --git a/src/Loaders/CSVParser.ts b/src/Loaders/CSVParser.ts index a10e1b04ea5d9b64438c3ede7078f277d0a34604..01ffdd85f077ebd872157001cc08739ec02362bf 100644 --- a/src/Loaders/CSVParser.ts +++ b/src/Loaders/CSVParser.ts @@ -14,6 +14,7 @@ function csvToDefaultWeight(csv: string): DefaultWeightDTO[] { ageRange: fields[0] as AgeBracket, value: parseFloat(fields[1]), sex: fields[2] as Sex, + parameterType: fields[3] as ParameterType, }); }); parameters.shift(); diff --git a/src/Loaders/DefaultWeightLoader.csv b/src/Loaders/DefaultWeightLoader.csv index 5c7412ec4b3bc4abca68d76a1c8a5a3a5a767b87..5ee79dea1e4ef0e91b43bff9a5ea3e42fe46796c 100644 --- a/src/Loaders/DefaultWeightLoader.csv +++ b/src/Loaders/DefaultWeightLoader.csv @@ -1,65 +1,65 @@ age,value,sex -0 meses,3.3,Masculino -1 mes,4.5,Masculino -2 meses,5.6,Masculino -3 meses,6.4,Masculino -4 meses,7,Masculino -5 meses,7.5,Masculino -6 meses,7.9,Masculino -7 meses,8.3,Masculino -8 meses,8.6,Masculino -9 meses,8.9,Masculino -10 meses,9.2,Masculino -11 mes,9.4,Masculino -1 año,10.9,Masculino -2 años,13.3,Masculino -3 años,15.3,Masculino -4 años,17.3,Masculino -5 años,19.5,Masculino -6 años,21.8,Masculino -7 años,24.2,Masculino -8 años,26.8,Masculino -9 años,29.6,Masculino -10 años,32.9,Masculino -11 año,36.7,Masculino -12 años,41.6,Masculino -13 años,47.4,Masculino -14 años,53.7,Masculino -15 años,58.8,Masculino -16 años,63.1,Masculino -17 años,66.1,Masculino -18-29 años,67.4,Masculino -30-59 años,66.6,Masculino -60+ años,64.3,Masculino -0 meses,3.2,Femenino -1 mes,4.2,Femenino -2 meses,5.1,Femenino -3 meses,5.8,Femenino -4 meses,6.4,Femenino -5 meses,6.9,Femenino -6 meses,7.3,Femenino -7 meses,7.6,Femenino -8 meses,7.9,Femenino -9 meses,8.2,Femenino -10 meses,8.5,Femenino -11 mes,8.7,Femenino -1 año,10.2,Femenino -2 años,12.7,Femenino -3 años,15,Femenino -4 años,17.2,Femenino -5 años,19.1,Femenino -6 años,21.3,Femenino -7 años,23.7,Femenino -8 años,26.7,Femenino -9 años,29.9,Femenino -10 años,34,Femenino -11 año,38.7,Femenino -12 años,43.6,Femenino -13 años,48.1,Femenino -14 años,51.5,Femenino -15 años,53.9,Femenino -16 años,55.3,Femenino -17 años,56.3,Femenino -18-29 años,57.7,Femenino -30-59 años,56.3,Femenino -60+ años,54.2,Femenino +0 meses,3.3,Masculino,Peso por defecto +1 mes,4.5,Masculino,Peso por defecto +2 meses,5.6,Masculino,Peso por defecto +3 meses,6.4,Masculino,Peso por defecto +4 meses,7,Masculino,Peso por defecto +5 meses,7.5,Masculino,Peso por defecto +6 meses,7.9,Masculino,Peso por defecto +7 meses,8.3,Masculino,Peso por defecto +8 meses,8.6,Masculino,Peso por defecto +9 meses,8.9,Masculino,Peso por defecto +10 meses,9.2,Masculino,Peso por defecto +11 mes,9.4,Masculino,Peso por defecto +1 año,10.9,Masculino,Peso por defecto +2 años,13.3,Masculino,Peso por defecto +3 años,15.3,Masculino,Peso por defecto +4 años,17.3,Masculino,Peso por defecto +5 años,19.5,Masculino,Peso por defecto +6 años,21.8,Masculino,Peso por defecto +7 años,24.2,Masculino,Peso por defecto +8 años,26.8,Masculino,Peso por defecto +9 años,29.6,Masculino,Peso por defecto +10 años,32.9,Masculino,Peso por defecto +11 año,36.7,Masculino,Peso por defecto +12 años,41.6,Masculino,Peso por defecto +13 años,47.4,Masculino,Peso por defecto +14 años,53.7,Masculino,Peso por defecto +15 años,58.8,Masculino,Peso por defecto +16 años,63.1,Masculino,Peso por defecto +17 años,66.1,Masculino,Peso por defecto +18-29 años,67.4,Masculino,Peso por defecto +30-59 años,66.6,Masculino,Peso por defecto +60+ años,64.3,Masculino,Peso por defecto +0 meses,3.2,Femenino,Peso por defecto +1 mes,4.2,Femenino,Peso por defecto +2 meses,5.1,Femenino,Peso por defecto +3 meses,5.8,Femenino,Peso por defecto +4 meses,6.4,Femenino,Peso por defecto +5 meses,6.9,Femenino,Peso por defecto +6 meses,7.3,Femenino,Peso por defecto +7 meses,7.6,Femenino,Peso por defecto +8 meses,7.9,Femenino,Peso por defecto +9 meses,8.2,Femenino,Peso por defecto +10 meses,8.5,Femenino,Peso por defecto +11 mes,8.7,Femenino,Peso por defecto +1 año,10.2,Femenino,Peso por defecto +2 años,12.7,Femenino,Peso por defecto +3 años,15,Femenino,Peso por defecto +4 años,17.2,Femenino,Peso por defecto +5 años,19.1,Femenino,Peso por defecto +6 años,21.3,Femenino,Peso por defecto +7 años,23.7,Femenino,Peso por defecto +8 años,26.7,Femenino,Peso por defecto +9 años,29.9,Femenino,Peso por defecto +10 años,34,Femenino,Peso por defecto +11 año,38.7,Femenino,Peso por defecto +12 años,43.6,Femenino,Peso por defecto +13 años,48.1,Femenino,Peso por defecto +14 años,51.5,Femenino,Peso por defecto +15 años,53.9,Femenino,Peso por defecto +16 años,55.3,Femenino,Peso por defecto +17 años,56.3,Femenino,Peso por defecto +18-29 años,57.7,Femenino,Peso por defecto +30-59 años,56.3,Femenino,Peso por defecto +60+ años,54.2,Femenino,Peso por defecto diff --git a/src/Mappers/ParameterMapper.ts b/src/Mappers/ParameterMapper.ts index 618aba27684426acdaa76ea6edeb0f8132bc7925..bc4be6e102e8b2e7f1b714d4c79e1b547bee98c8 100644 --- a/src/Mappers/ParameterMapper.ts +++ b/src/Mappers/ParameterMapper.ts @@ -1,6 +1,7 @@ import DefaultExtraDataDTO from '../DTOs/DefaultExtraDataDTO'; import DefaultWeightDTO from '../DTOs/DefaultWeightDTO'; import EquationConstantDTO from '../DTOs/EquationConstantDTO'; +import ParameterType from '../Enum/ParameterType'; import DefaultExtraData from '../Models/DefaultExtraData'; import DefaultWeight from '../Models/DefaultWeight'; import EquationConstant from '../Models/EquationConstant'; @@ -33,6 +34,7 @@ function defaultWeightToDTO(parameter: DefaultWeight): DefaultWeightDTO { value: parameter.value, ageRange: parameter.ageRange, sex: parameter.sex, + parameterType: ParameterType.DefaultWeight, }; return res; } diff --git a/src/Services/ParameterService.ts b/src/Services/ParameterService.ts index 73942adbecc44cf1a83b9728f412c2c0a605e560..ae6d89532c47932effc0fdb81a1401ea9dcb9218 100644 --- a/src/Services/ParameterService.ts +++ b/src/Services/ParameterService.ts @@ -6,6 +6,9 @@ import Sex from '../Enum/Sex'; import ParameterMapper from '../Mappers/ParameterMapper'; import DefaultExtraData from '../Models/DefaultExtraData'; import EquationConstant from '../Models/EquationConstant'; +import DefaultWeight from '../Models/DefaultWeight'; +import DefaultWeightDTO from '../DTOs/DefaultWeightDTO'; +import ParameterWrapperDTO from '../DTOs/ParameterWrapperDTO'; const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<number[]> => { const res: number[] = []; @@ -159,17 +162,104 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb return res; }; -// const getParameters = async (): Promise<ParameterDTO[]> => { -// const res: ParameterDTO[] = []; -// await Parameter.findAll().then((parameters: Parameter[]) => { -// parameters.forEach((param: Parameter) => { -// res.push(ParameterMapper.parameterToData(param)); -// }); -// }); -// return res; -// }; +const getDefaultWeights = async (): Promise<DefaultWeightDTO[]> => { + const res: DefaultWeightDTO[] = []; + await DefaultWeight.findAll().then((parameters: DefaultWeight[]) => { + parameters.forEach((param: DefaultWeight) => { + res.push(ParameterMapper.defaultWeightToDTO(param)); + }); + }); + return res; +}; -export default { getEquationValues /* , getParameters */ }; +const getDefaultExtraData = async (): Promise<DefaultExtraDataDTO[]> => { + const res: DefaultExtraDataDTO[] = []; + await DefaultExtraData.findAll({ + where: { + order: 0, + }, + }).then((parameters: DefaultExtraData[]) => { + parameters.forEach((param: DefaultExtraData) => { + res.push(ParameterMapper.defaultExtraDataToDTO(param)); + }); + }); + return res; +}; + +const getParameters = async (): Promise<ParameterWrapperDTO> => { + const extraData: DefaultExtraDataDTO[] = []; + await DefaultExtraData.findAll().then((parameters: DefaultExtraData[]) => { + parameters.forEach((param: DefaultExtraData) => { + extraData.push(ParameterMapper.defaultExtraDataToDTO(param)); + }); + }); + const equationConstant: EquationConstantDTO[] = []; + await EquationConstant.findAll().then((parameters: EquationConstant[]) => { + parameters.forEach((param: EquationConstant) => { + equationConstant.push(ParameterMapper.equationConstantToDTO(param)); + }); + }); + const defaultWeight: DefaultWeightDTO[] = await getDefaultWeights(); + const res: ParameterWrapperDTO = { + equationConstants: equationConstant, + defaultWeights: defaultWeight, + defaultExtraData: extraData, + }; + return res; +}; + +const updateEquationConstant = async (age: AgeBracket, s: Sex, ord: number, val: number): +Promise<void> => { + EquationConstant.update( + { value: val }, + { + where: { + ageRange: age, + sex: s, + order: ord, + }, + }, + ).catch((err) => { + throw err; + }); +}; + +const updateDefaultWeight = async (age: AgeBracket, s: Sex, val: number): Promise<void> => { + DefaultWeight.update( + { value: val }, + { + where: { + ageRange: age, + sex: s, + }, + }, + ).catch((err) => { + throw err; + }); +}; + +const updateExtraData = async (identifier: string, val: number): Promise<void> => { + DefaultExtraData.update( + { value: val }, + { + where: { + id: identifier, + }, + }, + ).catch((err) => { + throw err; + }); +}; + +export default { + getEquationValues, + getDefaultWeights, + getDefaultExtraData, + getParameters, + updateEquationConstant, + updateDefaultWeight, + updateExtraData, +}; // const getEquationValues = (ageBracket: AgeBracket, sex: Sex): number[] => { // let res: number[] = [];