import { ApplicantFromSearch } from '@core/typings/applicant.typing'; import { ApplicationStatuses } from '@core/typings/status.typing'; import { BaseEmailOptionsModel, EmailOptionsModelForSave } from '@features/system-emails/email.typing'; import { SimpleGrantsAddress } from '@yourcause/common'; import moment from 'moment'; export interface InvitationRecord { invitationId: number; applicantName: string; applicantEmail: string; applicantId: number; invitationStatus: InvitationStatus; sentDate: string; scheduledDate: string; reminderDate: string; applicationCreatedDate: string; applicationId: number; applicationStatus: ApplicationStatuses; applicationIsArchived: boolean; applicationIsDraft: boolean; grantProgramId: number; grantProgramName: string; grantProgramCycleId: number; grantProgramCycleName: string; distributionListName: string; distributionListId: number; inviteStatusText?: string; openedText?: string; reminderSentText?: string; reminderEmailInactive: boolean; } export enum InvitationStatus { Scheduled = 1, Sent = 2 } export interface SendReminderModalResponse { clientEmailTemplateId: number; emailOptionsModel: BaseEmailOptionsModel; } export interface SendInviteModalBaseResponse { programId: number; cycleId: number; clientEmailTemplateId: number; } // v invite individuals v // v for when we haven't uploaded files yet v export interface SendInviteModalResponseWithAttachments extends SendInviteModalBaseResponse { selectedApplicant: ApplicantFromSearch; emailOptionsModel: BaseEmailOptionsModel; } // v for after we upload the files v export interface SendInviteIndividualForSave extends SendInviteModalBaseResponse { selectedApplicant: ApplicantFromSearch; emailOptionsModel: EmailOptionsModelForSave; } // v invite list v export interface SendInviteListModalResponse extends SendInviteModalBaseResponse { distributionListId: number; scheduledDate: string|moment.Moment; sendNow: boolean; } // v before uploading files v export interface SendInviteListWithOptions extends SendInviteListModalResponse { emailOptionsModel: BaseEmailOptionsModel; } // v after uploading files v export interface SendInviteListForSave extends SendInviteListModalResponse { emailOptionsModel: EmailOptionsModelForSave; } export interface InviteToExistingApplicant { applicantId: number; programId: number; cycleId: number; clientEmailTemplateId: number; } export interface InviteToNewApplicant { applicantFirstName: string; applicantLastName: string; applicantEmail: string; programId: number; cycleId: number; clientEmailTemplateId: number; } export interface DistributionListRecord { id: number; name: string; description: string; distributionListApplicantCount: number; createdBy: string; createdDate: string; updatedBy: string; updatedDate: string; impersonatedBy: string; createImpersonatedBy: string; deletable: boolean; } export interface DistributionListApplicant { distributionListApplicantId: number; applicantId: number; applicantName: string; applicantEmail: string; organizations: ApplicantOrg[]; } export interface ApplicantOrg { id: number; nonprofitGuid: string; name: string; classification: number; address: SimpleGrantsAddress; phoneNumber: string; orgIdentification: string; isPrivateOrg: boolean; } export interface AvailableApplicant { applicant: { applicantId: number; applicantName: string; applicantEmail: string; }; lastApplicationDate: string; lastAwardDate: string; organization: ApplicantOrg; } export interface ScheduleRecord { distributionListScheduleId: number; scheduledDate: string; distributionListId: number; distributionListName: string; distributionListApplicantCount: number; grantProgramId: number; grantProgramCycleId: number; clientEmailTemplateId: number; createdBy: string; createdDate: string; createImpersonatedBy: string; updatedBy: string; updatedDate: string; impersonatedBy: string; isSent: boolean; } export interface ScheduleInvitee { id: number; name: string; email: string; } export interface SendApplicantInvitePayload { invitationId?: number; grantProgramId: number; grantProgramCycleId: number; clientEmailTemplateId: number; applicantId?: number; firstName: string; lastName: string; email: string; isEmployeeOfClient?: boolean; emailOptionsModel: EmailOptionsModelForSave; } export interface CreateInvitationListPayload { distributionListId: number; grantProgramId: number; grantProgramCycleId: number; clientEmailTemplateId: number; scheduledDate: string|moment.Moment; emailOptionsModel: EmailOptionsModelForSave; } export interface InvitationApplicantHelpers { canApply: boolean; alreadyUsedInvite: boolean; grantProgramCycleIdOfNextInvitation: number; } export interface InvitationDetail { grantProgramCycleId: number; organizationId: number; } export enum InvitationResponse { Pass = 1, Invitation_Used = 2, Fail = 3 } export interface InvitationDetailResponse { detail: InvitationDetail; response: InvitationResponse; } export interface ApplicantFromDistributionList { firstName: string; lastName: string; email: string; isEmployee: boolean; }