Files
mek-tech-consulting/routes/consulting.js
T

48 lines
2.7 KiB
JavaScript

const express = require('express');
const router = express.Router();
const { getDb, logAudit } = require('../db');
router.get('/', (req, res) => {
const db = getDb();
const clients = db.prepare('SELECT id, name FROM clients ORDER BY name').all();
const clientId = req.query.client_id || null;
const saved = req.query.saved === '1';
let client = null, assessments = [], prevAssessment = null;
if (clientId) {
client = db.prepare('SELECT * FROM clients WHERE id = ?').get(clientId);
assessments = db.prepare('SELECT * FROM assessments WHERE client_id = ? ORDER BY created_at DESC LIMIT 10').all(clientId);
if (assessments.length > 0) prevAssessment = assessments[0];
}
res.render('consultancy-framework', { clients, clientId, client, assessments, prevAssessment, saved, loadedAnswers: null, loadedReport: null });
});
router.post('/save', async (req, res) => {
const db = getDb();
const { client_id, answers, report } = req.body;
if (!client_id) return res.status(400).json({ error: 'Client is required' });
if (!answers) return res.status(400).json({ error: 'Answers required' });
const answersJson = typeof answers === 'string' ? answers : JSON.stringify(answers);
const reportJson = typeof report === 'string' ? report : JSON.stringify(report || {});
const result = db.prepare('INSERT INTO assessments (client_id, answers, report) VALUES (?, ?, ?)').run(client_id, answersJson, reportJson);
logAudit(req.session.userId, req.session.username, 'assessment_created', 'assessment', result.lastInsertRowid, 'Consultancy framework assessment');
const client = db.prepare('SELECT * FROM clients WHERE id = ?').get(client_id);
if (client && client.status === 'lead') {
db.prepare("UPDATE clients SET status='active', updated_at=datetime('now') WHERE id=?").run(client_id);
}
res.json({ id: result.lastInsertRowid, redirect: '/consulting?client_id=' + client_id + '&saved=1' });
});
router.get('/report/:id', (req, res) => {
const db = getDb();
const assessment = db.prepare('SELECT a.*, c.name as client_name FROM assessments a LEFT JOIN clients c ON c.id = a.client_id WHERE a.id = ?').get(req.params.id);
if (!assessment) return res.redirect('/consulting');
try {
const answers = JSON.parse(assessment.answers);
const report = JSON.parse(assessment.report);
const clients = db.prepare('SELECT id, name FROM clients ORDER BY name').all();
res.render('consultancy-framework', { clients, clientId: assessment.client_id, client: { name: assessment.client_name }, assessments: [], prevAssessment: assessment, saved: false, loadedAnswers: answers, loadedReport: report });
} catch(e) { res.redirect('/consulting?client_id=' + assessment.client_id); }
});
module.exports = router;