add autocomplete input for student selection in journal filters, link creation, and links admin
This commit is contained in:
@@ -239,25 +239,25 @@ app.get('/api/links', requireAdmin, async (_, res) => {
|
||||
});
|
||||
|
||||
app.post('/api/links', requireAdmin, async (req, res) => {
|
||||
const { name, group_id, date_from, date_to } = req.body;
|
||||
const { name, group_id, student_name, date_from, date_to } = req.body;
|
||||
if (!name?.trim()) return res.status(400).json({ error: 'Название обязательно' });
|
||||
const token = crypto.randomBytes(20).toString('hex');
|
||||
const { rows } = await pool.query(
|
||||
`INSERT INTO share_links (token, name, group_id, date_from, date_to)
|
||||
VALUES ($1, $2, $3, $4, $5) RETURNING *`,
|
||||
[token, name.trim(), group_id || null, date_from || null, date_to || null]
|
||||
`INSERT INTO share_links (token, name, group_id, student_name, date_from, date_to)
|
||||
VALUES ($1, $2, $3, $4, $5, $6) RETURNING *`,
|
||||
[token, name.trim(), group_id || null, student_name || null, date_from || null, date_to || null]
|
||||
);
|
||||
res.status(201).json(normDates(rows[0]));
|
||||
});
|
||||
|
||||
app.put('/api/links/:id', requireAdmin, async (req, res) => {
|
||||
const { name, group_id, date_from, date_to } = req.body;
|
||||
const { name, group_id, student_name, date_from, date_to } = req.body;
|
||||
if (!name?.trim()) return res.status(400).json({ error: 'Название обязательно' });
|
||||
const { rows } = await pool.query(
|
||||
`UPDATE share_links SET
|
||||
name = $1, group_id = $2, date_from = $3, date_to = $4
|
||||
WHERE id = $5 RETURNING *`,
|
||||
[name.trim(), group_id || null, date_from || null, date_to || null, req.params.id]
|
||||
name = $1, group_id = $2, student_name = $3, date_from = $4, date_to = $5
|
||||
WHERE id = $6 RETURNING *`,
|
||||
[name.trim(), group_id || null, student_name || null, date_from || null, date_to || null, req.params.id]
|
||||
);
|
||||
if (!rows.length) return res.status(404).json({ error: 'Не найдено' });
|
||||
res.json(normDates(rows[0]));
|
||||
@@ -280,6 +280,7 @@ app.get('/api/share/:token', async (req, res) => {
|
||||
const conditions = [];
|
||||
const params = [];
|
||||
if (l.group_id) { params.push(l.group_id); conditions.push(`e.group_id = $${params.length}`); }
|
||||
if (l.student_name) { params.push(l.student_name); conditions.push(`e.student_name = $${params.length}`); }
|
||||
if (l.date_from) { params.push(l.date_from); conditions.push(`e.created_at >= $${params.length}::date`); }
|
||||
if (l.date_to) { params.push(l.date_to); conditions.push(`e.created_at < ($${params.length}::date + interval '1 day')`); }
|
||||
const where = conditions.length ? ' WHERE ' + conditions.join(' AND ') : '';
|
||||
@@ -291,6 +292,7 @@ app.get('/api/share/:token', async (req, res) => {
|
||||
res.json({
|
||||
name: l.name,
|
||||
group_name: l.group_name,
|
||||
student_name: l.student_name,
|
||||
group_id: l.group_id,
|
||||
date_from: l.date_from,
|
||||
date_to: l.date_to,
|
||||
|
||||
Reference in New Issue
Block a user