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); }