Solución
solution.tsTypeScript
function applyPassengersDiscound(passengers: number, ticketPrice: number): number {
const MIN_PASSENGERS = 5, DISCOUNT_FACTOR = 0.90;
return passengers < MIN_PASSENGERS ? ticketPrice : ticketPrice * DISCOUNT_FACTOR;
}
function applyFlightClassCost(flightClass: string, ticketPrice: number): number {
const ECONOMY_RATE = 0.10, BUSSINESS_RATE = 0.25, FIRST_RATE = 0.45;
const CLASS_RATE = { economy: ECONOMY_RATE, business: BUSSINESS_RATE, first: FIRST_RATE}
return ticketPrice * CLASS_RATE[flightClass];
}
function applyLuggageCost(passengers: number, flightClass: string, hasLuggage: boolean, ticketPrice: number): number {
const LUGGAGE_FEE = 30;
return flightClass === "economy" && hasLuggage ? ticketPrice + passengers * LUGGAGE_FEE : ticketPrice;
}
function canCalculateTicketPrice(passengers: number, distance: number): boolean {
const MIN_PASSENGERS = 1, MIN_DISTANCE = 100;
return passengers >= MIN_PASSENGERS && distance >= MIN_DISTANCE;
}
export function calculateFlightTicketPrice(passengers: number, flightClass: string, distance: number, hasLuggage: boolean): number {
const TOTAL_PERCENT = 100, NO_RESULT = -1;
if (!canCalculateTicketPrice(passengers, distance)) return NO_RESULT;
let ticketPrice = applyFlightClassCost(flightClass, distance * passengers);
ticketPrice = applyLuggageCost(passengers, flightClass, hasLuggage, ticketPrice);
ticketPrice = applyPassengersDiscound(passengers, ticketPrice);
return Math.round(ticketPrice * TOTAL_PERCENT) / TOTAL_PERCENT;
}0respuestas