feat(server): rename contributionTier → contributionAmount in routes + utils

This commit is contained in:
Jennie Robinson Faber 2026-04-19 18:44:29 +01:00
parent 7a2acd4628
commit 57f5152be4
18 changed files with 35 additions and 35 deletions

View file

@ -17,9 +17,9 @@ export default defineEventHandler(async (event) => {
})
// Calculate monthly revenue from member contributions
const members = await Member.find({}, 'contributionTier').lean()
const members = await Member.find({}, 'contributionAmount').lean()
const monthlyRevenue = members.reduce((total, member) => {
return total + parseInt(member.contributionTier || '0')
return total + (member.contributionAmount || 0)
}, 0)
const pendingSlackInvites = await Member.countDocuments({ slackInvited: false })

View file

@ -23,7 +23,7 @@ export default defineEventHandler(async (event) => {
name: body.name,
email: body.email,
circle: body.circle,
contributionTier: body.contributionTier,
contributionAmount: body.contributionAmount,
slackInvited: false
})

View file

@ -26,7 +26,7 @@ export default defineEventHandler(async (event) => {
name: body.name,
email: body.email,
circle: body.circle,
contributionTier: body.contributionTier,
contributionAmount: body.contributionAmount,
status: body.status,
}, { new: true })
@ -35,7 +35,7 @@ export default defineEventHandler(async (event) => {
if (existing.name !== body.name) changedFields.push('name')
if (existing.email !== body.email) changedFields.push('email')
if (existing.circle !== body.circle) changedFields.push('circle')
if (existing.contributionTier !== body.contributionTier) changedFields.push('contributionTier')
if (existing.contributionAmount !== body.contributionAmount) changedFields.push('contributionAmount')
if (existing.status !== body.status) changedFields.push('status')
if (changedFields.length) {
@ -58,7 +58,7 @@ export default defineEventHandler(async (event) => {
name: updated.name,
email: updated.email,
circle: updated.circle,
contributionTier: updated.contributionTier,
contributionAmount: updated.contributionAmount,
status: updated.status,
role: updated.role,
}

View file

@ -36,7 +36,7 @@ export default defineEventHandler(async (event) => {
name: row.name,
email: row.email,
circle: row.circle,
contributionTier: row.contributionTier,
contributionAmount: row.contributionAmount,
slackInvited: false
})
const saved = await member.save()

View file

@ -11,10 +11,10 @@ export default defineEventHandler(async (event) => {
status: member.status,
role: member.role || 'member',
circle: member.circle,
contributionTier: member.contributionTier,
contributionAmount: member.contributionAmount,
billingCadence: member.billingCadence,
helcimCustomerId: member.helcimCustomerId,
membershipLevel: `${member.circle}-${member.contributionTier}`,
membershipLevel: `${member.circle}-${member.contributionAmount}`,
// Profile fields
pronouns: member.pronouns,
timeZone: member.timeZone,

View file

@ -30,8 +30,8 @@ export default defineEventHandler(async (event) => {
name: member.name,
circle: member.circle,
status: member.status,
contributionTier: member.contributionTier,
membershipLevel: `${member.circle}-${member.contributionTier}`
contributionAmount: member.contributionAmount,
membershipLevel: `${member.circle}-${member.contributionAmount}`
}
}
} catch (err) {

View file

@ -20,7 +20,7 @@ export default defineEventHandler(async (event) => {
$setOnInsert: {
name: "Test Admin",
circle: "founder",
contributionTier: "0",
contributionAmount: 0,
role: "admin",
status: "active",
},

View file

@ -61,7 +61,7 @@ export default defineEventHandler(async (event) => {
eventData.registrations.push({
name: body.name,
email: body.email.toLowerCase(),
membershipLevel: `${member.circle}-${member.contributionTier}`,
membershipLevel: `${member.circle}-${member.contributionAmount}`,
isMember: true,
paymentStatus: 'not_required',
amountPaid: 0

View file

@ -97,7 +97,7 @@ export default defineEventHandler(async (event) => {
if (memberHasAccess) {
isMember = true;
membershipLevel = `${member.circle}-${member.contributionTier}`;
membershipLevel = `${member.circle}-${member.contributionAmount}`;
}
// Add registration

View file

@ -14,7 +14,7 @@ export default defineEventHandler(async (event) => {
// Check if user is a member
const member = await Member.findOne({
email: body.email.toLowerCase(),
}).select("email name circle contributionTier");
}).select("email name circle contributionAmount");
if (!member) {
return {
@ -28,7 +28,7 @@ export default defineEventHandler(async (event) => {
eligibleForMemberPricing: true,
memberInfo: {
circle: member.circle,
tier: member.contributionTier,
amount: member.contributionAmount,
name: member.name,
},
};

View file

@ -101,7 +101,7 @@ export default defineEventHandler(async (event) => {
email: body.email.toLowerCase(),
name: body.name,
circle: "community",
contributionTier: "0",
contributionAmount: 0,
status: "guest",
},
},
@ -117,7 +117,7 @@ export default defineEventHandler(async (event) => {
name: body.name,
email: body.email.toLowerCase(),
membershipLevel: memberHasAccess
? `${member.circle}-${member.contributionTier}`
? `${member.circle}-${member.contributionAmount}`
: "non-member",
isMember: memberHasAccess,
ticketType: ticketInfo.ticketType,

View file

@ -71,7 +71,7 @@ export default defineEventHandler(async (event) => {
const member = await Member.findOne({ email: email.toLowerCase() });
if (member) {
memberName = memberName || member.name;
memberLevel = `${member.circle}-${member.contributionTier}`;
memberLevel = `${member.circle}-${member.contributionAmount}`;
}
// Add to waitlist

View file

@ -29,7 +29,7 @@ export default defineEventHandler(async (event) => {
email: body.email,
name: body.name,
circle: body.circle,
contributionTier: body.contributionTier,
contributionAmount: body.contributionAmount,
helcimCustomerId: customerData.id,
status: 'pending_payment',
agreement: { acceptedAt: new Date() }
@ -46,7 +46,7 @@ export default defineEventHandler(async (event) => {
email: member.email,
name: member.name,
circle: member.circle,
contributionTier: member.contributionTier,
contributionAmount: member.contributionAmount,
status: member.status
}
}

View file

@ -43,9 +43,9 @@ export default defineEventHandler(async (event) => {
pronouns: body.pronouns || undefined,
location: body.location || undefined,
circle: body.circle,
contributionTier: body.contributionTier,
contributionAmount: body.contributionAmount,
bio: body.motivation || undefined,
status: body.contributionTier === '0' ? 'active' : 'pending_payment',
status: body.contributionAmount === 0 ? 'active' : 'pending_payment',
agreement: { acceptedAt: new Date() },
})
@ -66,7 +66,7 @@ export default defineEventHandler(async (event) => {
})
// For free tier, issue session and redirect to welcome
if (body.contributionTier === '0') {
if (body.contributionAmount === 0) {
const sessionToken = jwt.sign(
{ memberId: member._id, email: member.email, tv: member.tokenVersion },
config.jwtSecret,
@ -90,7 +90,7 @@ export default defineEventHandler(async (event) => {
email: member.email,
name: member.name,
circle: member.circle,
contributionTier: member.contributionTier,
contributionAmount: member.contributionAmount,
status: member.status,
}
}
@ -105,7 +105,7 @@ export default defineEventHandler(async (event) => {
email: member.email,
name: member.name,
circle: member.circle,
contributionTier: member.contributionTier,
contributionAmount: member.contributionAmount,
status: member.status,
}
}

View file

@ -7,12 +7,12 @@ export default defineEventHandler(async (event) => {
const member = await requireAuth(event);
// If already on free tier, nothing to cancel
if (member.contributionTier === "0" || !member.helcimSubscriptionId) {
if (member.contributionAmount === 0 || !member.helcimSubscriptionId) {
return {
success: true,
message: "No active subscription to cancel",
status: member.status,
contributionTier: member.contributionTier,
contributionAmount: member.contributionAmount,
};
}
@ -29,7 +29,7 @@ export default defineEventHandler(async (event) => {
{
$set: {
status: 'pending_payment',
contributionTier: '0',
contributionAmount: 0,
helcimSubscriptionId: null,
paymentMethod: 'none',
subscriptionEndDate: new Date(),
@ -46,7 +46,7 @@ export default defineEventHandler(async (event) => {
success: true,
message: "Subscription cancelled successfully",
status: 'pending_payment',
contributionTier: '0',
contributionAmount: 0,
};
} catch (error) {
console.error("Error cancelling subscription:", error);

View file

@ -47,7 +47,7 @@ async function inviteToSlack(member) {
member.name,
member.email,
member.circle,
member.contributionTier,
member.contributionAmount,
inviteResult.status
)
@ -128,7 +128,7 @@ export default defineEventHandler(async (event) => {
email: member.email,
name: member.name,
circle: member.circle,
contributionTier: member.contributionTier,
contributionAmount: member.contributionAmount,
status: member.status
}
}

View file

@ -67,7 +67,7 @@ export default defineEventHandler(async (event) => {
email: member.email,
name: member.name,
circle: member.circle,
contributionTier: member.contributionTier,
contributionAmount: member.contributionAmount,
pronouns: member.pronouns,
timeZone: member.timeZone,
avatar: member.avatar,

View file

@ -181,7 +181,7 @@ export class SlackService {
memberName: string,
memberEmail: string,
circle: string,
contributionTier: string,
contributionAmount: number,
invitationStatus: string = "manual_invitation_required",
): Promise<void> {
try {
@ -240,7 +240,7 @@ export class SlackService {
},
{
type: "mrkdwn",
text: `*Contribution:*\n$${contributionTier}/month`,
text: `*Contribution:*\n$${contributionAmount}/month`,
},
],
},