Files
spliit/src/trpc/routers/groups/stats/get.procedure.ts
Sebastien Castiel 210c12b7ef Use tRPC in other group pages (#249)
* Use tRPC in group edition + group layout

* Use tRPC in group modals

* Use tRPC in group stats

* Use tRPC in group activity
2024-10-19 21:29:53 -04:00

36 lines
985 B
TypeScript

import { getGroupExpenses } from '@/lib/api'
import {
getTotalActiveUserPaidFor,
getTotalActiveUserShare,
getTotalGroupSpending,
} from '@/lib/totals'
import { baseProcedure } from '@/trpc/init'
import { z } from 'zod'
export const getGroupStatsProcedure = baseProcedure
.input(
z.object({
groupId: z.string().min(1),
participantId: z.string().optional(),
}),
)
.query(async ({ input: { groupId, participantId } }) => {
const expenses = await getGroupExpenses(groupId)
const totalGroupSpendings = getTotalGroupSpending(expenses)
const totalParticipantSpendings =
participantId !== undefined
? getTotalActiveUserPaidFor(participantId, expenses)
: undefined
const totalParticipantShare =
participantId !== undefined
? getTotalActiveUserShare(participantId, expenses)
: undefined
return {
totalGroupSpendings,
totalParticipantSpendings,
totalParticipantShare,
}
})