- Vintage Modell hinzugefuegt - Equipment Multi-Select (Neue Buchung + Bearbeitung) - Kundenadresse in Formularen - Bearbeiten-Seite fuer Buchungen - Abbau-Zeiten in Formularen und Uebersicht - Vertrag PDF nur bei Privatkunden - LexOffice Kontakt-Erstellung Fix (BUSINESS) - Zurueck-Pfeil auf Touren-Seite
71 lines
2.0 KiB
JavaScript
71 lines
2.0 KiB
JavaScript
const { PrismaClient } = require('@prisma/client');
|
||
const { nextcloudCalendar } = require('./lib/nextcloud-calendar');
|
||
|
||
const prisma = new PrismaClient();
|
||
|
||
async function syncExistingBookings() {
|
||
console.log('🔄 Synchronisiere bestehende Buchungen mit Nextcloud...\n');
|
||
|
||
try {
|
||
// Hole alle bestätigten Buchungen
|
||
const bookings = await prisma.booking.findMany({
|
||
where: {
|
||
status: {
|
||
in: ['RESERVED', 'CONFIRMED'],
|
||
},
|
||
},
|
||
include: {
|
||
location: true,
|
||
photobox: true,
|
||
},
|
||
orderBy: {
|
||
eventDate: 'asc',
|
||
},
|
||
});
|
||
|
||
console.log(`📊 Gefunden: ${bookings.length} Buchungen\n`);
|
||
|
||
if (bookings.length === 0) {
|
||
console.log('ℹ️ Keine Buchungen zum Synchronisieren gefunden.');
|
||
return;
|
||
}
|
||
|
||
let synced = 0;
|
||
let failed = 0;
|
||
|
||
for (const booking of bookings) {
|
||
try {
|
||
console.log(`📅 Synchronisiere: ${booking.bookingNumber} - ${booking.customerName}`);
|
||
console.log(` Event: ${new Date(booking.eventDate).toLocaleDateString('de-DE')}`);
|
||
console.log(` Standort: ${booking.location?.name || 'Unbekannt'}`);
|
||
|
||
await nextcloudCalendar.syncBookingToCalendar(booking);
|
||
synced++;
|
||
console.log(` ✅ Erfolgreich!\n`);
|
||
} catch (error) {
|
||
failed++;
|
||
console.error(` ❌ Fehler: ${error.message}\n`);
|
||
}
|
||
}
|
||
|
||
console.log('─'.repeat(50));
|
||
console.log(`✅ Erfolgreich synchronisiert: ${synced}`);
|
||
console.log(`❌ Fehlgeschlagen: ${failed}`);
|
||
console.log(`📊 Gesamt: ${bookings.length}`);
|
||
console.log('\n🎉 Synchronisation abgeschlossen!');
|
||
console.log(' Prüfen Sie Nextcloud → Kalender "Buchungen"');
|
||
|
||
} catch (error) {
|
||
console.error('❌ Fehler beim Synchronisieren:', error);
|
||
throw error;
|
||
} finally {
|
||
await prisma.$disconnect();
|
||
}
|
||
}
|
||
|
||
syncExistingBookings()
|
||
.catch((error) => {
|
||
console.error('Fatal error:', error);
|
||
process.exit(1);
|
||
});
|