Sindbad~EG File Manager
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", "firstname", "business_name"],
order: [["firstname", "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(),
business_name: item.business_name,
status: adminIdsInSubTbl.has(item.auctioneer_id),
opportunity_status: adminIdsInUsers.has(item.auctioneer_id),
}));
return res.json({ status: 200, message: "Success", data: data });
} catch (error) {
return res.status(500).json({
status: 500,
message: "Internal Server Error",
error: error.message,
});
}
};
const getPortfolioSubscriptions = async (req, res) => {
try {
const { userId } = req.body;
const resultTableAdmin = await db.tblUserSubAuctioneer.findAll({
attributes: ["subscription_id", "user_id"],
where: { user_id: userId },
include: [
{
model: db.tblAuctioneer,
attributes: ["auctioneer_id", "firstname", "business_name"],
},
],
});
return res.json({
status: 200,
message: "Success",
data: resultTableAdmin,
});
} catch (error) {
return res.status(500).json({
status: 500,
message: "Internal Server Error",
error: 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);
return res.json({ status: 200, message: "Success", data: [result] });
} catch (error) {
return res.status(500).json({
status: 500,
message: "Internal Server Error",
error: 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,
]);
return res.json({ status: 200, message: "Success" });
} catch (error) {
return res.status(500).json({
status: 500,
message: "Internal Server Error",
error: 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.status(500).json({
status: 500,
message: "Internal Server Error",
error: error.message,
});
}
}
module.exports = {
subscribeAuctioneer,
getAllSubscribedAuctioneerList,
subscribeAuctioneerWebHook,
unSubscribeAuctioneer,
getPortfolioSubscriptions,
};
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists