Sindbad~EG File Manager

Current Path : /home/infinitibizsol/.trash/controllers.2/
Upload File :
Current File : /home/infinitibizsol/.trash/controllers.2/userSubscriptionController.js

const { Op, INTEGER } = require("sequelize");
const db = require("../models");

//Optimized Code
const getAllSubscribedAuctioneerList = async (req, res) => {
//   try {
//     const { userId, weekId } = req.body;

//     const [resultTableAdmin, resultTableSubscription, resultTableAdminUsers] =
//       await Promise.all([
//         db.tblAuctioneer.findAll({
//           attributes: ["auctioneer_id", "first_name","business_name"],
//           order: [["first_name", "ASC"]],
//         }),
//         db.tblUserSubAuctioneer.findAll({
//           where: {
//             user_id: userId,
//           },
//         }),
//         db.tblOpportunity.findAll({
//           where: {
//             week_id: weekId,
//             user_id: userId,
//           },
//         }),
//       ]);

//     const adminIdsInSubTbl = new Set(
//       resultTableSubscription.map((item) => item.auctioneer_id)
//     );
//     const adminIdsInUsers = new Set(
//       resultTableAdminUsers.map((item) => item.auctioneer_id)
//     );

//     const data = resultTableAdmin.map((item) => ({
//       ...item.get(),
//       status: adminIdsInSubTbl.has(item.auctioneer_id),
//       opportunity_status: adminIdsInUsers.has(item.auctioneer_id),
//     }));

//     return res.json({ status: 200, data: data });
//   } catch (error) {
//     return res.json(error.message);
//   }
};

const subscribeAuctioneer = async (req, res) => {
  try {
    // Set start_date as the current date
    const start_date = new Date();

    // Set expiration_date as one month from the current date
    const expirationDate = new Date();
    expirationDate.setMonth(expirationDate.getMonth() + 1);
    const expiration_date = expirationDate;

    const data = {
      user_id: req.body.user_id,
      auctioneer_id: req.body.auctioneer_id,
      start_date: start_date,
      expiration_date: expiration_date,
    };

    let result = await db.tblUserSubAuctioneer.create(data);

    /* let resultTableAdmin = await db.tblAuctioneer.findAll();

    let resultTableAdminUsers = await db.tblUserSubAuctioneer.findAll({
      where: {
        user_id: userId,
      },
    });
    const adminIdsInUsers = new Set(
      resultTableAdminUsers.map((item) => item.auctioneer_id)
    );

    resultTableAdmin = resultTableAdmin.map((item) => item.get());

    const data = resultTableAdmin.map((item) => ({
      ...item,
      status: adminIdsInUsers.has(item.auctioneer_id),

      // status: true,
    })); */

    return res.json({ status: 200, data: [result] });
  } catch (error) {
    return res.json(error.message);
  }
};

const unSubscribeAuctioneer = async (req, res) => {
  try {
    const { user_id, auctioneer_id } = req.body;

    let destroyOpportunity = db.tblOpportunity.destroy({
      where: {
        [Op.and]: [
          {
            user_id: user_id,
          },
          { auctioneer_id: auctioneer_id },
        ],
      },
    });
    let destroyUserSubAuctioneer = db.tblUserSubAuctioneer.destroy({
      where: {
        [Op.and]: [
          {
            user_id: user_id,
          },
          { auctioneer_id: auctioneer_id },
        ],
      },
    });

    const [opportunityResult, userSubAuctioneerResult] = await Promise.all([
      destroyOpportunity,
      destroyUserSubAuctioneer,
    ]);
    console.log("Opportunity Deletion Result:", opportunityResult);
    console.log("UserSubAuctioneer Deletion Result:", userSubAuctioneerResult);

    /* let resultTableAdmin = await db.tblAuctioneer.findAll();

    let resultTableAdminUsers = await db.tblUserSubAuctioneer.findAll({
      where: {
        user_id: userId,
      },
    });
    const adminIdsInUsers = new Set(
      resultTableAdminUsers.map((item) => item.auctioneer_id)
    );

    resultTableAdmin = resultTableAdmin.map((item) => item.get());

    const data = resultTableAdmin.map((item) => ({
      ...item,
      status: adminIdsInUsers.has(item.auctioneer_id),

      // status: true,
    })); */

    return res.json({ status: 200, message: "Success" });
  } catch (error) {
    return res.json(error.message);
  }
};

async function subscribeAuctioneerWebHook(user_id, auctioneer_id) {
  try {
    const dataObject = { user_id: user_id, auctioneer_id: auctioneer_id };
    let result = await db.tblUserSubAuctioneer.create(dataObject);
    return [result];
  } catch (error) {
    return res.json(error.message);
  }
}

module.exports = {
  subscribeAuctioneer,
  getAllSubscribedAuctioneerList,
  subscribeAuctioneerWebHook,
  unSubscribeAuctioneer,
};

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists