feat(MED-97): show benefits amount for each member
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user