Files
eventmaster/software/backend/routes/order.routes.ts
2024-09-24 13:12:44 +02:00

63 lines
1.5 KiB
TypeScript

import { Router, Request, Response } from "express";
import { Order } from "../models/order.model";
import { Product } from "../models/product.model";
import { OrderItem } from "../models/orderItem.model";
import { Brand } from "../models/brand.model";
import { Category } from "../models/category.model";
export const order = Router()
// Get all orders of one account by it's user id
order.get("/:id", (req: Request, res: Response) => {
Order.findAll({
where: { accountId: req.params.id },
include: [
{
model: OrderItem,
include: [
{
model: Product,
include: [ Brand, Category ],
attributes: {
exclude: [
"categoryId",
"brandId"
]
}
},
]
}
]
})
.then(orders => {
res.status(200).json(orders)
})
})
// Place a new order
order.post("/", (req: Request, res: Response) => {
let totalPrice = 0
Order.create(req.body)
.then(async order => {
for (let orderItem of req.body.orderItems) {
OrderItem.create({
"orderId": order.id,
"quantity": orderItem.quantity,
"orderPrice": orderItem.orderPrice,
"productId": orderItem.productId
})
totalPrice += orderItem.quantity * orderItem.orderPrice
Order.update({
totalPrice: totalPrice
}, {
where: { id: order.id }
})
}
// Created
res.status(201).json(order)
})
})