85 lines
2.7 KiB
TypeScript
85 lines
2.7 KiB
TypeScript
import { Request, Response } from 'express';
|
|
import EvaluationParameter from '../models/EvaluationParameter';
|
|
import elkService from '../services/elkService';
|
|
|
|
export const getParameters = async (req: Request, res: Response) => {
|
|
const userId = req.user?.id;
|
|
const tenantId = req.user?.tenant;
|
|
|
|
// Log parameter retrieval request
|
|
elkService.logBusinessEvent('evaluation_parameters_requested', {
|
|
ipAddress: req.ip,
|
|
userAgent: req.get('User-Agent')
|
|
}, userId, tenantId);
|
|
|
|
try {
|
|
const parameters = await EvaluationParameter.find();
|
|
|
|
// Log successful parameter retrieval
|
|
elkService.logBusinessEvent('evaluation_parameters_retrieved', {
|
|
parametersCount: parameters.length,
|
|
parameterNames: parameters.map(p => p.name),
|
|
ipAddress: req.ip,
|
|
userAgent: req.get('User-Agent')
|
|
}, userId, tenantId);
|
|
|
|
res.status(200).json(parameters);
|
|
} catch (error) {
|
|
// Log system error
|
|
elkService.logSystemError(error as Error, 'evaluation_parameters_get', {
|
|
ipAddress: req.ip,
|
|
userAgent: req.get('User-Agent'),
|
|
userId,
|
|
tenantId
|
|
});
|
|
|
|
res.status(500).json({ message: 'Error fetching parameters', error });
|
|
}
|
|
};
|
|
|
|
export const updateParameters = async (req: Request, res: Response) => {
|
|
const userId = req.user?.id;
|
|
const tenantId = req.user?.tenant;
|
|
const updates = req.body; // Expects an array of { name: string, value: any }
|
|
|
|
// Log parameter update request
|
|
elkService.logBusinessEvent('evaluation_parameters_update_requested', {
|
|
updatesCount: updates.length,
|
|
parameterNames: updates.map((u: any) => u.name),
|
|
ipAddress: req.ip,
|
|
userAgent: req.get('User-Agent')
|
|
}, userId, tenantId);
|
|
|
|
try {
|
|
for (const update of updates) {
|
|
await EvaluationParameter.findOneAndUpdate(
|
|
{ name: update.name },
|
|
{ value: update.value },
|
|
{ upsert: true, new: true }
|
|
);
|
|
}
|
|
|
|
// Log successful parameter update
|
|
elkService.logBusinessEvent('evaluation_parameters_updated', {
|
|
updatesCount: updates.length,
|
|
parameterNames: updates.map((u: any) => u.name),
|
|
parameterValues: updates.map((u: any) => ({ name: u.name, value: u.value })),
|
|
ipAddress: req.ip,
|
|
userAgent: req.get('User-Agent')
|
|
}, userId, tenantId);
|
|
|
|
res.status(200).json({ message: 'Parameters updated successfully' });
|
|
} catch (error) {
|
|
// Log system error
|
|
elkService.logSystemError(error as Error, 'evaluation_parameters_update', {
|
|
updatesCount: updates.length,
|
|
parameterNames: updates.map((u: any) => u.name),
|
|
ipAddress: req.ip,
|
|
userAgent: req.get('User-Agent'),
|
|
userId,
|
|
tenantId
|
|
});
|
|
|
|
res.status(500).json({ message: 'Error updating parameters', error });
|
|
}
|
|
}; |