All files / lib/libs/email/content/userRoles index.tsx

45.45% Statements 5/11
0% Branches 0/4
50% Functions 2/4
45.45% Lines 5/11

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                                              4x                       1x             1x 1x 1x                                  
import { render } from "@react-email/render";
import { userRoleMap } from "shared-utils";
 
import {
  AccessChangeNoticeEmail,
  AccessPendingNoticeEmail,
  AdminPendingNoticeEmail,
  SelfRevokeAdminChangeEmail,
} from "./emailTemplates";
import { statesMap, statusMap, userRoleType } from "./roleHelper";
 
export type UserRoleEmailType = {
  role: userRoleType;
  status: keyof typeof statusMap;
  applicationEndpointUrl: string;
  territory: keyof typeof statesMap | "N/A";
  fullName: string;
  email: string;
  doneBy: string;
  doneByEmail: string;
  approverList: string[];
};
 
export const userRoleTemplate = {
  AccessChangeNotice: async (variables: UserRoleEmailType) => {
    const roleDisplay = userRoleMap[variables.role];
    const stateAccess =
      variables.territory === "N/A" ? "" : ` for ${statesMap[variables.territory]}`;
    return {
      to: [`${variables.fullName} <${variables.email}>`],
      subject: `Your OneMAC ${roleDisplay} Access${stateAccess} has been ${statusMap[variables.status]}`,
      body: await render(<AccessChangeNoticeEmail variables={variables} />),
    };
  },
  AccessPendingNotice: async (variables: UserRoleEmailType) => {
    return {
      to: [`${variables.fullName} <${variables.email}>`],
      subject: "Your OneMAC Role Access is Pending Review",
      body: await render(<AccessPendingNoticeEmail variables={variables} />),
    };
  },
  AdminPendingNotice: async (variables: UserRoleEmailType) => {
    const roleDisplay = userRoleMap[variables.role];
    const approverList = variables.approverList;
    return {
      to: approverList,
      subject: `New OneMAC ${roleDisplay} Access Request`,
      body: await render(<AdminPendingNoticeEmail variables={variables} />),
    };
  },
  SelfRevokeAdminChangeEmail: async (variables: UserRoleEmailType) => {
    const stateAccess =
      variables.territory === "N/A" ? "" : ` for ${statesMap[variables.territory]}`;
    const approverList = variables.approverList;
    return {
      to: approverList,
      subject: `OneMAC State access for ${stateAccess} was self-revoked by ${variables.fullName}`,
      body: await render(<SelfRevokeAdminChangeEmail variables={variables} />),
    };
  },
};