Solución

@eduahg·hace 3dTypeScript
solution.tsTypeScript
const ECONOMY_FLIGHT_RATE = 0.10;
const ECONOMY_RATE_LUGGAGE_FEE = 30;
const BUSINESS_FLIGHT_RATE = 0.25;
const FIRST_FLIGHT_RATE = 0.45;
const MIN_DISTANCE = 100;
const GROUP_DISCOUNT = 5;
const GROUP_DISCOUNT_RATE = 0.10;

type FlightType = "economy" | "business" | "first";

const FLIGHT_RATES: Record<FlightType, number> = {
  economy: ECONOMY_FLIGHT_RATE,
  business: BUSINESS_FLIGHT_RATE,
  first: FIRST_FLIGHT_RATE,
};

export function calculateFlightTicketPrice(passengers: number,type: FlightType,distance: number,hasEquipment: boolean): number {
  let TOTAL_PRICE = 0;

  if (passengers <= 0) return -1;

  if (distance < MIN_DISTANCE) return -1;

  TOTAL_PRICE = calculateFlightPrice(
    type,
    distance,
    hasEquipment,
    passengers
  );

  return Math.round(TOTAL_PRICE * 100) / 100;
}

function calculateFlightPrice(flightType: FlightType,distance: number,equipment: boolean,passengers: number) {
  let price = distance * FLIGHT_RATES[flightType] * passengers;

  if (flightType === "economy" && equipment) {
    price += ECONOMY_RATE_LUGGAGE_FEE * passengers;
  }

  if (passengers >= GROUP_DISCOUNT) {
  price *= (1 - GROUP_DISCOUNT_RATE);
  }

  return price;
}
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.