diff --git a/pages/dashboard/member-list.vue b/pages/dashboard/member-list.vue index 81d3db2..3f4afe7 100644 --- a/pages/dashboard/member-list.vue +++ b/pages/dashboard/member-list.vue @@ -15,7 +15,7 @@ - + - + - + + + + + + + + + - + { const search = searchTerm.value.toLowerCase(); filtered = filtered.filter(member => member.FullName?.toLowerCase().includes(search) || - member.Email?.toLowerCase().includes(search) || - member.Phone?.includes(search) + member.email?.toLowerCase().includes(search) || + member.phone?.includes(search) ); } - // Status filter + // Active/Inactive filter + if (activeFilter.value) { + if (activeFilter.value === 'active') { + filtered = filtered.filter(member => member.membership_status === 'Active'); + } else if (activeFilter.value === 'inactive') { + filtered = filtered.filter(member => member.membership_status !== 'Active'); + } + } + + // Status filter (specific membership levels) if (statusFilter.value) { filtered = filtered.filter(member => - member['Membership Status'] === statusFilter.value + member.membership_status === statusFilter.value ); } + // Dues filter + if (duesFilter.value) { + if (duesFilter.value === 'paid') { + filtered = filtered.filter(member => member.current_year_dues_paid === 'true'); + } else if (duesFilter.value === 'unpaid') { + filtered = filtered.filter(member => member.current_year_dues_paid !== 'true'); + } + } + // Sorting if (sortOption.value) { filtered.sort((a, b) => { @@ -316,18 +366,10 @@ const filteredMembers = computed(() => { return (a.FullName || '').localeCompare(b.FullName || ''); case 'name-desc': return (b.FullName || '').localeCompare(a.FullName || ''); - case 'date-desc': - const aDate = a['Membership Date Paid'] || ''; - const bDate = b['Membership Date Paid'] || ''; - return new Date(bDate).getTime() - new Date(aDate).getTime(); - case 'date-asc': - const aDateAsc = a['Membership Date Paid'] || ''; - const bDateAsc = b['Membership Date Paid'] || ''; - return new Date(aDateAsc).getTime() - new Date(bDateAsc).getTime(); case 'nationality-asc': - return (a.Nationality || '').localeCompare(b.Nationality || ''); + return (a.nationality || '').localeCompare(b.nationality || ''); case 'nationality-desc': - return (b.Nationality || '').localeCompare(a.Nationality || ''); + return (b.nationality || '').localeCompare(a.nationality || ''); default: return 0; } @@ -339,13 +381,13 @@ const filteredMembers = computed(() => { const totalMembers = computed(() => members.value.length); const activeMembers = computed(() => - members.value.filter(m => m['Membership Status'] === 'Active').length + members.value.filter(m => m.membership_status === 'Active').length ); const paidDuesMembers = computed(() => - members.value.filter(m => m['Current Year Dues Paid'] === 'true').length + members.value.filter(m => m.current_year_dues_paid === 'true').length ); const uniqueNationalities = computed(() => { - const nationalities = new Set(members.value.map(m => m.Nationality).filter(Boolean)); + const nationalities = new Set(members.value.map(m => m.nationality).filter(Boolean)); return nationalities.size; });