Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | import { memo } from 'react'; import { Stack } from '@allshares/studio-design-system'; import { useUserCurrentYearQuotaAssignmentsByFrequency } from '@amalia/assignments/quotas/state'; import { PeriodFrequencyEnum } from '@amalia/payout-definition/periods/types'; import { type UserProfile } from '@amalia/tenants/users/profile/types'; import { UserQuotaAssignmentsEmptyTable } from './UserQuotaAssignmentsEmptyTable'; import { UserQuotaAssignmentsFixedTable } from './UserQuotaAssignmentsFixedTable'; import { UserQuotaAssignmentsMonthlyTable } from './UserQuotaAssignmentsMonthlyTable'; import { UserQuotaAssignmentsQuarterlyTable } from './UserQuotaAssignmentsQuarterlyTable'; import { UserQuotaAssignmentsYearlyTable } from './UserQuotaAssignmentsYearlyTable'; export type UserQuotaAssignmentsTablesProps = { readonly user: Pick<UserProfile, 'currency' | 'firstName' | 'id' | 'lastName'>; readonly referenceDate?: Date; }; export const UserQuotaAssignmentsTables = memo(function UserQuotaAssignmentsTables({ user, referenceDate, }: UserQuotaAssignmentsTablesProps) { const { isLoading, data: userQuotaAssignmentsByFrequency } = useUserCurrentYearQuotaAssignmentsByFrequency(user.id, { referenceDate, }); const totalAssignments = Object.values(userQuotaAssignmentsByFrequency ?? {}).reduce( (total, assignments) => total + assignments.length, 0, ); const hasNoQuotaAssignments = totalAssignments === 0; if (isLoading || hasNoQuotaAssignments || !userQuotaAssignmentsByFrequency) { return ( <UserQuotaAssignmentsEmptyTable isLoading={isLoading} user={user} /> ); } const { [PeriodFrequencyEnum.month]: monthlyAssignments, [PeriodFrequencyEnum.quarter]: quarterlyAssignments, [PeriodFrequencyEnum.year]: yearlyAssignments, [PeriodFrequencyEnum.null]: fixedAssignments, } = userQuotaAssignmentsByFrequency; return ( <Stack gap={24}> {!!monthlyAssignments.length && ( <UserQuotaAssignmentsMonthlyTable data={monthlyAssignments} referenceDate={referenceDate} user={user} /> )} {!!quarterlyAssignments.length && ( <UserQuotaAssignmentsQuarterlyTable data={quarterlyAssignments} referenceDate={referenceDate} user={user} /> )} {!!yearlyAssignments.length && ( <UserQuotaAssignmentsYearlyTable data={yearlyAssignments} referenceDate={referenceDate} user={user} /> )} {!!fixedAssignments.length && ( <UserQuotaAssignmentsFixedTable data={fixedAssignments} user={user} /> )} </Stack> ); }); |