|
| 1 | +import { Request, Response } from 'express'; |
| 2 | +import axios from 'axios'; |
| 3 | +import { Order } from '../models/Order'; |
| 4 | +import { BadRequestError, CurrentUserRequest, Events } from '@chronosrx/common'; |
| 5 | +import { Inventory } from '../models/Inventory'; |
| 6 | + |
| 7 | +export const createOrder = async (req: CurrentUserRequest, res: Response) => { |
| 8 | + //deconstruct req.body |
| 9 | + const buyerId = req.currentUser; |
| 10 | + const { itemId, amount, totalPrice, sellerId } = req.body; |
| 11 | + //create Order document in the databse |
| 12 | + const newOrder = Inventory.build({}); |
| 13 | + await newOrder.save(); |
| 14 | + //send created order to event bus |
| 15 | + await axios.post('http://localhost:3005/', { |
| 16 | + event: { |
| 17 | + type: Events.ORDER_CREATED, |
| 18 | + payload: newOrder, |
| 19 | + }, |
| 20 | + }); |
| 21 | + res.status(201).send(newOrder); |
| 22 | +}; |
| 23 | + |
| 24 | +export const getOrder = async (req: Request, res: Response) => { |
| 25 | + // check if order already exists |
| 26 | + const { buyerId } = req.body; |
| 27 | + const exsitingOrder = await Order.findOne({ buyerId }); |
| 28 | + if (!exsitingOrder) { |
| 29 | + throw new BadRequestError('Order with that id does not exists'); |
| 30 | + } |
| 31 | + //check inventory itemId, amount |
| 32 | + res.status(200).send(exsitingOrder); |
| 33 | +}; |
| 34 | + |
| 35 | +export const getSale = async (req: Request, res: Response) => { |
| 36 | + const { sellerId } = req.body; |
| 37 | + const sales = await Order.find({ sellerId }); |
| 38 | + if (!sales) { |
| 39 | + throw new BadRequestError('Sales with that sellerId does not exist'); |
| 40 | + } |
| 41 | + res.status(200).send(sales); |
| 42 | +}; |
| 43 | + |
| 44 | +export const deleteOrder = async (req: Request, res: Response) => { |
| 45 | + const { id } = req.body; |
| 46 | + const deletedOrder = await Order.findOneAndDelete({ id }); |
| 47 | + if (!deletedOrder) { |
| 48 | + throw new BadRequestError(`Could not find that order by id to delete`); |
| 49 | + } |
| 50 | + res.status(200).send(deletedOrder); |
| 51 | +}; |
0 commit comments