Solución
solution.tsTypeScript
// TODO: refactoriza este código — extrae constantes, mejora nombres y crea funciones auxiliares
const ECONOMY_PRICE = 35
const STANDART_PRICE = 55
const PREMIUM_PRICE = 90
const NO_RANGE_PRICE = -1
const UNIVERSAL_RATE = 1
const FOURTEEN_DAYS = 14
const FOURTEEN_DISCOUNT = 0.2
const SEVEN_DAYS = 7
const SEVEN_DISCOUNT = 0.1
const INSURANCE_RATE = 15
function getMembership(membership: string){
switch(membership){
case 'economy': return ECONOMY_PRICE
case 'standard': return STANDART_PRICE
case 'premium': return PREMIUM_PRICE
default: return NO_RANGE_PRICE
}
}
export function calculateCarRentalCost(days: number, membership: string, insurance: boolean): number {
// Verificar que los días sean válidos
if (days <= 0) return NO_RANGE_PRICE
if (getMembership(membership) === NO_RANGE_PRICE) return NO_RANGE_PRICE
let membershipRate = getMembership(membership)
let sub = membershipRate * days;
// Aplicar descuento según los días rentados
if (days >= FOURTEEN_DAYS) {
sub = sub * (UNIVERSAL_RATE - FOURTEEN_DISCOUNT);
} else if (days >= SEVEN_DAYS) {
sub = sub * (UNIVERSAL_RATE - SEVEN_DISCOUNT);
}
// Agregar costo del seguro si aplica
if (insurance) sub = sub + INSURANCE_RATE * days;
return sub;
}
0respuestas