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-nodeserver-hotfixes/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 {
    req.body.loggedInUser = req.userData;
    let cafeRunExist = await OrderService.checkSameGroupCafeRunEndTime(
      req.body
    );
    if (cafeRunExist == null) {
      let coffeeRun = await OrderService.saveGroupCoffeeRun(
        req.body,
        req.userData
      );
      return res.status(201).send({
        status: 201,
        message: messages.group_coffee_run_saved_success,
        coffeeRun: coffeeRun.dataValues,
      });
    } else if (
      cafeRunExist.dataValues.order_id == null &&
      cafeRunExist.dataValues.type == 1
    ) {
      return res.status(400).send({
        status: 400,
        message: "Order not placed yet!",
        coffeeRun: cafeRunExist.dataValues,
      });
    } else {
      return res.status(203).send({
        status: 203,
        message: messages.group_cafe_run_already_added,
        coffeeRun: null,
      });
    }
  } catch (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,
    });
  }
}

// Non Universal Card List API
export async function nonuniversalCardList(req, res) {
  try {
    let result = await OrderService.nonuniversalCardList(
      req.user_id,
      req.body.cafe_id
    );

    let getNonUniversalStamp = await OrderService.getnonUniversalStamp(
      req.body.cafe_id
    );
    return res.status(200).send({
      status: 200,
      message: messages.loyalty_detail,
      data: {
        count: result,
        universal: {
          stamp_no: getNonUniversalStamp.stamp_no,
          offer_text: getNonUniversalStamp.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 totalOrder = await OrderService.getcouponOrder(
      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;
      }
    }
    const totalOrders = totalOrder / nonUniversalStampsDetails.stamp_no;
    if (Math.floor(totalOrders) > 0 && totalOrders == Math.floor(totalOrders)) {
      responseArray.push(nonUniversalStampsDetails);
    }
    const totalUniversalOrder =
      totalUniversalOrders / universalStampsDetails.stamp_no;
    //if ( Math.floor(totalUniversalOrder) > 0 && totalUniversalOrder == Math.floor(totalUniversalOrder)) {
    //responseArray.push(universalStampsDetails);
    //}
    //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,
    });
  }
}

//get group coffee run orders
export async function getGroupCoffeeRunOrders(req, res) {
  try {
    const groupCoffeeRunId = req.group_coffee_run_id;
    const groupId = req.body.group_id;
    let result = await OrderService.getGroupCoffeeRunOrders(
      groupCoffeeRunId,
      groupId,
      req.userData.id
    );
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      result: result,
    });
  } catch (error) {
    console.log(error);
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

//Mark order Collected
export async function markOrderCollected(req, res) {
  try {
    const groupCoffeeRunId = req.body.group_coffee_run_id;
    const type = req.body.type;
    let result = await OrderService.markOrderCollected(groupCoffeeRunId, type);
    return res.status(200).send({
      status: 200,
      message: messages.order_has_been_collected,
      result: result,
    });
  } catch (error) {
    console.log(error);
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function getPastGroupCoffeeRunOrders(req, res) {
  try {
    const userId = req.user_id;
    let result = await OrderService.getPastCoffeeRunOrders(userId);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      result: result,
    });
  } catch (error) {
    console.log(error);
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function orderDetails(req, res) {
  try {
    let result = await OrderService.getOrderDetails(req.params.id);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      result: result,
    });
  } catch (error) {
    console.log(error);
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function updateOrderDetails(req, res) {
  try {
    let result = await OrderService.updateOrderDetails(
      req.params.id,
      req.body.transaction_id
    );
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      result: result,
    });
  } catch (error) {
    console.log(error);
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

//Categories coupon can be applied
export async function getcategoriesForCoupon(req, res) {
  try {
    if (!req.body.cafe_id) {
      throw new Error("Cafe ID is required");
    }
    let result = await OrderService.getcategoriesForCoupon(req.body.cafe_id);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      result: result,
    });
  } catch (error) {
    console.log(error);
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}