import { Component, Input, OnInit } from '@angular/core'; import { Validators } from '@angular/forms'; import { StatusService } from '@core/services/status.service'; import { BatchItem, ProcessingTypes, SendToProcessingModalResponse } from '@core/typings/payment.typing'; import { PaymentStatus } from '@core/typings/status.typing'; import { APConfigService } from '@features/ap-config/ap-config.service'; import { AudienceService } from '@features/audience/audience.service'; import { ClientSettingsService } from '@features/client-settings/client-settings.service'; import { SFTPService } from '@features/sftp/sftp.service'; import { TypeSafeFormBuilder, TypeSafeFormGroup } from '@yourcause/common'; import { AnalyticsService, EventType } from '@yourcause/common/analytics'; import { I18nService } from '@yourcause/common/i18n'; import { YCModalComponent } from '@yourcause/common/modals'; import moment from 'moment'; @Component({ selector: 'gc-send-to-processing-modal', templateUrl: './send-to-processing-modal.component.html', styleUrls: ['./send-to-processing-modal.component.scss'] }) export class SendToProcessingModalComponent extends YCModalComponent implements OnInit { @Input() item: BatchItem; @Input() isAvailable = true; formGroup: TypeSafeFormGroup; ProcessingTypes = ProcessingTypes; apEnabled = this.clientSettingsService.clientSettings.apEnabled; apConfig = this.apConfigService.apConfig; sftpName: string; audienceName: string; paymentStatusOptions = this.statusService.paymentStatusOptions; constructor ( private formBuilder: TypeSafeFormBuilder, private clientSettingsService: ClientSettingsService, private apConfigService: APConfigService, private audienceService: AudienceService, private sftpService: SFTPService, private i18n: I18nService, private statusService: StatusService, private analyticsService: AnalyticsService ) { super(); } ngOnInit () { if (this.apConfig) { const foundSftp = this.sftpService.basicCredentialsList.find((cred) => { return cred.id === this.apConfig.sftpDetailsId; }); this.sftpName = this.i18n.translate( 'reporting:textClientNameSecureStorage', { clientName: foundSftp ? this.clientSettingsService.clientBranding.name : 'GrantsConnect' }, '__clientName__ secure storage' ) + (foundSftp ? ' ' + foundSftp.siteName : ''); if (this.apConfig.audienceId) { const foundAudience = this.audienceService.allAudiences.find((aud) => { return aud.id === this.apConfig.audienceId; }); this.audienceName = foundAudience ? foundAudience.name : ''; } } this.formGroup = this.formBuilder.group({ name: ['', Validators.required], issueDate: null as moment.Moment, notes: '', paymentStatus: PaymentStatus.Processing as PaymentStatus }); } save () { this.closeModal.emit(this.formGroup.value); this.analyticsService.emitEvent({ eventName: 'Send to processing modal save', eventType: EventType.Click, extras: null }); } }