snooze vor expired, contracts, display snoozed contracts if an item is missing, un snooze implemented, fixed invoice upload bug
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import { Request, Response } from 'express';
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
import * as contractService from '../services/contract.service.js';
|
||||
import * as contractCockpitService from '../services/contractCockpit.service.js';
|
||||
import { ApiResponse, AuthRequest } from '../types/index.js';
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
export async function getContracts(req: AuthRequest, res: Response): Promise<void> {
|
||||
try {
|
||||
const { customerId, type, status, search, page, limit, tree } = req.query;
|
||||
@@ -194,3 +197,48 @@ export async function getCockpit(req: AuthRequest, res: Response): Promise<void>
|
||||
} as ApiResponse);
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== SNOOZE (VERTRAG ZURÜCKSTELLEN) ====================
|
||||
|
||||
export async function snoozeContract(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const id = parseInt(req.params.id);
|
||||
const { nextReviewDate, months } = req.body;
|
||||
|
||||
let reviewDate: Date | null = null;
|
||||
|
||||
if (nextReviewDate) {
|
||||
// Explizites Datum angegeben
|
||||
reviewDate = new Date(nextReviewDate);
|
||||
} else if (months) {
|
||||
// Monate angegeben → berechne Datum
|
||||
reviewDate = new Date();
|
||||
reviewDate.setMonth(reviewDate.getMonth() + months);
|
||||
}
|
||||
// Wenn beides leer → nextReviewDate wird auf null gesetzt (Snooze aufheben)
|
||||
|
||||
const updated = await prisma.contract.update({
|
||||
where: { id },
|
||||
data: { nextReviewDate: reviewDate },
|
||||
select: {
|
||||
id: true,
|
||||
contractNumber: true,
|
||||
nextReviewDate: true,
|
||||
},
|
||||
});
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: updated,
|
||||
message: reviewDate
|
||||
? `Vertrag zurückgestellt bis ${reviewDate.toLocaleDateString('de-DE')}`
|
||||
: 'Zurückstellung aufgehoben',
|
||||
} as ApiResponse);
|
||||
} catch (error) {
|
||||
console.error('Snooze error:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: 'Fehler beim Zurückstellen des Vertrags',
|
||||
} as ApiResponse);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user