Files
node_task_1a/controllers/admin/Dashboard.js
T

114 lines
4.8 KiB
JavaScript
Raw Normal View History

2022-04-12 08:57:07 -04:00
const SessionService = require("../../services/SessionService");
const app = require("express").Router();
const db = require("../../models");
const role = 1;
app.get("/admin/letters/main", SessionService.verifySessionMiddleware(role, "admin"), async function (req, res, next) {
const { order: orderId } = req.query;
// const orderId = 2;
const order = await db.order.getByPK(orderId);
const firstName = JSON.parse(order.customer).first_name;
res.render("admin/Letters/Main_Letter", {
firstName,
get_page_name: () => "Letter",
_base_url: "/admin/letters/main",
});
});
app.get("/admin/letters/profile", SessionService.verifySessionMiddleware(role, "admin"), async function (req, res, next) {
const { order: orderId } = req.query;
const order = await db.order.getByPK(orderId);
const firstName = order.customer ? JSON.parse(order.customer).first_name ?? null : null;
const profileCharcteristics = order.profile ? JSON.parse(order.profile) : [];
res.render("admin/Letters/Profile_Letter", { firstName, profileCharcteristics, get_page_name: () => "Letter", _base_url: "/admin/letters/profile" });
});
app.get("/admin/letters/formula", SessionService.verifySessionMiddleware(role, "admin"), async function (req, res, next) {
const { order: orderId } = req.query;
const order = await db.order.getByPK(orderId);
let activesNames = order.actives ? JSON.parse(order.actives) : [];
if (activesNames && activesNames.length) activesNames = activesNames.filter((active) => active !== "Base");
const { rows: actives, count } = await db.active.findAndCountAll({
where: { name: { [db.Sequelize.Op.in]: activesNames } },
});
res.render("admin/Letters/Formula_Letter", { actives, count, get_page_name: () => "Letter", _base_url: "/admin/letters/formula" });
});
app.get("/admin/letters/instructions", SessionService.verifySessionMiddleware(role, "admin"), async function (req, res, next) {
const { order: orderId } = req.query;
const order = await db.order.getByPK(orderId);
res.render("admin/Letters/Instructions_Letter", { get_page_name: () => "Letter", _base_url: "/admin/letters/instructions" });
});
app.get("/admin/letters/all", SessionService.verifySessionMiddleware(role, "admin"), async function (req, res, next) {
const { order: orderId } = req.query;
const order = await db.order.getByPK(orderId);
const firstName = JSON.parse(order.customer).first_name;
const profileCharcteristics = order.profile ? JSON.parse(order.profile) : [];
let activesNames = order.actives ? JSON.parse(order.actives) : [];
if (activesNames && activesNames.length) activesNames = activesNames.filter((active) => active !== "Base");
const { rows: actives, count } = await db.active.findAndCountAll({
where: { name: { [db.Sequelize.Op.in]: activesNames } },
});
res.render("admin/Letters/All", { firstName, profileCharcteristics, actives, count, get_page_name: () => "Letter", _base_url: "/admin/letters/all" });
});
app.get("/admin/dashboard", SessionService.verifySessionMiddleware(role, "admin"), async function (req, res, next) {
const config = await db.configuration.findOne({ where: { id: 1 }, include: [{ model: db.image, as: "image" }] });
res.render("admin/Dashboard", {
config,
get_page_name: () => "Dashboard",
_base_url: "/admin/dashboard",
});
});
app.post("/questions/order/save", SessionService.verifySessionMiddleware(role, "admin"), async function (req, res, next) {
try {
const questions = req.body;
for (const question of questions) {
if (question.id && question.order) {
await db.question.edit({ order: question.order }, question.id);
}
}
return res.json({ success: true, message: "Successfully updated orders" });
} catch (error) {
console.log(error);
return res.status(500).json({ success: false, message: "Failed to update orders" });
}
});
app.post("/main-image/update", SessionService.verifySessionMiddleware(role, "admin"), async function (req, res, next) {
try {
const { image_url } = req.body;
await db.configuration.edit({ image_id: image_url }, 1);
return res.json({ success: true, message: "Successfully updated image" });
} catch (error) {
console.log(error);
return res.status(500).json({ success: false, message: "Failed to update image" });
}
});
app.get("/configurations", async function (req, res, next) {
try {
const config = await db.configuration.findOne({ where: { id: 1 }, include: [{ model: db.image, as: "image" }] });
if (!config) {
return res.status(404).json({ success: false, message: "No configurations found" });
}
return res.json({ success: true, payload: config });
} catch (error) {
console.log(error);
return res.status(500).json({ success: false, message: "Failed to fetch configurations" });
}
});
module.exports = app;