All files / libs/kernel/auth/shared/src/abilities/plan-agreements subjects.ts

100% Statements 85/85
100% Branches 0/0
0% Functions 0/14
100% Lines 85/85

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 861x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import { subject } from '@casl/ability';
 
import {
  type isPlanAgreementArchivable,
  type isPlanAgreementAssignmentConfirmable,
  type isPlanAgreementAssignmentDeletable,
  type isPlanAgreementAssignmentRegenerable,
  type isPlanAgreementAssignmentSendable,
  type isPlanAgreementBulkDownloadable,
  type isPlanAgreementDeletable,
  type isPlanAgreementDuplicable,
  type isPlanAgreementEditable,
  type isPlanAgreementFinalizable,
  type isPlanAgreementPreviewable,
  type isPlanAgreementTemplateRefreshable,
} from '@amalia/plan-agreements/shared';
import { type PlanAgreement, type PlanAgreementAssignment } from '@amalia/plan-agreements/types';
 
import { SubjectsEnum } from '../../types';
 
// Agreement
 
export type ArchivePlanAgreementSubject = Parameters<typeof isPlanAgreementArchivable>;
export const archivePlanAgreementSubject = (...payload: ArchivePlanAgreementSubject) =>
  subject(SubjectsEnum.PlanAgreement, payload);
 
export type BulkDownloadPlanAgreementSubject = Parameters<typeof isPlanAgreementBulkDownloadable>;
export const bulkDownloadPlanAgreementSubject = (...payload: BulkDownloadPlanAgreementSubject) =>
  subject(SubjectsEnum.PlanAgreement, payload);
 
export type DuplicatePlanAgreementSubject = Parameters<typeof isPlanAgreementDuplicable>;
export const duplicatePlanAgreementSubject = (...payload: DuplicatePlanAgreementSubject) =>
  subject(SubjectsEnum.PlanAgreement, payload);
 
export type DeletePlanAgreementSubject = Parameters<typeof isPlanAgreementDeletable>;
export const deletePlanAgreementSubject = (...payload: DeletePlanAgreementSubject) =>
  subject(SubjectsEnum.PlanAgreement, payload);
 
export type EditPlanAgreementSubject = Parameters<typeof isPlanAgreementEditable>;
export const editPlanAgreementSubject = (...payload: EditPlanAgreementSubject) =>
  subject(SubjectsEnum.PlanAgreement, payload);
 
export type FinalizePlanAgreementSubject = Parameters<typeof isPlanAgreementFinalizable>;
export const finalizePlanAgreementSubject = (...payload: FinalizePlanAgreementSubject) =>
  subject(SubjectsEnum.PlanAgreement, payload);
 
export type PreviewPlanAgreementSubject = Parameters<typeof isPlanAgreementPreviewable>;
export const previewPlanAgreementSubject = (...payload: PreviewPlanAgreementSubject) =>
  subject(SubjectsEnum.PlanAgreement, payload);
 
export type RefreshPlanAgreementTemplateSubject = Parameters<typeof isPlanAgreementTemplateRefreshable>;
export const refreshPlanAgreementTemplateSubject = (...payload: RefreshPlanAgreementTemplateSubject) =>
  subject(SubjectsEnum.PlanAgreement, payload);
 
export type ViewPlanAgreementSubject = Pick<PlanAgreement, 'assignments' | 'createdAt' | 'status' | 'userAssignment'>;
export const viewPlanAgreementSubject = (payload: ViewPlanAgreementSubject) =>
  subject(SubjectsEnum.PlanAgreement, { ...payload });
 
// Assignment
 
export type ConfirmPlanAgreementAssignmentSubject = [
  Parameters<typeof isPlanAgreementAssignmentConfirmable>[0] & Pick<PlanAgreement, 'confirmationMethod'>,
  Parameters<typeof isPlanAgreementAssignmentConfirmable>[1] & Pick<PlanAgreementAssignment, 'userId'>,
];
export const confirmPlanAgreementAssignmentSubject = (...payload: ConfirmPlanAgreementAssignmentSubject) =>
  subject(SubjectsEnum.PlanAgreementAssignment, payload);
 
export type DeletePlanAgreementAssignmentSubject = Parameters<typeof isPlanAgreementAssignmentDeletable>;
export const deletePlanAgreementAssignmentSubject = (...payload: DeletePlanAgreementAssignmentSubject) =>
  subject(SubjectsEnum.PlanAgreementAssignment, payload);
 
export type RegeneratePlanAgreementAssignmentSubject = [
  Parameters<typeof isPlanAgreementAssignmentRegenerable>[0],
  Parameters<typeof isPlanAgreementAssignmentRegenerable>[1] & { userId: PlanAgreementAssignment['userId'] },
];
export const regeneratePlanAgreementAssignmentSubject = (...payload: RegeneratePlanAgreementAssignmentSubject) =>
  subject(SubjectsEnum.PlanAgreementAssignment, payload);
 
export type SendPlanAgreementAssignmentSubject = Parameters<typeof isPlanAgreementAssignmentSendable>;
export const sendPlanAgreementAssignmentSubject = (...payload: SendPlanAgreementAssignmentSubject) =>
  subject(SubjectsEnum.PlanAgreementAssignment, payload);
 
export type ViewPlanAgreementAssignmentSubject = Pick<PlanAgreementAssignment, 'sentDate' | 'status' | 'userId'>;
export const viewPlanAgreementAssignmentSubject = (payload: ViewPlanAgreementAssignmentSubject) =>
  subject(SubjectsEnum.PlanAgreementAssignment, { ...payload });