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:
@@ -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 () => {
|
||||
|
||||
@@ -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')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
@@ -407,20 +407,20 @@ const saveMember = async () => {
|
||||
}
|
||||
|
||||
const confirmDelete = async (member) => {
|
||||
if (!confirm(`Möchten Sie "${member.name}" wirklich löschen?`)) {
|
||||
return
|
||||
}
|
||||
window.showConfirmModal('Mitglied löschen', `Möchten Sie "${member.name}" wirklich löschen?`, async () => {
|
||||
try {
|
||||
await $fetch('/api/members', {
|
||||
method: 'DELETE',
|
||||
body: { id: member.id }
|
||||
})
|
||||
|
||||
try {
|
||||
await $fetch('/api/members', {
|
||||
method: 'DELETE',
|
||||
body: { id: member.id }
|
||||
})
|
||||
|
||||
await loadMembers()
|
||||
} catch (error) {
|
||||
alert('Fehler beim Löschen des Mitglieds.')
|
||||
}
|
||||
await loadMembers()
|
||||
window.showSuccessModal('Erfolg', 'Mitglied wurde erfolgreich gelöscht')
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Löschen:', error)
|
||||
window.showErrorModal('Fehler', 'Fehler beim Löschen des Mitglieds')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const formatDate = (dateString) => {
|
||||
|
||||
@@ -264,26 +264,25 @@ const confirmDelete = async (item) => {
|
||||
console.log('Delete item:', item)
|
||||
console.log('Delete item.id:', item.id)
|
||||
|
||||
if (!confirm(`Möchten Sie die News "${item.title}" wirklich löschen?`)) {
|
||||
return
|
||||
}
|
||||
window.showConfirmModal('News löschen', `Möchten Sie die News "${item.title}" wirklich löschen?`, async () => {
|
||||
if (!item.id) {
|
||||
window.showErrorModal('Fehler', 'News-ID fehlt!')
|
||||
return
|
||||
}
|
||||
|
||||
if (!item.id) {
|
||||
alert('Fehler: News-ID fehlt!')
|
||||
return
|
||||
}
|
||||
try {
|
||||
console.log('Deleting with ID:', item.id)
|
||||
await $fetch(`/api/news?id=${encodeURIComponent(item.id)}`, {
|
||||
method: 'DELETE'
|
||||
})
|
||||
|
||||
try {
|
||||
console.log('Deleting with ID:', item.id)
|
||||
await $fetch(`/api/news?id=${encodeURIComponent(item.id)}`, {
|
||||
method: 'DELETE'
|
||||
})
|
||||
|
||||
await loadNews()
|
||||
} catch (error) {
|
||||
console.error('Delete error:', error)
|
||||
alert('Fehler beim Löschen der News: ' + (error.data?.message || error.message))
|
||||
}
|
||||
await loadNews()
|
||||
window.showSuccessModal('Erfolg', 'News wurde erfolgreich gelöscht')
|
||||
} catch (error) {
|
||||
console.error('Delete error:', error)
|
||||
window.showErrorModal('Fehler', 'Fehler beim Löschen der News: ' + (error.data?.message || error.message))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const formatDate = (dateString) => {
|
||||
|
||||
@@ -482,13 +482,14 @@ onMounted(() => {
|
||||
window.URL.revokeObjectURL(url)
|
||||
document.body.removeChild(a)
|
||||
|
||||
alert('Beitrittsformular erfolgreich erstellt und heruntergeladen!')
|
||||
// Globale Modal-Funktionen verwenden
|
||||
window.showSuccessModal('Beitrittsformular erfolgreich erstellt!', 'Das Formular wurde heruntergeladen und Ihre Daten wurden an den Vereinsvorstand weitergeleitet.')
|
||||
} else {
|
||||
alert('Fehler beim Erstellen des Formulars: ' + (result.error || 'Unbekannter Fehler'))
|
||||
window.showErrorModal('Fehler beim Erstellen des Formulars', result.error || 'Unbekannter Fehler')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Fehler:', error)
|
||||
alert('Fehler beim Senden des Formulars: ' + error.message)
|
||||
window.showErrorModal('Fehler beim Senden des Formulars', error.message)
|
||||
} finally {
|
||||
submitBtn.disabled = false
|
||||
submitBtn.textContent = 'Beitrittsformular erstellen'
|
||||
|
||||
Reference in New Issue
Block a user