import { DeliveryStatus } from '../../../models' import { Report } from '../../notification' export class DetailedReport { Receiver: string Content: string Status: 'Processed' | 'Delivered' | 'Error' ScheduleDate: string RequestDate: string SystemMessage: string DlrStatus: 'Delivered' | 'Undelivered' | 'Rejected' | 'Expired' | 'Accepted' Sender: string constructor(args: Partial) { Object.assign(this, args) } toNotificationReport(): Report { return { phoneNumber: `+${this.Receiver}`, details: this.SystemMessage, receivedAt: new Date(this.ScheduleDate || this.RequestDate), status: this.getCampaingMessageStatusByProviderStatus(), content: this.Content, controlId: this.Sender, } } private getCampaingMessageStatusByProviderStatus(): DeliveryStatus { if (this.DlrStatus === 'Delivered') return 'delivered' else if (this.DlrStatus === 'Rejected' || this.DlrStatus === 'Expired' || this.DlrStatus === 'Undelivered') return 'error' else return 'pending' } }