import { Component } from '@angular/core'; import { Router } from '@angular/router'; import { SpinnerService } from '@core/services/spinner.service'; import { EmailService } from '@features/system-emails/email.service'; import { ModalFactory } from '@yourcause/common/modals'; import { DistributionListModalComponent } from '../distribution-list-modal/distribution-list-modal.component'; import { InvitationService } from '../invitation.service'; import { SendInviteIndividualForSave, SendInviteListForSave } from '../invitation.typing'; import { SendInvitationModalComponent } from '../send-invitation-modal/send-invitation-modal.component'; @Component({ selector: 'gc-invitations-wrapper-page', templateUrl: './invitations-wrapper-page.component.html', styleUrls: ['./invitations-wrapper-page.component.scss'] }) export class InvitationsWrapperPageComponent { constructor ( private modalFactory: ModalFactory, private invitationService: InvitationService, private spinnerService: SpinnerService, private router: Router, private emailService: EmailService ) { } async createDistributionList () { const response = await this.modalFactory.open( DistributionListModalComponent, {} ); if (response) { this.spinnerService.startSpinner(); const id = await this.invitationService.handleCreateOrUpdateDistributionList( response.name, response.description ); this.spinnerService.stopSpinner(); if (id) { this.router.navigate([ '/management/program-setup/invitations/distribution/' + id + '/included' ]); } } } async sendInvitation (toIndividual = true) { const response = await this.modalFactory.open( SendInvitationModalComponent, { toIndividual } ); if (response) { const attachments = await this.emailService.returnIdsFromMixedAttachments(response.emailOptionsModel.attachments); const emailOptionsModel = { ...response.emailOptionsModel, attachments }; const payload = { ...response, emailOptionsModel }; this.spinnerService.startSpinner(); if (toIndividual) { await this.invitationService.handleSendInvitationToIndividual( payload as SendInviteIndividualForSave ); } else { await this.invitationService.handleSendInvitationToList( payload as SendInviteListForSave ); } this.spinnerService.stopSpinner(); } } }