Solución
solution.tsTypeScript
const DEFAULT = -1
const LEVEL_MID = 'mid'
const LEVEL_SENIOR = 'senior'
const MID_PORC = 0.10
const SENIOR_PROC = 0.20
const HIGHT_SALARY = 5000
const LOW_SALARY = 2000
const HIGHT_SALARY_PORC = 0.25
const MID_SALARY_PORC = 0.15
const LOW_SALARY_PORC = 0.08
function getBonus(category: string, salary: number) {
if(category === LEVEL_SENIOR) return salary * SENIOR_PROC
if(category === LEVEL_MID) return salary * MID_PORC
return 0
}
function getTaxes(salary: number){
if(salary > HIGHT_SALARY) return salary * HIGHT_SALARY_PORC
if(salary > LOW_SALARY) return salary * MID_SALARY_PORC
return salary * LOW_SALARY_PORC
}
export function calculateMonthlySalary(hours: number, rate: number, category: string): number {
// Verificar si las horas trabajadas y tarifas son válidas
if (hours <= 0) return DEFAULT;
if (rate <= 0) return DEFAULT;
// Calcular salario bruto multiplicando horas por tarifa
let grossSalary = hours * rate;
// Calcular bonificacion
let bonus = getBonus(category, grossSalary)
// Sumar salario bruto más bonificación
let netSalary = grossSalary + bonus;
let tax = getTaxes(netSalary)
// Restar impuestos y redondear a dos decimales
return +(netSalary - tax).toFixed(2);
}0respuestas