All files / libs/payout-definition/plans/views/hub/rule-designer/src/lib/hooks use-active-plan-assignment-in-period.ts

0% Statements 0/24
0% Branches 0/1
0% Functions 0/1
0% Lines 0/24

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                                                 
import { useMemo } from 'react';

import { isAssignmentEffective } from '@amalia/assignments/common/shared';
import { usePlanAssignments } from '@amalia/assignments/plans/state';
import { type Period } from '@amalia/payout-definition/periods/types';
import { formatUserFullName } from '@amalia/tenants/users/types';

export const useActivePlanAssignmentInPeriod = (planId: string, period: Period | null) => {
  const { data: planAssignments } = usePlanAssignments({
    planId,
    relations: ['user'],
  });

  // Filter assignments, only show users that are currently assigned.
  return useMemo(
    () =>
      period && planAssignments
        ? planAssignments
            .filter((pa) => isAssignmentEffective(pa, period))
            .toSorted((a, b) => formatUserFullName(a.user).localeCompare(formatUserFullName(b.user)))
        : null,
    [planAssignments, period],
  );
};