HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: /var/www/javago_test/src/controllers/order/order.controller.js
import * as OrderService from "../../services/order/order.services.js";
import { messages } from "../../config/response.messages.js";
import * as Helper from "../../helper/index.js";
import moment from "moment";

//save group coffee run data
export async function saveGroupCoffeeRun(req, res) {
  try {
    let check = await OrderService.checkSameGroupCafeRunEndTime(req.body);
    if (check) {
      console.log("check", check);
      return res.status(203).send({
        status: 203,
        message: messages.group_cafe_run_already_added,
      });
    }
    await OrderService.saveGroupCoffeeRun(req.body, req.userData);
    return res.status(201).send({
      status: 201,
      message: messages.group_coffee_run_saved_success,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

//get group coffee run data
export async function getGroupCoffeeRun(req, res) {
  try {
    let result = await OrderService.getGroupCoffeeRun(req.query);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      result: result,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// place order
export async function placeOrder(req, res) {
  try {
    let result = await OrderService.placeOrder(req.body);
    return res.status(result.status).send({
      status: result.status,
      message: result.message,
      result: result.result,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// save order
export async function saveOrder(req, res) {
  try {
    req.body.loggedInUser = req.userData.id;
    let result = await OrderService.saveOrder(req.body);
    return res.status(201).send({
      status: 201,
      message: messages.order_save_success,
      result: result,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// get order list
export async function getOrder(req, res) {
  try {
    let result = await OrderService.getOrder(req.userData.id, req.query);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      result: result,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// get Individual order list
export async function getIndividualOrder(req, res) {
  try {
    let result = await OrderService.getIndividualOrder(req.user_id, req.query.order_id, req.query.cafe_id)
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      result: result
    })
  } catch (error) {
    Helper.writeErrorLog(req, error)
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error
    })
  }
}

// change order status
export async function changeOrderStatus(req, res) {
  try {
    let result = await OrderService.changeOrderStatus(req.params.id, req.body);
    if (req.body.flag == 2) {
      let totalUniversalOrders = await OrderService.getUniversalOrders(req.user_id);
      let totalUniversalStamps = await OrderService.getUniversalStamp();
      if (totalUniversalOrders) {
        if (totalUniversalOrders >= totalUniversalStamps.stamp_no) {
          await OrderService.updateUniversalCoupon(req.user_id, req.params.id, totalUniversalStamps.stamp_no, totalUniversalStamps.stamp_expires_in)
        }
      }

      let totalOrder = await OrderService.getAllCafeOrders(req.user_id, result.data.cafe_id);
      let totalStamp = await OrderService.getStampsByCafe(result.data.cafe_id);
      if (totalStamp) {
        if (totalOrder >= totalStamp.stamp_no) {
          await OrderService.updateCouponByCafeId(req.user_id, req.params.id, result.data.cafe_id, totalStamp.stamp_no, totalStamp.stamp_expires_in)
        }
      }
      return res.status(result.status).send({
        status: result.status,
        message: result.message,
      });
    } else {
      return res.status(result.status).send({
        status: result.status,
        message: result.message,
      });
    }
  } catch (error) {
    console.log("error", error);
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// Loyalty List
export async function loyaltyList(req, res) {
  try {
    let result = await OrderService.loyaltyList(req.user_id, req.query);
    return res.status(200).send({
      status: 200,
      message: messages.loyalty_detail,
      data: result,
    });
  } catch (error) {
    console.log(error);
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// Universal Card List API
export async function universalCardList(req, res) {
  try {
    let result = await OrderService.universalCardList(req.user_id);
    let getUniversalStamp = await OrderService.getUniversalStamp()
    return res.status(200).send({
      status: 200,
      message: messages.loyalty_detail,
      data: {
        count: result,
        universal: {
          stamp_no: getUniversalStamp.stamp_no,
          offer_text: getUniversalStamp.offer_text
        }
      },
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// check redeem code
export async function checkRedeemCode(req, res) {
  try {
    let responseArray = []
    req.query.userId = req.userData.id
    let nonUniversalStampsDetails = await OrderService.getStampsByCafe(req.query.cafe_id);
    let totalOrder = await OrderService.getAllCafeOrders(req.user_id, req.query.cafe_id);
    let universalStampsDetails = await OrderService.getUniversalStamp();
    let totalUniversalOrders = await OrderService.getUniversalOrders(req.user_id);
    let lastExpireDate = await OrderService.getLastExpireDateUniversal(req.user_id);
    let cafeExpireDate = await OrderService.getLastExpireCafeDate(req.user_id, req.query.cafe_id)
    let currentDate = moment().format('YYYY-MM-DD')
    universalStampsDetails.dataValues.is_expired = 0;
    nonUniversalStampsDetails.dataValues.is_expired = 0;
    if (lastExpireDate) {
      if (currentDate > moment.unix(lastExpireDate.universal_coupon_expired_time).format("YYYY-MM-DD")) {
        universalStampsDetails.dataValues.is_expired = 1;
      }
    }
    if (cafeExpireDate) {
      if (currentDate > moment.unix(cafeExpireDate.cafe_coupon_expired_time).format("YYYY-MM-DD")) {
        nonUniversalStampsDetails.dataValues.is_expired = 1;
      }
    }
    if (totalOrder >= nonUniversalStampsDetails.stamp_no) {
      responseArray.push(nonUniversalStampsDetails)
    }
    if (totalUniversalOrders >= universalStampsDetails.stamp_no) {
      responseArray.push(universalStampsDetails)
    }
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: responseArray
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// apply coupon

export async function applyCoupon(req, res) {
  try {
    req.query.userId = req.userData.id
    let result = await OrderService.applyRedeemCode(req.query.id);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: result,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// order list by group

export async function orderListByGroup(req, res) {
  try {
    req.query.userId = req.userData.id
    let result = await OrderService.orderListByGroup(req.query);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: result,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}