Initial commit
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import { defaultMenu, defaultSettings } from "./defaults.js";
|
||||
import { MenuItem } from "./models/MenuItem.js";
|
||||
import { Order } from "./models/Order.js";
|
||||
|
||||
export function getSettings() {
|
||||
return defaultSettings;
|
||||
}
|
||||
|
||||
export async function ensureSeedMenu() {
|
||||
const count = await MenuItem.countDocuments();
|
||||
if (count === 0) {
|
||||
await MenuItem.insertMany(defaultMenu);
|
||||
}
|
||||
}
|
||||
|
||||
export async function resetMenuToDefaults() {
|
||||
await MenuItem.deleteMany({});
|
||||
await MenuItem.insertMany(defaultMenu);
|
||||
return MenuItem.find().sort({ category: 1, name: 1 });
|
||||
}
|
||||
|
||||
export async function nextOrderNumber() {
|
||||
const latest = await Order.findOne().sort({ number: -1 }).lean();
|
||||
return (latest?.number ?? 1000) + 1;
|
||||
}
|
||||
|
||||
export function computeOrderTotal(lines, settings = defaultSettings) {
|
||||
return lines.reduce((sum, line) => {
|
||||
const sizeDelta = settings.sizeOptions.find((option) => option.name === line.size)?.delta ?? 0;
|
||||
const toppings = line.toppings.reduce((toppingSum, toppingName) => {
|
||||
return toppingSum + (settings.toppings.find((item) => item.name === toppingName)?.price ?? 0);
|
||||
}, 0);
|
||||
return sum + line.basePrice + sizeDelta + toppings;
|
||||
}, 0);
|
||||
}
|
||||
Reference in New Issue
Block a user