fixes
Some checks failed
Build And Push Image / docker (push) Has been cancelled

This commit is contained in:
2025-08-13 18:55:49 +02:00
parent 9b183b48cc
commit b49148cf95
5 changed files with 391 additions and 57 deletions

View File

@@ -205,6 +205,13 @@
@edit="editMember"
/>
<!-- Create Portal Account Dialog -->
<CreatePortalAccountDialog
v-model="showCreatePortalAccountDialog"
:member="selectedMemberForPortalAccount"
@account-created="handlePortalAccountCreated"
/>
<!-- Delete Confirmation Dialog -->
<v-dialog v-model="showDeleteDialog" max-width="400">
<v-card>
@@ -285,7 +292,9 @@ const showAddDialog = ref(false);
const showEditDialog = ref(false);
const showViewDialog = ref(false);
const showDeleteDialog = ref(false);
const showCreatePortalAccountDialog = ref(false);
const selectedMember = ref<Member | null>(null);
const selectedMemberForPortalAccount = ref<Member | null>(null);
const deleteLoading = ref(false);
// Success handling
@@ -512,55 +521,20 @@ const handleMemberUpdated = (updatedMember: Member) => {
successMessage.value = `${updatedMember.FullName} has been updated successfully.`;
};
const createPortalAccount = async (member: Member) => {
if (!member.Id || creatingPortalAccountIds.value.includes(member.Id)) return;
// Add to creating array to show loading state
creatingPortalAccountIds.value.push(member.Id);
try {
const response = await $fetch<any>(`/api/members/${member.Id}/create-portal-account`, {
method: 'POST'
});
const createPortalAccount = (member: Member) => {
selectedMemberForPortalAccount.value = member;
showCreatePortalAccountDialog.value = true;
};
if (response?.success) {
// Update the member in the local array to reflect the new keycloak_id
const index = members.value.findIndex(m => m.Id === member.Id);
if (index !== -1) {
// Get keycloak_id from response.data
members.value[index] = { ...members.value[index], keycloak_id: response.data?.keycloak_id };
}
showSuccess.value = true;
successMessage.value = response.message || `Portal account created successfully for ${member.FullName}.`;
} else {
throw new Error(response?.message || 'Failed to create portal account');
}
} catch (err: any) {
console.error('Error creating portal account:', err);
// Better error handling
let errorMessage = 'Failed to create portal account. Please try again.';
if (err.statusCode === 409) {
errorMessage = 'This member already has a portal account or a user with this email already exists.';
} else if (err.statusCode === 400) {
errorMessage = 'Member must have email, first name, and last name to create a portal account.';
} else if (err.data?.message) {
errorMessage = err.data.message;
} else if (err.message) {
errorMessage = err.message;
}
// Show error in snackbar
showSuccess.value = true; // Reuse success snackbar for errors
successMessage.value = errorMessage;
} finally {
// Remove from creating array
const index = creatingPortalAccountIds.value.indexOf(member.Id);
if (index > -1) {
creatingPortalAccountIds.value.splice(index, 1);
}
const handlePortalAccountCreated = (updatedMember: Member) => {
// Update the member in the local array to reflect the new keycloak_id
const index = members.value.findIndex(m => m.Id === updatedMember.Id);
if (index !== -1) {
members.value[index] = updatedMember;
}
showSuccess.value = true;
successMessage.value = `Portal account created successfully for ${updatedMember.FullName}.`;
};
// Overdue dues handlers