import { FundingSourceTypes } from '@core/typings/budget.typing'; import { MyAwardPayment, Payment, PaymentForApplicant, PaymentForOrg, PaymentFromApi } from '@core/typings/payment.typing'; import { ApplicantInKindItem, InKindAwardedItemApi, InKindItemToAwardOrPay } from '@features/in-kind/in-kind.typing'; import { BaseEmailOptionsModel, EmailOptionsModelForSave } from '@features/system-emails/email.typing'; import { OrganizationEligibleForGivingStatus, SimpleGrantsAddress, SimpleStringMap } from '@yourcause/common'; import { ExchangeRate } from '@yourcause/common/masking'; export interface Award { id?: number; amount: number; description: string; notifyApplicant: boolean; payments: Payment[]; awardDate?: string; currencyRequested: string; currencyRequestedAmountEquivalent: number; exchangeRate?: number; exchangeRateDateTime?: string; exchangeRateId?: number; customMessage?: string; awardType: FundingSourceTypes; inKindItems: InKindAwardedItemApi[]; } export interface AwardProgram { programId: number; programName: string; numberOfAwards: number; awardAmount: number; } export interface BaseAwardModalResponse { id: number; amount: number; description: string; sendEmail: boolean; awardDate: string; clientEmailTemplateId: number; currencyRequested: string; amountEquivalent: number; currencyExchangeRate: ExchangeRate; customMessage: string; awardType: FundingSourceTypes; awardedItems: InKindItemToAwardOrPay[]; paidItems: InKindItemToAwardOrPay[]; tagMap: SimpleStringMap<{ added: number[]; removed: number[] }>; addedPayment: Payment; removedPayment: Payment; updatedPayment: Payment; addAnotherPayment: boolean; usedOverage?: boolean; } export interface AwardModalResponse extends BaseAwardModalResponse { emailOptionsModel: BaseEmailOptionsModel; } export interface AwardModalPayload extends BaseAwardModalResponse { emailOptionsModel: EmailOptionsModelForSave; } export interface AwardFromApi { id: number; amount: number; description: string; createdDate: string; totalCash: number; totalUnits?: number; sendEmail?: boolean; payments: PaymentFromApi[]; awardDate?: string; clientLogoUrl?: string; currencyRequested: string; currencyRequestedAmountEquivalent: number; exchangeRate?: number; exchangeRateDateTime?: string; exchangeRateId?: number; awardType: FundingSourceTypes; inKindItems: InKindAwardedItemApi[]; organizationEligibleForGivingStatus: OrganizationEligibleForGivingStatus; } export interface AwardForApi { id?: number; amount: number; description: string; sendEmail: boolean; awardDate?: string; clientEmailTemplateId: number; currencyRequested: string; amountEquivalent: number; currencyExchangeRate: number; customMessage: string; awardType: FundingSourceTypes; inKindAwardItemsRequested: InKindAwardedItemApi[]; emailOptionsRequest: EmailOptionsModelForSave; } export interface MyAward { applicationId: number; awardId: number; programName: string; grantProgramId: number; organizationId: number; organizationName: string; amount: number; description: string; totalCash: number; totalUnits: number; createdDate: string; payments: MyAwardPayment[]; clientLogoUrl: string; programLogoUrl: string; currencyRequested: string; currencyRequestedAmountEquivalent: number; awardType: FundingSourceTypes; inKindItems: InKindAwardedItemApi[]; } export interface AwardForOrg { amount: number; awardDate: string; applicantInfo: { id: number; firstName: string; lastName: string; email: string; phoneNumber: string; address: SimpleGrantsAddress; fullName: string; }; createdDate: string; applicationId: number; payments: PaymentForOrg[]; isInUsersWorkflowLevel: boolean; isApplicationArchived: boolean; } export interface AwardForApplicant { awardAmount: number; awardDate: string; organizationInfo: { id: number; name: string; address: string; address2: string; country: string; state: string; city: string; postalCode: string; phoneNumber: string; charityId: number; orgIdentification: string; applicantId: number; imageName: string; imageUrl: string; nonprofitGuid: string; clientId: number; }; createdDate: string; applicationId: number; isApplicationArchived: boolean; payments: PaymentForApplicant[]; isInUsersWorkflowLevel: boolean; } export interface AwardTopLevelStats { total: number; totalSpent: number; totalRemaining: number; numberOfAwards: number; numberOfPayments: number; numberOfApplications: number; totalAwardsToIndividuals: number; totalAwardsToOrganizations: number; } export interface AwardForDash { award: { id: number; amount: number; createdDate: string; createdBy: number; createByName: string; awardDate: string; awardRemaining: number; associatedApplicationId: number; inKindItems: ApplicantInKindItem[]; }; program: { id: number; name: string; }; applicant: { id: number; fullName: string; email: string; phoneNumber: string; address1: string; address2: string; city: string; country: string; postalCode: string; state: string; }; organization: { id: number; name: string; charityId: number; phoneNumber: string; address1: string; address2: string; city: string; country: string; postalCode: string; state: string; identification: string; isPrivateOrg: boolean; imageUrl: string; guid: string; }; budgets: AwardBudgetInfo[]; payments: AwardPaymentInfo[]; isMasked: boolean; canViewMaskedApplicantInfo: boolean; } export interface AwardBudgetInfo { id: number; name: string; } export interface AwardPaymentInfo { id: number; amount: number; createdDate: string; status: number; scheduledDate: string; number: string; lastUpdatedBy: string; budgetId: number; budgetName: string; fundingSourceId: number; fundingSourceName: string; fundingSourceType: FundingSourceTypes; isACH: boolean; inKindItems: ApplicantInKindItem[]; } export interface ApproveAwardPayModalPayload { applicationId: number; sendEmail: boolean; customMessage: string; clientEmailTemplateId: number; awards?: AwardForApproveAwardPay[]; usedOverage?: boolean; emailOptionsModel: BaseEmailOptionsModel; } export interface ApproveAwardPayPayload { applicationId: number; sendEmail: boolean; customMessage: string; clientEmailTemplateId: number; awards?: AwardForApproveAwardPay[]; usedOverage?: boolean; emailOptions: EmailOptionsModelForSave; } export interface AwardForApproveAwardPay { awardType: FundingSourceTypes; awardAmount: number; currencyRequested: string; amountEquivalent: number; currencyExchangeRate: number; inKindAwardItemsRequested: ApplicantInKindItem[]; description: string; awardDate: string; customMessage: string; payment: { applicationId?: number; awardId: number; scheduledDate: string; budgetId: number; fundingSourceId: number; fundingSourceType: FundingSourceTypes; totalAmount: number; notes: string; paymentDesignation: string; careOf: string; currencyRequested: string; currencyExchangeRate: number; totalAmountEquivalent: number; differentThanConversion: boolean; inKindItems: ApplicantInKindItem[]; }; } export interface BulkAward { sendEmail: boolean; clientEmailTemplateId: number; emailOptions: EmailOptionsModelForSave; awardType: FundingSourceTypes; awardAmount: number; currencyRequested: string; amountEquivalent: number; currencyExchangeRate: number; inKindAwardItemsRequested: ApplicantInKindItem[]; description: string; awardDate: string; customMessage: string; payment: BulkPayment; } export interface BulkPayment { applicationId: number; awardId: number; scheduledDate: string; budgetId: number; fundingSourceId: number; fundingSourceType: FundingSourceTypes; totalAmount: number; notes: string; paymentDesignation: string; currencyRequested: string; currencyExchangeRate: number; totalAmountEquivalent: number; differentThanConversion: boolean; inKindItems: ApplicantInKindItem[]; isBudgetClosed?: boolean; isFundingSourceClosed?: boolean; accountNumber: string; careOf: string; } export interface BulkApproveAwardPayPayload { applications: ApplicationAward[]; cashBudgetId: number; cashFundingSourceId: number; inKindBudgetId: number; inKindFundingSourceId: number; customMessage: string; paymentTagIds: number[]; } export interface ApplicationAward { applicationId: number; awards: BulkAward[]; } export interface BulkApproveModalResponse { sendEmail: boolean; clientEmailTemplateId: number; customMessage: string; comment: string; emailOptionsModel: BaseEmailOptionsModel; } export interface MyAwardsFromApi { totalCount: number; pageCount: number; page: number; pageSize: number; data: MyAward[]; }