Initial commit — Mek-Tech AI Consultancy Framework v2.0
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user