53 lines
1.3 KiB
TypeScript
53 lines
1.3 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";
|
|
|
|
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: [ Product ] }
|
|
]
|
|
})
|
|
.then(orders => {
|
|
res.status(200).send(orders)
|
|
})
|
|
})
|
|
|
|
// Place a new order
|
|
order.post("/", (req: Request, res: Response) => {
|
|
let totalPrice = 0
|
|
|
|
Order.create(req.body)
|
|
.then(order => {
|
|
|
|
for (let orderItem of req.body.orderItem) {
|
|
OrderItem.create({
|
|
"orderId": order.id,
|
|
"quantity": orderItem.quantity,
|
|
"productId": orderItem.productId
|
|
})
|
|
|
|
Product.findOne({
|
|
raw: true,
|
|
where: { id: orderItem.productId }
|
|
})
|
|
.then(product => {
|
|
totalPrice += product.price * orderItem.quantity
|
|
|
|
Order.update({
|
|
totalPrice: totalPrice
|
|
}, {
|
|
where: { id: order.id },
|
|
})
|
|
})
|
|
}
|
|
})
|
|
|
|
// Created
|
|
res.status(201).send()
|
|
}) |