Refactor error and confirmation handling in membership application management; replace alerts with modal dialogs for improved user experience. Update application status to 'approved' for a new member and add corresponding data to JSON files.

This commit is contained in:
Torsten Schulz (local)
2025-10-23 15:32:20 +02:00
parent 9524a29b67
commit 6763b15487
13 changed files with 321 additions and 101 deletions

View File

@@ -225,24 +225,20 @@ const approveUser = async (user) => {
}
const rejectUser = async (user) => {
if (!confirm(`Möchten Sie die Registrierung von ${user.name} wirklich ablehnen?`)) {
return
}
try {
await $fetch('/api/cms/users/reject', {
method: 'POST',
body: { userId: user.id }
})
successMessage.value = `Registrierung von ${user.name} wurde abgelehnt`
setTimeout(() => successMessage.value = '', 3000)
await loadUsers()
} catch (error) {
errorMessage.value = 'Fehler beim Ablehnen der Registrierung'
setTimeout(() => errorMessage.value = '', 3000)
}
window.showConfirmModal('Registrierung ablehnen', `Möchten Sie die Registrierung von ${user.name} wirklich ablehnen?`, async () => {
try {
await $fetch('/api/cms/users/reject', {
method: 'POST',
body: { userId: user.id }
})
await loadUsers()
window.showSuccessModal('Erfolg', `Registrierung von ${user.name} wurde abgelehnt`)
} catch (error) {
console.error('Fehler beim Ablehnen:', error)
window.showErrorModal('Fehler', 'Fehler beim Ablehnen der Registrierung')
}
})
}
const updateUserRole = async (user) => {
@@ -265,24 +261,20 @@ const updateUserRole = async (user) => {
}
const deactivateUser = async (user) => {
if (!confirm(`Möchten Sie ${user.name} wirklich deaktivieren?`)) {
return
}
try {
await $fetch('/api/cms/users/deactivate', {
method: 'POST',
body: { userId: user.id }
})
successMessage.value = `Benutzer ${user.name} wurde deaktiviert`
setTimeout(() => successMessage.value = '', 3000)
await loadUsers()
} catch (error) {
errorMessage.value = 'Fehler beim Deaktivieren des Benutzers'
setTimeout(() => errorMessage.value = '', 3000)
}
window.showConfirmModal('Benutzer deaktivieren', `Möchten Sie ${user.name} wirklich deaktivieren?`, async () => {
try {
await $fetch('/api/cms/users/deactivate', {
method: 'POST',
body: { userId: user.id }
})
await loadUsers()
window.showSuccessModal('Erfolg', `Benutzer ${user.name} wurde deaktiviert`)
} catch (error) {
console.error('Fehler beim Deaktivieren:', error)
window.showErrorModal('Fehler', 'Fehler beim Deaktivieren des Benutzers')
}
})
}
onMounted(async () => {

View File

@@ -238,7 +238,7 @@ const loadApplications = async () => {
applications.value = response
} catch (error) {
console.error('Fehler beim Laden der Anträge:', error)
alert('Fehler beim Laden der Anträge')
window.showErrorModal('Fehler', 'Fehler beim Laden der Anträge')
} finally {
loading.value = false
}
@@ -257,35 +257,35 @@ const closeModal = () => {
}
const approveApplication = async (id) => {
if (confirm('Antrag genehmigen?')) {
window.showConfirmModal('Bestätigung erforderlich', 'Möchten Sie diesen Antrag wirklich genehmigen?', async () => {
try {
await $fetch('/api/membership/update-status', {
method: 'PUT',
body: { id, status: 'approved' }
})
await loadApplications()
alert('Antrag wurde genehmigt')
window.showSuccessModal('Erfolg', 'Antrag wurde erfolgreich genehmigt')
} catch (error) {
console.error('Fehler beim Genehmigen:', error)
alert('Fehler beim Genehmigen des Antrags')
window.showErrorModal('Fehler', 'Fehler beim Genehmigen des Antrags')
}
}
})
}
const rejectApplication = async (id) => {
if (confirm('Antrag ablehnen?')) {
window.showConfirmModal('Bestätigung erforderlich', 'Möchten Sie diesen Antrag wirklich ablehnen?', async () => {
try {
await $fetch('/api/membership/update-status', {
method: 'PUT',
body: { id, status: 'rejected' }
})
await loadApplications()
alert('Antrag wurde abgelehnt')
window.showSuccessModal('Erfolg', 'Antrag wurde erfolgreich abgelehnt')
} catch (error) {
console.error('Fehler beim Ablehnen:', error)
alert('Fehler beim Ablehnen des Antrags')
window.showErrorModal('Fehler', 'Fehler beim Ablehnen des Antrags')
}
}
})
}
const downloadPDF = async (id) => {
@@ -308,9 +308,11 @@ const downloadPDF = async (id) => {
a.click()
window.URL.revokeObjectURL(url)
document.body.removeChild(a)
window.showSuccessModal('Erfolg', 'PDF wurde erfolgreich heruntergeladen')
} catch (error) {
console.error('Fehler beim Herunterladen:', error)
alert('Fehler beim Herunterladen des PDFs')
window.showErrorModal('Fehler', 'Fehler beim Herunterladen des PDFs')
}
}

View File

@@ -238,26 +238,26 @@ const saveTermin = async () => {
}
const confirmDelete = async (termin) => {
if (!confirm(`Möchten Sie den Termin "${termin.titel}" wirklich löschen?`)) {
return
}
window.showConfirmModal('Termin löschen', `Möchten Sie den Termin "${termin.titel}" wirklich löschen?`, async () => {
try {
const params = new URLSearchParams({
datum: termin.datum,
titel: termin.titel,
beschreibung: termin.beschreibung || '',
kategorie: termin.kategorie || 'Sonstiges'
})
await $fetch(`/api/termine-manage?${params.toString()}`, {
method: 'DELETE'
})
try {
const params = new URLSearchParams({
datum: termin.datum,
titel: termin.titel,
beschreibung: termin.beschreibung || '',
kategorie: termin.kategorie || 'Sonstiges'
})
await $fetch(`/api/termine-manage?${params.toString()}`, {
method: 'DELETE'
})
await loadTermine()
} catch (error) {
alert('Fehler beim Löschen des Termins.')
}
await loadTermine()
window.showSuccessModal('Erfolg', 'Termin wurde erfolgreich gelöscht')
} catch (error) {
console.error('Fehler beim Löschen:', error)
window.showErrorModal('Fehler', 'Fehler beim Löschen des Termins')
}
})
}
const formatDate = (dateString) => {