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 // 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) => { const monthlyRevenue = members.reduce((total, member) => {
return total + parseInt(member.contributionTier || '0') return total + (member.contributionAmount || 0)
}, 0) }, 0)
const pendingSlackInvites = await Member.countDocuments({ slackInvited: false }) const pendingSlackInvites = await Member.countDocuments({ slackInvited: false })

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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