Sindbad~EG File Manager
const { Op, INTEGER } = require("sequelize");
const db = require("../models");
/* const getAllSubscribedAuctioneerList = async (req, res) => {
try {
const { userId, weekId } = req.body;
let resultTableAdmin = await db.tblAuctioneer.findAll({
attributes: ["auctioneer_id", "first_name", "per_unit_fee"],
order: [["first_name", "ASC"]],
});
let resultTableSubscription = await db.tblUserSubAuctioneer.findAll({
where: {
user_id: userId,
},
});
const adminIdsInSubTbl = new Set(
resultTableSubscription.map((item) => item.auctioneer_id)
);
let resultTableAdminUsers = await db.tblOpportunity.findAll({
where: {
week_id: weekId,
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: adminIdsInSubTbl.has(item.auctioneer_id),
opportunity_status: adminIdsInUsers.has(item.auctioneer_id),
// status: true,
}));
return res.json({ status: 200, data: data });
} catch (error) {
return res.json(error.message);
}
}; */
//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", "per_unit_fee"],
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