gdpr audit implemented, email log, vollmachten, pdf delete cancel data privacy and vollmachten, removed message no id card in engergy car, and other contracts that are not telecom contracts, added insert counter for engery
This commit is contained in:
+87
@@ -58,6 +58,9 @@ exports.getMeterReadings = getMeterReadings;
|
||||
exports.addMeterReading = addMeterReading;
|
||||
exports.updateMeterReading = updateMeterReading;
|
||||
exports.deleteMeterReading = deleteMeterReading;
|
||||
exports.reportMeterReading = reportMeterReading;
|
||||
exports.getMyMeters = getMyMeters;
|
||||
exports.markReadingTransferred = markReadingTransferred;
|
||||
exports.getPortalSettings = getPortalSettings;
|
||||
exports.updatePortalSettings = updatePortalSettings;
|
||||
exports.setPortalPassword = setPortalPassword;
|
||||
@@ -66,8 +69,10 @@ exports.getRepresentatives = getRepresentatives;
|
||||
exports.addRepresentative = addRepresentative;
|
||||
exports.removeRepresentative = removeRepresentative;
|
||||
exports.searchForRepresentative = searchForRepresentative;
|
||||
const client_1 = require("@prisma/client");
|
||||
const customerService = __importStar(require("../services/customer.service.js"));
|
||||
const authService = __importStar(require("../services/auth.service.js"));
|
||||
const prisma = new client_1.PrismaClient();
|
||||
// Customer CRUD
|
||||
async function getCustomers(req, res) {
|
||||
try {
|
||||
@@ -380,6 +385,88 @@ async function deleteMeterReading(req, res) {
|
||||
});
|
||||
}
|
||||
}
|
||||
// ==================== PORTAL: ZÄHLERSTAND MELDEN ====================
|
||||
async function reportMeterReading(req, res) {
|
||||
try {
|
||||
const user = req.user;
|
||||
if (!user?.isCustomerPortal || !user?.customerId) {
|
||||
res.status(403).json({ success: false, error: 'Nur für Kundenportal-Benutzer' });
|
||||
return;
|
||||
}
|
||||
const meterId = parseInt(req.params.meterId);
|
||||
const { value, readingDate, notes } = req.body;
|
||||
// Prüfe ob der Zähler zum Kunden gehört
|
||||
const meter = await prisma.meter.findUnique({
|
||||
where: { id: meterId },
|
||||
select: { customerId: true },
|
||||
});
|
||||
if (!meter || meter.customerId !== user.customerId) {
|
||||
res.status(403).json({ success: false, error: 'Kein Zugriff auf diesen Zähler' });
|
||||
return;
|
||||
}
|
||||
const reading = await prisma.meterReading.create({
|
||||
data: {
|
||||
meterId,
|
||||
value: parseFloat(value),
|
||||
readingDate: readingDate ? new Date(readingDate) : new Date(),
|
||||
notes,
|
||||
reportedBy: user.email,
|
||||
status: 'REPORTED',
|
||||
},
|
||||
});
|
||||
res.status(201).json({ success: true, data: reading });
|
||||
}
|
||||
catch (error) {
|
||||
res.status(400).json({
|
||||
success: false,
|
||||
error: error instanceof Error ? error.message : 'Fehler beim Melden des Zählerstands',
|
||||
});
|
||||
}
|
||||
}
|
||||
async function getMyMeters(req, res) {
|
||||
try {
|
||||
const user = req.user;
|
||||
if (!user?.isCustomerPortal || !user?.customerId) {
|
||||
res.status(403).json({ success: false, error: 'Nur für Kundenportal-Benutzer' });
|
||||
return;
|
||||
}
|
||||
const meters = await prisma.meter.findMany({
|
||||
where: { customerId: user.customerId, isActive: true },
|
||||
include: {
|
||||
readings: {
|
||||
orderBy: { readingDate: 'desc' },
|
||||
take: 5,
|
||||
},
|
||||
},
|
||||
orderBy: { createdAt: 'asc' },
|
||||
});
|
||||
res.json({ success: true, data: meters });
|
||||
}
|
||||
catch (error) {
|
||||
res.status(500).json({ success: false, error: 'Fehler beim Laden der Zähler' });
|
||||
}
|
||||
}
|
||||
async function markReadingTransferred(req, res) {
|
||||
try {
|
||||
const meterId = parseInt(req.params.meterId);
|
||||
const readingId = parseInt(req.params.readingId);
|
||||
const reading = await prisma.meterReading.update({
|
||||
where: { id: readingId },
|
||||
data: {
|
||||
status: 'TRANSFERRED',
|
||||
transferredAt: new Date(),
|
||||
transferredBy: req.user?.email,
|
||||
},
|
||||
});
|
||||
res.json({ success: true, data: reading });
|
||||
}
|
||||
catch (error) {
|
||||
res.status(400).json({
|
||||
success: false,
|
||||
error: error instanceof Error ? error.message : 'Fehler beim Aktualisieren',
|
||||
});
|
||||
}
|
||||
}
|
||||
// ==================== PORTAL SETTINGS ====================
|
||||
async function getPortalSettings(req, res) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user