Solución
solution.tsTypeScript
interface OrderItem {
price: number;
quantity: number;
}
let descuentoPorMembresia: Record<string, number> = {
"gold": 20,
"silver": 10
}
export function calculateOrderDiscount(itemsPedido: OrderItem[], tipoMembresia: string): number {
// Sumar el total de todos los items del pedido
let total = itemsPedido.reduce((count, current) => count + (current.price * current.quantity), 0);
// Verificar si el pedido cumple el mínimo requerido
const CANTIDAD_MINIMA = 10;
if (total < CANTIDAD_MINIMA) return -1;
// Aplicar descuento según el tipo de membresía y el monto total
let descuento = calcularDescuento(total, tipoMembresia);
return total - descuento;
}
function calcularDescuento(total: number, membresia: string): number {
descuentoPorMembresia[membresia] ??= 0;
let porcentajeMembresia = descuentoPorMembresia[membresia];
let porcentajeDescuento = (total < 100) && (porcentajeMembresia !== 0)
? porcentajeMembresia - (porcentajeMembresia / 2)
: porcentajeMembresia;
return total * (porcentajeDescuento / 100);
}0respuestas