Initial commit
This commit is contained in:
commit
24f0a28a3c
25 changed files with 3190 additions and 0 deletions
71
routes/userspace.js
Normal file
71
routes/userspace.js
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue