const errorHandling = require('../../utils/errorHandling') const { requiredFields, generalError } = require('../../config/errors') const formatNumberResult = require('../secondary/formatNumberResult') /** * @description Convertis des °C en °F et l'inverse aussi. * @param {Number} degree - Nombre de degrès * @param {String} unit - Unité du nombre (°C ou °F) après conversion * @returns {Object} false si arguments non valides et sinon un objet contenant la string et le nombre résultat * @examples convertTemperature(23, '°F') → { result: 73.4, resultHTML: "73.4 °F" } */ function convertTemperature (degree, unit) { let temperatureValue = 0 if (unit === '°C') { temperatureValue = ((degree - 32) * 5) / 9 } else if (unit === '°F') { temperatureValue = (degree * 9) / 5 + 32 } else { return false } return { result: temperatureValue, resultHTML: `

${formatNumberResult(degree)} ${ unit === '°C' ? '°F' : '°C' } = ${formatNumberResult(temperatureValue)} ${unit}

` } } /* OUTPUTS */ module.exports = ({ res, next }, argsObject) => { let { degree, unitToConvert } = argsObject // S'il n'y a pas les champs obligatoire if (!(degree && unitToConvert)) { return errorHandling(next, requiredFields) } // Si ce n'est pas un nombre degree = parseFloat(degree) if (isNaN(degree)) { return errorHandling(next, { message: 'Veuillez rentré un nombre valide.', statusCode: 400 }) } const result = convertTemperature(degree, unitToConvert) if (!result) { return errorHandling(next, generalError) } return res.status(200).json(result) }