Solución
solution.tsTypeScript
interface OrderItem {
price: number;
quantity: number;
}
const Membership: Record<string, number> = {
GOLD: 0.1,
SILVER: 0.05,
};
const MIN_ORDER_QUANTITY = 10;
const LARGE_ORDER_QUANTITY = 100;
function getDiscount(membership: string, isLargeOrder: boolean): number {
const memberDiscount = Membership[membership.toUpperCase()]
// Aplicar descuento según el tipo de membresía y el monto total
if (memberDiscount != undefined) {
return isLargeOrder ? memberDiscount * 2 : memberDiscount;
}
return 0;
}
export function calculateOrderDiscount(items: OrderItem[], membership: string): number {
let total = 0;
// Sumar el total de todos los items del pedido
for (const item of items) {
total += item.price * item.quantity;
}
// Verificar si el pedido cumple el mínimo requerido
if (total < MIN_ORDER_QUANTITY) return -1;
const isLargeOrder = total >= LARGE_ORDER_QUANTITY;
let discount = getDiscount(membership, isLargeOrder);
return total - (total * discount);
}0respuestas