new features
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
CreateFahrzeugData,
|
||||
UpdateFahrzeugData,
|
||||
CreateWartungslogData,
|
||||
UpdateWartungslogData,
|
||||
FahrzeugStatus,
|
||||
VehicleStats,
|
||||
InspectionAlert,
|
||||
@@ -372,8 +373,9 @@ class VehicleService {
|
||||
const result = await pool.query(
|
||||
`INSERT INTO fahrzeug_wartungslog (
|
||||
fahrzeug_id, datum, art, beschreibung,
|
||||
km_stand, kraftstoff_liter, kosten, externe_werkstatt, erfasst_von
|
||||
) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9)
|
||||
km_stand, kraftstoff_liter, kosten, externe_werkstatt,
|
||||
ergebnis, naechste_faelligkeit, erfasst_von
|
||||
) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)
|
||||
RETURNING *`,
|
||||
[
|
||||
fahrzeugId,
|
||||
@@ -384,11 +386,21 @@ class VehicleService {
|
||||
data.kraftstoff_liter ?? null,
|
||||
data.kosten ?? null,
|
||||
data.externe_werkstatt ?? null,
|
||||
data.ergebnis ?? null,
|
||||
data.naechste_faelligkeit ?? null,
|
||||
createdBy,
|
||||
]
|
||||
);
|
||||
|
||||
const entry = result.rows[0] as FahrzeugWartungslog;
|
||||
|
||||
// Auto-update next service date on the vehicle when result is 'bestanden'
|
||||
if (data.ergebnis === 'bestanden' && data.naechste_faelligkeit) {
|
||||
await pool.query(
|
||||
`UPDATE fahrzeuge SET naechste_wartung_am = $1 WHERE id = $2`,
|
||||
[data.naechste_faelligkeit, fahrzeugId]
|
||||
);
|
||||
}
|
||||
logger.info('Wartungslog entry added', { entryId: entry.id, fahrzeugId, by: createdBy });
|
||||
return entry;
|
||||
} catch (error) {
|
||||
@@ -397,6 +409,54 @@ class VehicleService {
|
||||
}
|
||||
}
|
||||
|
||||
async updateWartungslog(
|
||||
wartungId: string,
|
||||
fahrzeugId: string,
|
||||
data: UpdateWartungslogData,
|
||||
updatedBy: string
|
||||
): Promise<FahrzeugWartungslog> {
|
||||
try {
|
||||
const result = await pool.query(
|
||||
`UPDATE fahrzeug_wartungslog
|
||||
SET datum = $1, art = $2, beschreibung = $3, km_stand = $4,
|
||||
externe_werkstatt = $5, ergebnis = $6, naechste_faelligkeit = $7
|
||||
WHERE id = $8 AND fahrzeug_id = $9
|
||||
RETURNING *`,
|
||||
[
|
||||
data.datum,
|
||||
data.art ?? null,
|
||||
data.beschreibung,
|
||||
data.km_stand ?? null,
|
||||
data.externe_werkstatt ?? null,
|
||||
data.ergebnis ?? null,
|
||||
data.naechste_faelligkeit ?? null,
|
||||
wartungId,
|
||||
fahrzeugId,
|
||||
]
|
||||
);
|
||||
|
||||
if (result.rows.length === 0) {
|
||||
throw new Error('Wartungseintrag nicht gefunden');
|
||||
}
|
||||
|
||||
const entry = result.rows[0] as FahrzeugWartungslog;
|
||||
|
||||
// Auto-update next service date on the vehicle when result is 'bestanden'
|
||||
if (data.ergebnis === 'bestanden' && data.naechste_faelligkeit) {
|
||||
await pool.query(
|
||||
`UPDATE fahrzeuge SET naechste_wartung_am = $1 WHERE id = $2`,
|
||||
[data.naechste_faelligkeit, fahrzeugId]
|
||||
);
|
||||
}
|
||||
|
||||
logger.info('Wartungslog entry updated', { wartungId, fahrzeugId, by: updatedBy });
|
||||
return entry;
|
||||
} catch (error) {
|
||||
logger.error('VehicleService.updateWartungslog failed', { error, wartungId, fahrzeugId });
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async getWartungslogForVehicle(fahrzeugId: string): Promise<FahrzeugWartungslog[]> {
|
||||
try {
|
||||
const result = await pool.query(
|
||||
|
||||
Reference in New Issue
Block a user