Files
2026-05-20 17:42:01 -06:00

38 lines
1002 B
JavaScript

const fs = require("fs");
function shipOrder(filePath, orderId, destinationCountry) {
const raw = fs.readFileSync(filePath, "utf8");
const state = JSON.parse(raw);
const order = state.orders.find((item) => item.id === orderId);
if (!order) {
throw new Error("Order not found");
}
if (order.status === "shipped") {
return { message: "Already shipped", trackingNumber: order.trackingNumber };
}
let shippingCost = 5;
if (destinationCountry !== "US") {
shippingCost = shippingCost + 15;
}
if (order.weightKg > 10) {
shippingCost = shippingCost + 20;
}
order.status = "shipped";
order.shippingCost = shippingCost;
order.trackingNumber = "trk-" + Math.floor(Math.random() * 100000);
order.shippedAt = new Date().toISOString();
fs.writeFileSync(filePath, JSON.stringify(state, null, 2));
console.log("Order shipped", orderId);
return { message: "Shipped", trackingNumber: order.trackingNumber, shippingCost };
}
module.exports = { shipOrder };