import { Component, Input, OnInit } from '@angular/core'; import { RevisionPayload } from '@features/configure-forms/form.typing'; import { EmailService } from '@features/system-emails/email.service'; import { EmailNotificationType } from '@features/system-emails/email.typing'; import { DuplicateCheckValidator, EmailValidator, GenericFile, TypeSafeFormBuilder, TypeSafeFormGroup } from '@yourcause/common'; import { AnalyticsService, EventType } from '@yourcause/common/analytics'; import { I18nService } from '@yourcause/common/i18n'; import { YCModalComponent } from '@yourcause/common/modals'; interface CancelRequestGroup { clientEmailTemplateId: number; cc: string[]; bcc: string[]; attachments: GenericFile[]; } @Component({ selector: 'gc-cancel-request-revision-modal', templateUrl: './cancel-request-revision-modal.component.html', styleUrls: ['./cancel-request-revision-modal.component.scss'] }) export class CancelRequestRevisionModalComponent extends YCModalComponent implements OnInit { @Input() programId: number; @Input() isNomination: boolean; modalHeader = this.i18n.translate( 'FORMS:hdrCancelRequestedRevision', {}, 'Cancel Requested Revision' ); confirmText = this.i18n.translate( 'FORMS:textAreYouSureSendToCancelRequestedRevisionDesc', {}, 'Are you sure you want to cancel the request for a revision?' ); primaryButtonText = this.i18n.translate( 'FORMS:textCancelRequestedRevision', {}, 'Cancel requested revision' ); currentEmailActive = false; emailType = EmailNotificationType.CanceledRequestRevision; formGroup: TypeSafeFormGroup; constructor ( private i18n: I18nService, private emailService: EmailService, private formBuilder: TypeSafeFormBuilder, private analyticsService: AnalyticsService ) { super(); } async ngOnInit () { await this.setCurrentEmailActive(); this.formGroup = this.formBuilder.group({ clientEmailTemplateId: 0, cc: [ [], EmailValidator() ], bcc: [ [], EmailValidator() ], attachments: [] }, { validator: [ DuplicateCheckValidator( 'cc', 'bcc' ) ] }); } async setCurrentEmailActive () { this.currentEmailActive = await this.emailService.isProgramEmailActive( this.emailType, this.programId ); } onCancel () { this.closeModal.emit(); } onSubmit () { this.closeModal.emit({ clientEmailTemplateId: this.formGroup.value.clientEmailTemplateId, emailOptionsModel: { ccEmails: this.formGroup.value.cc, bccEmails: this.formGroup.value.bcc, attachments: this.formGroup.value.attachments } }); this.analyticsService.emitEvent({ eventName: 'Cancel revision request modal submit', eventType: EventType.Click, extras: null }); } }