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-api-updates/src/controllers/cafe/cafe.controller.js
import * as cafeService from "../../services/cafe/cafe.services.js";
import { messages } from "../../config/response.messages.js";
import * as Helper from "../../helper/index.js";
import * as Email from "../../helper/email.js";
import moment from "moment/moment.js";
import bcrypt from "bcrypt";
import { getPreSignedUrl } from "../../helper/presigned.url.js";
import Stripe from "stripe";
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
// cafe list according to filter

/**
 * 0 - All
 * 1 - Favorite cafe list
 * 2 - Vegan cafe list
 * 3 - Bubble Tea cafe list
 * 4 - Dessert cafe list
 * 5 - sandwich cafe list
 */
export async function cafeListing(req, res) {
  try {
    let cafeList = [];
    let featuredCafeList = [];
    req.body.user_id = req.user_id;
    if (req.body.filter_flag == 0) {
      cafeList = await cafeService.getAllCafeList(req.body);
      featuredCafeList = await cafeService.getFeatureCafeList(req.body);
    } else if (req.body.filter_flag == 1) {
      cafeList = await cafeService.getFavoritesCafeList(req.body);
      featuredCafeList = {};
    } else {
      cafeList = await cafeService.getAllCafeList(req.body);
      featuredCafeList = {};
    }
    return res.status(200).send({
      status: 200,
      message: messages.cafe_found,
      data: {
        all_cafe: cafeList,
        featured_list: featuredCafeList,
      },
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    console.log("error", error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function searchCafe(req, res) {
  try {
    req.body.user_id = req.user_id;
    req.body.filter_flag = 0;
    let cafeList = await cafeService.getAllCafeList(req.body);
    return res.status(200).send({
      status: 200,
      message: messages.cafe_found,
      data: cafeList,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    console.log("error", error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function searchCafeName(req, res) {
  try {
    req.body.user_id = req.user_id;
    let cafeList = await cafeService.getSearchedCafe(req.body);
    return res.status(200).send({
      status: 200,
      message: messages.cafe_found,
      data: cafeList,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    console.log("error", error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function searchCafeByName(req, res) {
  try {
    req.body.user_id = req.user_id;
    let cafeList = await cafeService.getCafeByName(req.body);
    return res.status(200).send({
      status: 200,
      message: messages.cafe_found,
      data: cafeList,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function favoriteCafe(req, res) {
  try {
    let updateData = {
      is_favorite: req.body.is_favorite,
      updated_at: moment().unix(),
    };
    let is_favorite = await cafeService.findFavoriteCafeById(
      req.body.cafe_id,
      req.user_id
    );
    if (is_favorite.length > 0) {
      if (req.body.is_favorite == 1) {
        await cafeService.favoriteCafeUpdate(
          req.user_id,
          req.body.cafe_id,
          updateData
        );
      } else {
        await cafeService.deleteFavoriteCafe(req.user_id, req.body.cafe_id);
      }
    } else {
      await cafeService.favoriteCafeAdd({
        user_id: req.user_id,
        cafe_id: req.body.cafe_id,
        is_favorite: req.body.is_favorite,
        created_at: moment().unix(),
      });
    }
    return res.status(202).send({
      status: 202,
      message: messages.user_found,
      data: updateData,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function requestCafe(req, res) {
  try {
    await Email.sendCafeRequestMail(req.body);
    return res.status(202).send({
      status: 202,
      message: messages.request_created,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error.message,
    });
  }
}

export async function requestCafeOld(req, res) {
  try {
    req.body.approved = 1;
    var length = 8;
    let charset =
      "@#$&*0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ@#$&*0123456789abcdefghijklmnopqrstuvwxyz";
    let password = "";
    for (var i = 0, n = charset.length; i < length; ++i) {
      password += charset.charAt(Math.floor(Math.random() * n));
    }
    req.body.password = await bcrypt.hash(
      password,
      parseInt(process.env.BCRYPT_SALT_ROUND) || 10
    );
    let is_cafe = await cafeService.findRequestCafe(req.body);
    if (!is_cafe) {
      await cafeService.requestCafe(req.body);
      await Email.sendCafeRequestMail(
        req.body.email,
        req.body.cafe_name,
        password
      );
    }
    return res.status(202).send({
      status: 202,
      message: messages.request_created,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error.message,
    });
  }
}

export async function cafeFilterList(req, res) {
  try {
    let filterData = await cafeService.cafeFilterList(req.query);
    // for (const data of filterData.docs) {
    //   data.image = await getPreSignedUrl(data.image)
    // }
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: filterData,
    });
  } catch (error) {
    Helper.writeErrorLog(req, error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

// get cafe category list

export async function getCafeItemCatgory(req, res) {
  try {
    let result = await cafeService.getCafeItemCatgory(req.query);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      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.message,
    });
  }
}

// get cafe item list with pagination by category

export async function getCafeItemList(req, res) {
  try {
    let result = await cafeService.getCafeItemList(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,
    });
  }
}

// cafe details

export async function getCafeDetails(req, res) {
  try {
    req.body.user_id = req.user_id;
    let result = await cafeService.getCafeDetails(req.body.cafe_id, req.body);
    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,
    });
  }
}

// cafe item details
export async function getCafeItemDetails(req, res) {
  try {
    let result = await cafeService.getCafeItemDetails(
      parseInt(req.body.item_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,
    });
  }
}

// cafe suggested item list

export async function cafeItemSuggestedList(req, res) {
  try {
    let result = await cafeService.cafeItemSuggestedList(req.body);
    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,
    });
  }
}

export async function cafeGoToOrders(req, res) {
  try {
    let result = await cafeService.cafeGoToOrders(req.user_id);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: result,
    });
  } catch (error) {
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function cafeGoToOrder(req, res) {
  try {
    let result = await cafeService.cafeGoToOrder(
      req.user_id,
      req.params.cafe_id
    );
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: result,
    });
  } catch (error) {
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function createCafeGoToOrder(req, res) {
  try {
    req.body.loggedInUser = req.user_id;
    let result = await cafeService.createGoToOrder(req.body);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: result,
    });
  } catch (error) {
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function updateCafeGoToOrder(req, res) {
  try {
    let result = await cafeService.updateGoToOrder(req.body);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: result,
    });
  } catch (error) {
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

export async function removeCafeGoToOrder(req, res) {
  try {
    req.body.loggedInUser = req.user_id;
    let result = await cafeService.removeGoToOrder(req.body);
    return res.status(200).send({
      status: 200,
      message: messages.data_found,
      data: result,
    });
  } catch (error) {
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }
}

/**
 * Process payment and transfer to connected account
 */
export async function processPayment(req, res) {
  try {
    const { paymentIntentId } = req.body;

    // 1. Confirm the existing payment intent
    const paymentIntent = await stripe.paymentIntents.confirm(paymentIntentId);

    // 2. Return the result
    return res.json({
      success: true,
      paymentIntent: paymentIntent,
    });
  } catch (error) {
    console.error("Payment processing error:", error);
    return res.status(400).json({
      success: false,
      error: error.message,
    });
  }
}