Initial commit — Mek-Tech AI Consultancy Framework v2.0
This commit is contained in:
+50
@@ -0,0 +1,50 @@
|
||||
const { getDb } = require('../db');
|
||||
|
||||
function crmContextMiddleware(req, res, next) {
|
||||
const db = getDb();
|
||||
const qClientId = req.query.client_id || req.query.clientId;
|
||||
if (qClientId && req.session) {
|
||||
req.session.activeClientId = parseInt(qClientId, 10) || null;
|
||||
}
|
||||
|
||||
const activeClientId = (req.session && req.session.activeClientId) || null;
|
||||
let activeClient = null;
|
||||
if (activeClientId) {
|
||||
activeClient = db.prepare('SELECT id, name, status, industry FROM clients WHERE id = ?').get(activeClientId);
|
||||
if (!activeClient) req.session.activeClientId = null;
|
||||
}
|
||||
|
||||
const allClients = db.prepare('SELECT id, name, status FROM clients ORDER BY name').all();
|
||||
|
||||
res.locals.activeClient = activeClient;
|
||||
res.locals.activeClientId = activeClient ? activeClient.id : null;
|
||||
res.locals.allClients = allClients;
|
||||
res.locals.clientQuery = (path) => {
|
||||
if (!activeClient) return path;
|
||||
const sep = path.includes('?') ? '&' : '?';
|
||||
return `${path}${sep}client_id=${activeClient.id}`;
|
||||
};
|
||||
|
||||
next();
|
||||
}
|
||||
|
||||
function getClientHubLinks(clientId) {
|
||||
const id = clientId;
|
||||
const q = `?client_id=${id}`;
|
||||
return [
|
||||
{ href: `/clients/${id}`, icon: 'eye', label: 'Overzicht' },
|
||||
{ href: `/engagements/new${q}`, icon: 'briefcase', label: 'Engagement' },
|
||||
{ href: `/consulting${q}`, icon: 'clipboard-list', label: 'Framework' },
|
||||
{ href: `/assess/${id}`, icon: 'file-search', label: 'Assessment' },
|
||||
{ href: `/architecture/new/${id}`, icon: 'network', label: 'Design' },
|
||||
{ href: `/architecture/designer${q}`, icon: 'pen-tool', label: 'Pro Designer' },
|
||||
{ href: `/quality${q}`, icon: 'shield-check', label: 'Data Quality' },
|
||||
{ href: `/racks${q}`, icon: 'server', label: 'Racks' },
|
||||
{ href: `/networking${q}`, icon: 'share-2', label: 'Netwerk' },
|
||||
{ href: `/time${q}`, icon: 'clock', label: 'Uren' },
|
||||
{ href: `/invoices/new${q}`, icon: 'receipt', label: 'Factuur' },
|
||||
{ href: `/email/compose${q}`, icon: 'mail', label: 'Email' }
|
||||
];
|
||||
}
|
||||
|
||||
module.exports = { crmContextMiddleware, getClientHubLinks };
|
||||
Reference in New Issue
Block a user