import { Component, OnInit } from '@angular/core'; import { NavigationExtras, Router } from '@angular/router'; import { AlertController, AnimationController, ModalController, NavParams } from '@ionic/angular'; import { Event } from 'src/app/models/event.model' import { EventBody } from 'src/app/models/eventbody.model'; import { ProcessesService } from 'src/app/services/processes.service'; import { EventPerson } from 'src/app/models/eventperson.model'; import { EventsService } from 'src/app/services/events.service'; import { AttachmentsService } from 'src/app/services/attachments.service'; import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page'; import { AlertService } from 'src/app/services/alert.service'; import { BadRequestPage } from 'src/app/shared/popover/bad-request/bad-request.page'; import { SuccessMessagePage } from 'src/app/shared/popover/success-message/success-message.page'; import { ToastService } from 'src/app/services/toast.service'; import { SearchList } from 'src/app/models/search-document'; import { SearchPage } from 'src/app/pages/search/search.page'; import { AttendeesPageModal } from 'src/app/pages/events/attendees/attendees.page'; import { ThemeService } from 'src/app/services/theme.service' import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; @Component({ selector: 'app-forward', templateUrl: './forward.page.html', styleUrls: ['./forward.page.scss'], }) export class ForwardPage implements OnInit { task: any; note:string; taskParticipants: EventPerson[] = []; taskParticipantsCc: EventPerson[] = []; taskDocId:string; loadedAttachments:any; adding: "intervenient" | "CC" = "intervenient"; postData: Event; eventBody: EventBody; eventAttendees: EventPerson; formLocationSatus: boolean = false; showAttendees= false; documents:SearchList[] = []; constructor( private modalController: ModalController, private router:Router, private navParams: NavParams, private processes:ProcessesService, private attachmentsService: AttachmentsService, private calendarService: EventsService, public alertController: AlertController, private alertService: AlertService, private animationController: AnimationController, private toastService: ToastService, public ThemeService: ThemeService, private httpErroHandle: HttpErrorHandle ) { this.task = this.navParams.get('task'); this.postData = new Event(); this.eventBody = { BodyType : "1", Text : ""}; this.postData.Body = this.eventBody; this.postData.Subject = this.task.Folio; this.postData.CalendarName = "Oficial"; let selectedEndDate = new Date(); } ngOnInit() { this.adding = "intervenient"; } close() { this.router.navigate(['/home/gabinete-digital/expediente']); this.modalController.dismiss(null); } cancelTask() { this.modalController.dismiss(null); } goBack() { this.modalController.dismiss(null); if (window.innerWidth <= 800) { this.router.navigate(['/home/gabinete-digital/pedidos']); } else { let navigationExtras: NavigationExtras = { queryParams: { "pedidos": true, } } this.router.navigate(['/home/gabinete-digital'], navigationExtras); } } async assignar(note:string, documents:any) { let body = { "serialNumber": this.task.SerialNumber, "action": "Reencaminhar", "ActionTypeId": 98, "dataFields": { "ReviewUserComment": note, }, "AttachmentList" :documents, } } notImplemented(){ this.alertService.presentAlert('Funcionalidade em desenvolvimento'); } async saveTask() { const DocumentToSave = this.documents.map((e) => { return { ApplicationId: e.ApplicationType, SourceId: e.Id, } }); let docs = { ProcessInstanceID: "", Attachments: DocumentToSave, } if(this.taskParticipants.length < 1){ this.toastService._badRequest("Selecione um destinatário"); } else { let attendees: any = this.taskParticipants.concat(this.taskParticipantsCc); attendees = attendees.map(function(val) { return { UserEmail: val.EmailAddress, UserType: val.IsRequired?"I": "CC" }; }); let body = { "usersSelected": attendees, "serialNumber": this.task.SerialNumber, "action": "Reencaminhar", "actionTypeId": 98, "dataFields": { "ReviewUserComment": this.note, }, "FolderId": this.task.FolderId, "AttachmentList" :docs, } this.processes.CompleteParecerPrTask(body).subscribe(res=>{ this.httpErroHandle.httpsSucessMessagge('Reencaminhar') this.goBack(); }, (error)=>{ this.httpErroHandle.httpStatusHandle(error) }); } } async addParticipants() { this.adding = "intervenient"; if(window.innerWidth <=800) { this.showAttendees=false; const modal = await this.modalController.create({ component: AttendeesPageModal, componentProps: { adding: this.adding, taskParticipants: this.taskParticipants, taskParticipantsCc: this.taskParticipantsCc }, cssClass: 'modal attendee modal-desktop', backdropDismiss: false }); modal.onDidDismiss().then((data) => { if(data) { data = data['data']; const newAttendees: EventPerson[] = data['taskParticipants']; const newAttendeesCC: EventPerson[] = data['taskParticipantsCc']; this.setIntervenient(newAttendees); this.setIntervenientCC(newAttendeesCC); } }, (error) => { console.log(error) }); await modal.present(); } else { this.showAttendees=true } } async setIntervenient(data) { this.taskParticipants = data; } async setIntervenientCC(data) { this.taskParticipantsCc = data; } validateFormInputs(){ let formLocation = this.postData.Location.trim(); if(!this.postData.Location && formLocation.length <= 0){ this.formLocationSatus=true; } } dynamicSetIntervenient({taskParticipants}){ this.taskParticipants = taskParticipants; } async getDoc() { const modal = await this.modalController.create({ component: SearchPage, cssClass: 'modal-width-100-width-background modal', componentProps: { type: 'AccoesPresidenciais & ArquivoDespachoElect', showSearchInput: true, select: true } }); await modal.present(); modal.onDidDismiss().then((res)=>{ if(res){ const data = res.data; this.documents.push(data.selected); } }, (error) => { console.log(error) }); } removeAttachment(index: number){ this.documents = this.documents.filter( (e, i) => index != i); } }