chore: wip

This commit is contained in:
Ephraim Atta-Duncan
2025-02-25 10:24:25 +00:00
parent 3f4c3863e7
commit 87f66edd95
2 changed files with 23 additions and 42 deletions

View File

@ -40,7 +40,6 @@ export default async function Leaderboard({ searchParams = {} }: AdminLeaderboar
sortOrder, sortOrder,
}); });
// Ensure all required properties are defined and match the expected types
const typedSigningVolume: SigningVolume[] = leaderboard.map((item) => ({ const typedSigningVolume: SigningVolume[] = leaderboard.map((item) => ({
...item, ...item,
name: item.name || '', name: item.name || '',

View File

@ -53,9 +53,14 @@ export const getSigningVolume = async ({
}, },
}); });
const subscriptionData = activeSubscriptions.map((subscription) => { const uniqueEntities = new Map();
activeSubscriptions.forEach((subscription) => {
const isTeam = !!subscription.teamId; const isTeam = !!subscription.teamId;
return { const entityId = isTeam ? `team-${subscription.teamId}` : `user-${subscription.userId}`;
if (!uniqueEntities.has(entityId)) {
uniqueEntities.set(entityId, {
id: subscription.id, id: subscription.id,
planId: subscription.planId, planId: subscription.planId,
userId: subscription.userId, userId: subscription.userId,
@ -66,8 +71,11 @@ export const getSigningVolume = async ({
: subscription.user?.email || '', : subscription.user?.email || '',
createdAt: isTeam ? subscription.team?.createdAt : subscription.user?.createdAt, createdAt: isTeam ? subscription.team?.createdAt : subscription.user?.createdAt,
isTeam, isTeam,
};
}); });
}
});
const subscriptionData = Array.from(uniqueEntities.values());
const filteredSubscriptions = search const filteredSubscriptions = search
? subscriptionData.filter((sub) => { ? subscriptionData.filter((sub) => {
@ -83,38 +91,16 @@ export const getSigningVolume = async ({
filteredSubscriptions.map(async (subscription) => { filteredSubscriptions.map(async (subscription) => {
let signingVolume = 0; let signingVolume = 0;
if (subscription.userId) { if (subscription.userId && !subscription.isTeam) {
const personalCount = await prisma.document.count({ const personalCount = await prisma.document.count({
where: { where: {
userId: subscription.userId, userId: subscription.userId,
teamId: null,
status: DocumentStatus.COMPLETED, status: DocumentStatus.COMPLETED,
}, },
}); });
signingVolume += personalCount; signingVolume += personalCount;
const userTeams = await prisma.teamMember.findMany({
where: {
userId: subscription.userId,
},
select: {
teamId: true,
},
});
if (userTeams.length > 0) {
const teamIds = userTeams.map((team) => team.teamId);
const teamCount = await prisma.document.count({
where: {
teamId: {
in: teamIds,
},
status: DocumentStatus.COMPLETED,
},
});
signingVolume += teamCount;
}
} }
if (subscription.teamId) { if (subscription.teamId) {
@ -135,7 +121,6 @@ export const getSigningVolume = async ({
}), }),
); );
// Sort the results
const sortedResults = [...leaderboardWithVolume].sort((a, b) => { const sortedResults = [...leaderboardWithVolume].sort((a, b) => {
if (sortBy === 'name') { if (sortBy === 'name') {
return sortOrder === 'asc' return sortOrder === 'asc'
@ -149,16 +134,13 @@ export const getSigningVolume = async ({
return sortOrder === 'asc' ? dateA - dateB : dateB - dateA; return sortOrder === 'asc' ? dateA - dateB : dateB - dateA;
} }
// Default: sort by signingVolume
return sortOrder === 'asc' return sortOrder === 'asc'
? a.signingVolume - b.signingVolume ? a.signingVolume - b.signingVolume
: b.signingVolume - a.signingVolume; : b.signingVolume - a.signingVolume;
}); });
// Apply pagination
const paginatedResults = sortedResults.slice(skip, skip + validPerPage); const paginatedResults = sortedResults.slice(skip, skip + validPerPage);
// Calculate total pages
const totalPages = Math.ceil(sortedResults.length / validPerPage); const totalPages = Math.ceil(sortedResults.length / validPerPage);
return { return {