import { Component, OnInit } from '@angular/core'; import { AlertController, 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 { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page'; import { ToastService } from 'src/app/services/toast.service'; import { AttendeesPageModal } from 'src/app/pages/events/attendees/attendees.page'; import { SearchList } from 'src/app/models/search-document'; import { SearchPage } from 'src/app/pages/search/search.page'; import { ThemeService } from 'src/app/services/theme.service' import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; @Component({ selector: 'app-delegar', templateUrl: './delegar.page.html', styleUrls: ['./delegar.page.scss'], }) export class DelegarPage 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; hideThisFeature: boolean = true; documents: SearchList[] = []; constructor( private modalController: ModalController, private navParams: NavParams, private processes:ProcessesService, public alertController: AlertController, private toastService: ToastService, public ThemeService: ThemeService, private httpErrorHandle: HttpErrorHandle ) { this.task = this.navParams.get('task'); this.postData = new Event(); this.eventBody = { BodyType : "1", Text : ""}; this.postData.Body = this.eventBody; /* Initialize 'Subject' with the title of the expedient */ this.postData.Subject = this.task.Folio; this.postData.CalendarName = "Oficial"; /* this.postData.StartDate = new Date(); */ /* Set + 30minutes to seleted datetime */ let selectedEndDate = new Date(); /* this.postData.EndDate = new Date(selectedEndDate.setMinutes(new Date().getMinutes() + 30)); */ this.hideThisFeature = this.navParams.get('showAttachmentBtn'); } ngOnInit() { this.adding = "intervenient"; } close() { this.modalController.dismiss('close'); } cancelTask() { this.modalController.dismiss(null); } async saveTask() { if(this.taskParticipants.length < 1){ this.toastService._badRequest("Selecione um destinatário"); } else if(this.taskParticipants.length > 1){ this.toastService._badRequest("Selecione apenas um destinatário"); } else { let body = { "SerialNumber": this.task.SerialNumber, "DispatchDocId": this.task.DocId, "FolderID": this.task.FolderId || this.task.FolderID, "Subject": this.task.Folio, "Comment": this.note, "DelegatedUserEmail": this.taskParticipants[0].EmailAddress, } const loader = this.toastService.loading() this.processes.DelegateTask(body).subscribe(res=>{ this.httpErrorHandle.httpsSucessMessagge('Delegar') this.close(); }, (error)=>{ this.httpErrorHandle.httpStatusHandle(error) }, ()=>{ loader.remove() }); } } 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 }); await modal.present(); 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); } }); } else { this.showAttendees=true } } async setContact(data:EventPerson[]) { if(this.adding == "intervenient") { this.taskParticipants = data; } else if (this.adding == "CC") { this.taskParticipantsCc = data; } } async setIntervenient(data) { this.taskParticipants = data; } async setIntervenientCC(data) { this.taskParticipantsCc = data; } async closeComponent() { this.showAttendees = false; } async distartExpedientModal(){ const modal = await this.modalController.create({ component: DiscartExpedientModalPage, componentProps: { serialNumber: this.task.SerialNumber, }, cssClass: 'discart-expedient-modal', backdropDismiss: false }); await modal.present(); modal.onDidDismiss(); } 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); } }); } removeAttachment(index: number){ this.documents = this.documents.filter( (e, i) => index != i); } }