balance_wheel/routes/userspace.js
2023-03-26 14:40:47 +07:00

71 lines
1.9 KiB
JavaScript

import { DBAccess } from '../db/index.js';
import { Router } from 'express';
const router = Router();
router.use(function (req, res, next) {
console.dir(req.session);
if (req.session.login) {
next();
} else {
throw new Error("Необходима авторизация");
}
});
router.get('/', function (req, res, next) {
res.render("userspace/index", {
title: "Голосование", user: {
login: req.session.login,
full_name: req.session.full_name,
vgroup_id: parseInt(req.session.vgroup_id),
}
});
});
router.post("/vote", async function (req, res, next) {
const bData = req.body || [];
try {
const userVotedTihsMonth = await DBAccess.didUserBotedThisMonth(req.session.userid);
if (userVotedTihsMonth) {
throw new Error("Вы уже голосовали в этом месяце");
}
if (bData.length === 0) {
throw new Error("Нет данных для голосования");
} else {
const data = (req.body || []).reduce((acc, item) => {
acc[item.dbmap] = item.value;
return acc;
}, {});
data.voter_id = parseInt(req.session.userid);
const vote = DBAccess.createVote(data);
if (vote) {
res.json({ status: "ok" });
} else {
throw new Error("Ошибка голосования");
}
}
} catch (e) {
res.json({ status: "error", message: e.message });
}
});
router.get("/votes", async function (req, res, next) {
const userVotes = await DBAccess.getVotesByVoterId(parseInt(req.session.userid));
res.render("userspace/votes", {
title: "История",
user: {
login: req.session.login,
full_name: req.session.full_name,
vgroup_id: parseInt(req.session.vgroup_id),
},
votes: userVotes.map(v => {
return {
...v,
date: new Date(v.vote_date).toLocaleString("ru-RU"),
}
})
});
});
export default router;