fixes
Build And Push Image / docker (push) Successful in 1m34s Details

This commit is contained in:
Matt 2025-08-15 15:53:13 +02:00
parent c6edd6d25d
commit 4b78080f53
2 changed files with 16 additions and 39 deletions

View File

@ -217,6 +217,11 @@
<script setup lang="ts"> <script setup lang="ts">
import type { Member } from '~/utils/types'; import type { Member } from '~/utils/types';
import { getCountryName } from '~/utils/countries'; import { getCountryName } from '~/utils/countries';
import {
isPaymentOverOneYear as checkPaymentOverOneYear,
isDuesActuallyCurrent as checkDuesActuallyCurrent,
calculateOverdueDays
} from '~/utils/dues-calculations';
interface Props { interface Props {
member: Member; member: Member;
@ -308,36 +313,18 @@ const isInGracePeriod = computed(() => {
/** /**
* Check if a member's last payment is over 1 year old * Check if a member's last payment is over 1 year old
* Uses the same logic as dues-status API * Uses standardized dues calculation function
*/ */
const isPaymentOverOneYear = computed(() => { const isPaymentOverOneYear = computed(() => {
if (!props.member.membership_date_paid) return false; return checkPaymentOverOneYear(props.member);
try {
const lastPaidDate = new Date(props.member.membership_date_paid);
const oneYearFromPayment = new Date(lastPaidDate);
oneYearFromPayment.setFullYear(oneYearFromPayment.getFullYear() + 1);
const today = new Date();
return today > oneYearFromPayment;
} catch {
return false;
}
}); });
/** /**
* Check if dues are actually current * Check if dues are actually current
* Uses the same logic as dues-status API * Uses standardized dues calculation function
*/ */
const isDuesActuallyCurrent = computed(() => { const isDuesActuallyCurrent = computed(() => {
const paymentTooOld = isPaymentOverOneYear.value; return checkDuesActuallyCurrent(props.member);
const duesCurrentlyPaid = props.member.current_year_dues_paid === 'true';
const gracePeriod = isInGracePeriod.value;
// Member is NOT overdue if they're in grace period OR (dues paid AND payment not too old)
const isOverdue = paymentTooOld || (!duesCurrentlyPaid && !gracePeriod);
return !isOverdue;
}); });
const duesColor = computed(() => { const duesColor = computed(() => {

View File

@ -39,24 +39,15 @@ export default defineEventHandler(async (event) => {
}; };
} }
// Get the highest existing member ID number to continue sequence // Use the same generation method as new members to maintain consistency
const existingMemberIds = allMembers // Generate unique 6-digit member IDs for consistency with existing format
.filter((member: Member) => member.member_id)
.map((member: Member) => extractMemberIDNumber(member.member_id!))
.filter(num => num !== null) as number[];
// Start from next available number, or 1 if no existing IDs
let nextIdNumber = existingMemberIds.length > 0 ? Math.max(...existingMemberIds) + 1 : 1;
console.log(`[api/admin/assign-member-ids.post] Starting with member ID number: ${nextIdNumber}`);
// Assign IDs to members without them
const updatedMembers = []; const updatedMembers = [];
for (const member of membersWithoutIds) { for (const member of membersWithoutIds) {
// Use 4-digit padding for member IDs (MUSA-0001, MUSA-0002, etc.)
const memberId = `MUSA-${nextIdNumber.toString().padStart(4, '0')}`;
try { try {
// Use the same generateMemberID function to ensure consistency
const memberId = await generateMemberID();
await updateMember(member.Id, { await updateMember(member.Id, {
member_id: memberId member_id: memberId
}); });
@ -69,7 +60,6 @@ export default defineEventHandler(async (event) => {
}); });
console.log(`[api/admin/assign-member-ids.post] Assigned ${memberId} to ${member.first_name} ${member.last_name}`); console.log(`[api/admin/assign-member-ids.post] Assigned ${memberId} to ${member.first_name} ${member.last_name}`);
nextIdNumber++;
} catch (updateError: any) { } catch (updateError: any) {
console.error(`[api/admin/assign-member-ids.post] Failed to assign ID to member ${member.Id}:`, updateError); console.error(`[api/admin/assign-member-ids.post] Failed to assign ID to member ${member.Id}:`, updateError);
@ -86,8 +76,8 @@ export default defineEventHandler(async (event) => {
totalMembers: allMembers.length, totalMembers: allMembers.length,
membersUpdated: updatedMembers.length, membersUpdated: updatedMembers.length,
updatedMembers: updatedMembers.slice(0, 10), // Return first 10 for display updatedMembers: updatedMembers.slice(0, 10), // Return first 10 for display
startingId: updatedMembers.length > 0 ? `MUSA-${(nextIdNumber - updatedMembers.length).toString().padStart(4, '0')}` : null, firstAssignedId: updatedMembers.length > 0 ? updatedMembers[0].memberId : null,
endingId: updatedMembers.length > 0 ? updatedMembers[updatedMembers.length - 1].memberId : null lastAssignedId: updatedMembers.length > 0 ? updatedMembers[updatedMembers.length - 1].memberId : null
} }
}; };