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;