feat(MED-97): show benefits amount for each member

This commit is contained in:
2025-09-26 15:39:33 +03:00
parent 428cbd9477
commit eb6ef2abe1
6 changed files with 63 additions and 7 deletions

View File

@@ -5,6 +5,7 @@ import { SupabaseClient } from '@supabase/supabase-js';
import { Database } from '@/packages/supabase/src/database.types';
import { loadTeamWorkspace } from '~/home/[account]/_lib/server/team-account-workspace.loader';
import { getSupabaseServerAdminClient } from '@/packages/supabase/src/clients/server-admin-client';
/**
* Load data for the members page
@@ -15,11 +16,13 @@ export async function loadMembersPageData(
client: SupabaseClient<Database>,
slug: string,
) {
const workspace = await loadTeamWorkspace(slug);
return Promise.all([
loadAccountMembers(client, slug),
loadInvitations(client, slug),
canAddMember,
loadTeamWorkspace(slug),
workspace,
loadAccountMembersBenefitsUsage(getSupabaseServerAdminClient(), workspace.account.id),
]);
}
@@ -60,6 +63,27 @@ async function loadAccountMembers(
return data ?? [];
}
export async function loadAccountMembersBenefitsUsage(
client: SupabaseClient<Database>,
accountId: string,
): Promise<{
personal_account_id: string;
benefit_amount: number;
}[]> {
const { data, error } = await client
.schema('medreport')
.rpc('get_benefits_usages_for_company_members', {
p_account_id: accountId,
});
if (error) {
console.error('Failed to load account members benefits usage', error);
return [];
}
return data ?? [];
}
/**
* Load account invitations
* @param client

View File

@@ -42,7 +42,7 @@ async function TeamAccountMembersPage({ params }: TeamAccountMembersPageProps) {
const client = getSupabaseServerClient();
const slug = (await params).account;
const [members, invitations, canAddMember, { user, account }] =
const [members, invitations, canAddMember, { user, account }, membersBenefitsUsage] =
await loadMembersPageData(client, slug);
const canManageRoles = account.permissions.includes('roles.manage');
@@ -96,6 +96,7 @@ async function TeamAccountMembersPage({ params }: TeamAccountMembersPageProps) {
members={members}
isPrimaryOwner={isPrimaryOwner}
canManageRoles={canManageRoles}
membersBenefitsUsage={membersBenefitsUsage}
/>
</CardContent>
</Card>