Initial commit: IT Nexus Web-App
This commit is contained in:
73
backend/src/controllers/externalAlert.controller.js
Normal file
73
backend/src/controllers/externalAlert.controller.js
Normal file
@@ -0,0 +1,73 @@
|
||||
const ExternalAlert = require('../models/ExternalAlert');
|
||||
const Ticket = require('../models/Ticket');
|
||||
|
||||
const getAll = (req, res) => {
|
||||
try {
|
||||
const acknowledged = req.query.acknowledged !== undefined
|
||||
? req.query.acknowledged === 'true'
|
||||
: undefined;
|
||||
const alerts = ExternalAlert.getAll({ acknowledged });
|
||||
res.json({ status: 'success', data: alerts });
|
||||
} catch (err) {
|
||||
res.status(500).json({ status: 'error', message: err.message });
|
||||
}
|
||||
};
|
||||
|
||||
const acknowledge = (req, res) => {
|
||||
try {
|
||||
const alert = ExternalAlert.acknowledge(req.params.id);
|
||||
if (!alert) return res.status(404).json({ status: 'error', message: 'Alert nicht gefunden' });
|
||||
res.json({ status: 'success', data: alert });
|
||||
} catch (err) {
|
||||
res.status(500).json({ status: 'error', message: err.message });
|
||||
}
|
||||
};
|
||||
|
||||
const createTicket = (req, res) => {
|
||||
try {
|
||||
const alert = ExternalAlert.getById(req.params.id);
|
||||
if (!alert) return res.status(404).json({ status: 'error', message: 'Alert nicht gefunden' });
|
||||
|
||||
const priorityMap = { CRIT: 'kritisch', WARN: 'hoch', OK: 'niedrig', UNKNOWN: 'mittel' };
|
||||
|
||||
const title = alert.device
|
||||
? `[${alert.source?.toUpperCase()}] ${alert.device} – ${alert.message || alert.state_transition}`.substring(0, 200)
|
||||
: (alert.message || 'Monitoring Alert').substring(0, 200);
|
||||
|
||||
const description = [
|
||||
alert.device ? `**Gerät:** ${alert.device}` : '',
|
||||
alert.service ? `**Service:** ${alert.service}` : '',
|
||||
alert.state_transition ? `**Status:** ${alert.state_transition}` : '',
|
||||
alert.severity ? `**Severity:** ${alert.severity}` : '',
|
||||
alert.message ? `\n**Meldung:** ${alert.message}` : '',
|
||||
alert.customer ? `**Kunde:** ${alert.customer}` : '',
|
||||
alert.monitored_by ? `**Überwacht von:** ${alert.monitored_by}` : '',
|
||||
alert.state_time ? `**Zeitpunkt:** ${alert.state_time}` : '',
|
||||
].filter(Boolean).join('\n');
|
||||
|
||||
const ticket = Ticket.create({
|
||||
title,
|
||||
description,
|
||||
source: 'monitoring',
|
||||
category: 'Netzwerk',
|
||||
priority: priorityMap[alert.severity] || 'mittel',
|
||||
status: 'offen',
|
||||
});
|
||||
|
||||
ExternalAlert.setTicket(alert.id, ticket.id);
|
||||
res.json({ status: 'success', data: { ticket, alert: ExternalAlert.getById(alert.id) } });
|
||||
} catch (err) {
|
||||
res.status(500).json({ status: 'error', message: err.message });
|
||||
}
|
||||
};
|
||||
|
||||
const remove = (req, res) => {
|
||||
try {
|
||||
ExternalAlert.delete(req.params.id);
|
||||
res.json({ status: 'success' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ status: 'error', message: err.message });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = { getAll, acknowledge, createTicket, remove };
|
||||
Reference in New Issue
Block a user