Feature: Order tracking with IDs, 30% deposit calculation, PayID support, and post-submission instructions
This commit is contained in:
1 parent
108184ba68
commit
fd1d7c0025
12 files changed
+621
-116
No files matched your search
@@ -25,16 +25,21 @@ model StockItem {
|
||||
}
|
||||
|
||||
model Order {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
phone String
|
||||
totalWeight Float
|
||||
estimatedTotal Float
|
||||
timestamp DateTime @default(now())
|
||||
items String // Storing items as a JSON string for simplicity with SQLite
|
||||
id Int @id @default(autoincrement())
|
||||
orderNumber String?
|
||||
name String
|
||||
phone String
|
||||
items String
|
||||
totalWeight Float
|
||||
estimatedTotal Float
|
||||
status String @default("Pending")
|
||||
timestamp DateTime @default(now())
|
||||
}
|
||||
|
||||
model Config {
|
||||
id Int @id @default(autoincrement())
|
||||
adminCode String @default("1234")
|
||||
id Int @id @default(1)
|
||||
adminCode String @default("1234")
|
||||
finalDepositDate String?
|
||||
cookDay String?
|
||||
payIdInfo String? @default("Your PayID Here")
|
||||
}
|
||||
+34
-4
@@ -36,13 +36,21 @@ app.get('/api/data', async (req, res) => {
|
||||
app.post('/api/orders', async (req, res) => {
|
||||
try {
|
||||
const { name, phone, items, totalWeight, estimatedTotal } = req.body;
|
||||
|
||||
// Generate simple order number
|
||||
const lastOrder = await prisma.order.findFirst({ orderBy: { id: 'desc' } });
|
||||
const nextId = (lastOrder?.id || 0) + 1;
|
||||
const orderNumber = `#${nextId + 1000}`;
|
||||
|
||||
const order = await prisma.order.create({
|
||||
data: {
|
||||
orderNumber,
|
||||
name,
|
||||
phone,
|
||||
totalWeight,
|
||||
estimatedTotal,
|
||||
items: JSON.stringify(items)
|
||||
items: JSON.stringify(items),
|
||||
status: 'Pending'
|
||||
}
|
||||
});
|
||||
res.json(order);
|
||||
@@ -52,6 +60,22 @@ app.post('/api/orders', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// Update Order Status
|
||||
app.patch('/api/orders/:id/status', async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const { status } = req.body;
|
||||
const order = await prisma.order.update({
|
||||
where: { id: parseInt(id) },
|
||||
data: { status }
|
||||
});
|
||||
res.json(order);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Failed to update order status' });
|
||||
}
|
||||
});
|
||||
|
||||
// Delete an order
|
||||
app.delete('/api/orders/:id', async (req, res) => {
|
||||
try {
|
||||
@@ -113,15 +137,21 @@ app.delete('/api/stock/:id', async (req, res) => {
|
||||
// Update Config
|
||||
app.post('/api/config', async (req, res) => {
|
||||
try {
|
||||
const { adminCode } = req.body;
|
||||
const { adminCode, finalDepositDate, cookDay, payIdInfo } = req.body;
|
||||
const config = await prisma.config.findFirst();
|
||||
const data: any = {};
|
||||
if (adminCode !== undefined) data.adminCode = adminCode;
|
||||
if (finalDepositDate !== undefined) data.finalDepositDate = finalDepositDate;
|
||||
if (cookDay !== undefined) data.cookDay = cookDay;
|
||||
if (payIdInfo !== undefined) data.payIdInfo = payIdInfo;
|
||||
|
||||
if (config) {
|
||||
await prisma.config.update({
|
||||
where: { id: config.id },
|
||||
data: { adminCode }
|
||||
data
|
||||
});
|
||||
} else {
|
||||
await prisma.config.create({ data: { adminCode } });
|
||||
await prisma.config.create({ data });
|
||||
}
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
|
||||
Reference in new issue
Block a user