ChiamakaObitube/AutoMart

View on GitHub
server/controllers/V1/order.js

Summary

Maintainability
A
0 mins
Test Coverage
import OrderModel from '../../models/V1/ordermodel';


class orderController {
  static postOrder(req, res) {
    if (!req.body.orderId && !req.body.buyer && !req.body.status
    && req.body.price && !req.body.priceOffered) {
      return res.status(400).json({
        status: 400,
        error: 'input all fields',
      });
    }
    const newPurchaseOrder = OrderModel.postNewOrder(req.body);
    return res.status(201).json({
      status: 201,
      message: 'Purchase order created successfully.',
      data: newPurchaseOrder,
    });
  }

  static getAllOrders(req, res) {
    const orders = OrderModel.getOrders();
    if (orders.length === 0 || !orders) {
      return res.status(400).json({
        status: 400,
        message: 'you have not made any order yet',
      });
    }
    return res.status(200).json({
      status: 200,
      message: 'all orders',
      data: orders,
    });
  }

  static getOrder(req, res) {
    const order = OrderModel.getSpecificOrder(Number(req.params.id));
    if (!order) {
      return res.status(404).json({
        status: 404,
        message: 'purchase order does not exist',
      });
    }
    return res.status(200).json({
      status: 200,
      message: 'purchase order found',
      data: order,
    });
  }

  static updatePurchasePriceOrder(req, res) {
    const { id } = req.params;

    const order = OrderModel.getSpecificOrder(Number(id));

    if (!order) {
      res.status(404).json({
        status: 404,
        message: 'purchase order does not exist',
      });
    }
    if (!order.priceOffered) {
      res.status(400).json({
        status: 400,
        message: 'price offered is required',
      });
    }

    if (order.status !== 'pending') {
      res.status(400).json({
        status: 400,
        message: 'you cannot update purchase order price offered',
      });
    }

    order.priceOffered = req.body.priceOffered;

    return res.status(200).json({
      status: 200,
      message: 'order price updated successfully',
      data: order,
    });
  }

  static deleteOrder(req, res) {
    const { id } = req.params;
    const order = OrderModel.getSpecificOrder(Number(id));
    if (!order) {
      return res.status(404).json({
        status: 404,
        message: 'order does not exist',
      });
    }
    const deletedOrder = OrderModel.deleteOnePurchaseOrder(Number(id));
    return res.status(202).json({
      status: 202,
      message: 'Purchase order deleted successfully',
      data: deletedOrder,
    });
  }
}


export default orderController;