Solución

@alexiis-dev·29/5/2026TypeScript
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
Respuestas

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.