42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { getDb } = require('../db');
|
|
|
|
router.get('/', (req, res) => {
|
|
const db = getDb();
|
|
const tasks = db.prepare(`
|
|
SELECT t.*, e.title as engagement_title, c.name as client_name
|
|
FROM tasks t
|
|
JOIN engagements e ON e.id = t.engagement_id
|
|
JOIN clients c ON c.id = e.client_id
|
|
ORDER BY
|
|
CASE t.priority WHEN 'critical' THEN 0 WHEN 'high' THEN 1 WHEN 'medium' THEN 2 WHEN 'low' THEN 3 END,
|
|
t.due_date ASC
|
|
`).all();
|
|
res.render('task-list', { tasks });
|
|
});
|
|
|
|
router.post('/new', (req, res) => {
|
|
const db = getDb();
|
|
const { engagement_id, title, description, priority, due_date } = req.body;
|
|
if (!title || !title.trim()) return res.redirect('back');
|
|
db.prepare('INSERT INTO tasks (engagement_id, title, description, priority, due_date) VALUES (?, ?, ?, ?, ?)')
|
|
.run(engagement_id, title, description, priority || 'medium', due_date);
|
|
res.redirect('back');
|
|
});
|
|
|
|
router.post('/:id/status', (req, res) => {
|
|
const db = getDb();
|
|
db.prepare("UPDATE tasks SET status=?, updated_at=datetime('now') WHERE id=?")
|
|
.run(req.body.status, req.params.id);
|
|
res.redirect('back');
|
|
});
|
|
|
|
router.post('/:id/delete', (req, res) => {
|
|
const db = getDb();
|
|
db.prepare('DELETE FROM tasks WHERE id = ?').run(req.params.id);
|
|
res.redirect('back');
|
|
});
|
|
|
|
module.exports = router;
|