diff --git a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr-routing.module.ts b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr-routing.module.ts new file mode 100644 index 000000000..8700ad1f1 --- /dev/null +++ b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { OptsExpedientePrPage } from './opts-expediente-pr.page'; + +const routes: Routes = [ + { + path: '', + component: OptsExpedientePrPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class OptsExpedientePrPageRoutingModule {} diff --git a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.module.ts b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.module.ts new file mode 100644 index 000000000..2889ef3ae --- /dev/null +++ b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { OptsExpedientePrPageRoutingModule } from './opts-expediente-pr-routing.module'; + +import { OptsExpedientePrPage } from './opts-expediente-pr.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + OptsExpedientePrPageRoutingModule + ], + declarations: [OptsExpedientePrPage] +}) +export class OptsExpedientePrPageModule {} diff --git a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.html b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.html new file mode 100644 index 000000000..035fc6fe9 --- /dev/null +++ b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.html @@ -0,0 +1,30 @@ + + + + + + + + + + + Aprovar + Mandar para Revisão + + Descartar + + Delegar + + + Marcar para Despacho + Descartar + + Solicitar Parecer + Marcar Reunião + Enviar para Pendentes + + Delegar + + + + diff --git a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.scss b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.scss new file mode 100644 index 000000000..6d4e6714f --- /dev/null +++ b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.scss @@ -0,0 +1,56 @@ +.container{ + --padding-top:20px !important; + --padding-bottom:20px !important; + --padding-start:20px !important; + --padding-end:20px !important; +} +.arrow-right{ + display: none; + margin-bottom: 20px; + .arrow-right-icon{ + width: 37px; + float: right; + font-size: 35px; + overflow: hidden; + } +} +.buttons{ + display: flex; + flex-wrap: wrap; + justify-content: space-around; +} +.solid { + display: none; + width: 90%; + border-top: 1px solid #bbb; + margin: 0 auto !important; + } + .btn-ok, .btn-cancel{ + //width: 50% !important; + margin-bottom: 5px !important; + margin-top: 5px !important; +} +@media only screen and (max-width: 800px) { + .btn-ok, .btn-cancel, .btn-delete{ + width: 47% !important; + } +} +@media only screen and (min-width: 1024px) { + .arrow-right{ + display: flex; + justify-content: flex-end; + } + .btn-cancel{ + display: none; + width: 100% !important; + margin-bottom: 10px !important; + } + .btn-delete, .btn-ok{ + width: 100% !important; + margin-bottom: 10px !important; + margin-top: 10px !important; + } + /* .solid{ + display: block; + } */ +} \ No newline at end of file diff --git a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.spec.ts b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.spec.ts new file mode 100644 index 000000000..7eaab998c --- /dev/null +++ b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { OptsExpedientePrPage } from './opts-expediente-pr.page'; + +describe('OptsExpedientePrPage', () => { + let component: OptsExpedientePrPage; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ OptsExpedientePrPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(OptsExpedientePrPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.ts b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.ts new file mode 100644 index 000000000..f3220162e --- /dev/null +++ b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.ts @@ -0,0 +1,306 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { MenuController, ModalController, NavParams, PopoverController } from '@ionic/angular'; +import { AddNotePage } from 'src/app/modals/add-note/add-note.page'; +import { User } from 'src/app/models/user.model'; +import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page'; +import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page'; +import { ExpedientTaskModalPage } from 'src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page'; +import { AlertService } from 'src/app/services/alert.service'; +import { AttachmentsService } from 'src/app/services/attachments.service'; +import { AuthService } from 'src/app/services/auth.service'; +import { EventsService } from 'src/app/services/events.service'; +import { ProcessesService } from 'src/app/services/processes.service'; +import { BadRequestComponent } from '../bad-request/bad-request.component'; +import { SuccessMessageComponent } from '../success-message/success-message.component'; + +@Component({ + selector: 'app-opts-expediente-pr', + templateUrl: './opts-expediente-pr.page.html', + styleUrls: ['./opts-expediente-pr.page.scss'], +}) +export class OptsExpedientePrPage implements OnInit { + + months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]; + days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"]; + + customDate:any; + + task: any; + fulltask: any; + eventsList: Event[]; + serialnumber: string; + profile: string; + + loggeduser: User; + + constructor( + private popoverController: PopoverController, + private modalController: ModalController, + private processes: ProcessesService, + private attachments: AttachmentsService, + private activatedRoute: ActivatedRoute, + private userAuth: AuthService, + private navParams: NavParams, + ) { + + this.task = this.navParams.get('task'); + this.fulltask = this.navParams.get('fulltask'); + + this.loggeduser = userAuth.ValidatedUser; + this.activatedRoute.queryParams.subscribe(params => { + if(params["serialNumber"]) { + this.serialnumber = params["serialNumber"]; + console.log(params["serialNumber"]); + } + }); + this.profile = "mdgpr"; + } + + ngOnInit() { + + + } + + async openAddNoteModal(actionName:string) { + let classs; + if( window.innerWidth <= 800){ + classs = 'modal modal-desktop' + } else { + classs = 'modal modal-desktop' + } + const modal = await this.modalController.create({ + component: AddNotePage, + componentProps:{ + }, + cssClass: classs, + backdropDismiss: true + }); + + await modal.present(); + + modal.onDidDismiss().then(res => { + console.log(res); + if(res.data){ + const DocumentToSave = res.data.documents.map((e) => { + return { + ApplicationId: e.ApplicationType, + SourceId: e.Id, + } + }); + + let docs = { + ProcessInstanceID: "", + Attachments: DocumentToSave, + } + + if(actionName == 'Aprovar'){ + this.approve(res.data.note, docs); + } + else if(actionName == 'Revisão'){ + this.sendToReview(res.data.note, docs); + } + this.goBack(); + } + }); + } + + async approve(note:string, documents:any){ + let body = { + "serialNumber": this.serialnumber, + "action": "Aprovar", + "ActionTypeId": 100000004 , + "dataFields": { + "ReviewUserComment": note, + }, + "AttachmentList" :documents, + } + + try { + await this.processes.CompleteTask(body); + this.close(); + this.successMessage() + } catch(error) { + this.badRequest() + } + } + + async distartExpedientModal(body:any) { + console.log(this.fulltask); + const modal = await this.modalController.create({ + component: DiscartExpedientModalPage, + componentProps: { + serialNumber: this.fulltask.serialNumber, + folderId: this.fulltask.workflowInstanceDataFields.FolderID, + action: 'complete', + }, + cssClass: 'discart-expedient-modal', + backdropDismiss: false + }); + + await modal.present(); + modal.onDidDismiss().then(res=>{ + console.log(res['data']); + if(res['data']== 'Yes'){ + this.processes.CompleteTask(body); + this.goBack(); + } + else if(res['data'] == 'No'){ + let otherbody = { + "serialNumber": body.serialNumber, + "action": "Passivo", + "ActionTypeId": 99999877, + "dataFields": { + "Note": "", + } + } + this.processes.CompleteTask(otherbody); + } + //Volta na lista principal + this.goBack(); + this.modalController.dismiss(); + + }); + } + + + async sendToReview(note:string, documents:any){ + let body = { + "serialNumber": this.serialnumber, + "action": "Retificar", + "ActionTypeId": 99999877, + "dataFields": { + "ReviewUserComment": note, + }, + "AttachmentList" :documents, + } + + try { + await this.processes.CompleteTask(body); + this.close(); + this.successMessage() + } catch(error) { + this.badRequest() + } + } + + sendExpedienteToPending(){ + this.processes.SetTaskToPending(this.serialnumber).subscribe(res=>{ + console.log(res); + this.close(); + }); + } + + async openExpedientActionsModal(taskAction: any, task: any) { + //this.modalController.dismiss(); + let classs; + if( window.innerWidth <= 800){ + classs = 'modal modal-desktop' + } else { + classs = 'modal modal-desktop showAsideOptions' + } + const modal = await this.modalController.create({ + component: ExpedientTaskModalPage, + componentProps: { + taskAction: taskAction, + task: task, + profile: this.profile, + }, + cssClass: classs, + }); + await modal.present(); + modal.onDidDismiss().then(res=>{ + console.log(res['data']); + let body = res['data']; + // alert('close '+ res['data']) + if(res['data']){ + console.log('open discart'); + + this.distartExpedientModal(body); + + } + else{ + console.log('Not open'); + + } + + }); + } + + async openBookMeetingModal(task: any) { + let classs; + if( window.innerWidth <= 800){ + classs = 'book-meeting-modal modal modal-desktop' + } else { + classs = 'modal modal-desktop showAsideOptions' + } + const modal = await this.modalController.create({ + component: BookMeetingModalPage, + componentProps: { + task: this.task, + }, + cssClass: classs, + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss(); + } + + + close() { + if( window.innerWidth <= 1024) { + this.popoverController.dismiss(); + } + else{ + this.modalController.dismiss(); + } + } + + goBack() { + // let navigationExtras: NavigationExtras = { + // queryParams: { + // "expedientes-pr": true, + // } + // }; + // this.router.navigate(['/home/gabinete-digital'], navigationExtras); + + window.history.back(); + + } + + + async successMessage(message?: string) { + + const modal = await this.modalController.create({ + component: SuccessMessageComponent, + componentProps: { + message: message || 'Processo efetuado' , + }, + cssClass: 'modal modal-desktop' + }); + + modal.present() + + setTimeout(()=>{ + modal.dismiss() + },3000) + + } + + async badRequest() { + const modal = await this.modalController.create({ + component: BadRequestComponent, + componentProps: { + message: 'hello', + }, + cssClass: 'modal modal-desktop' + }); + + modal.present() + + setTimeout(()=>{ + modal.dismiss() + },1000) + } + +} diff --git a/src/app/shared/popover/request-options/request-options-routing.module.ts b/src/app/shared/popover/request-options/request-options-routing.module.ts new file mode 100644 index 000000000..59bb38c36 --- /dev/null +++ b/src/app/shared/popover/request-options/request-options-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { RequestOptionsPage } from './request-options.page'; + +const routes: Routes = [ + { + path: '', + component: RequestOptionsPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class RequestOptionsPageRoutingModule {} diff --git a/src/app/shared/popover/request-options/request-options.module.ts b/src/app/shared/popover/request-options/request-options.module.ts new file mode 100644 index 000000000..fddddf01d --- /dev/null +++ b/src/app/shared/popover/request-options/request-options.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { RequestOptionsPageRoutingModule } from './request-options-routing.module'; + +import { RequestOptionsPage } from './request-options.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + RequestOptionsPageRoutingModule + ], + declarations: [RequestOptionsPage] +}) +export class RequestOptionsPageModule {} diff --git a/src/app/shared/popover/request-options/request-options.page.html b/src/app/shared/popover/request-options/request-options.page.html new file mode 100644 index 000000000..83b912f52 --- /dev/null +++ b/src/app/shared/popover/request-options/request-options.page.html @@ -0,0 +1,54 @@ + + + + + + + + + + Arquivar + Delegar + + Efectuar Despacho + Pedido de Deferimento + Marcar Reunião + Enviar para Pendentes + + + Arquivar + Delegar + + Efectuar Despacho + Pedido de Deferimento + Marcar Reunião + Enviar para Pendentes + + + Arquivar + Delegar + + Efectuar Despacho + Solicitar Parecer + Solicitar Reapreciação + Marcar Reunião + Enviar para Pendentes + + + + + Dar o meu Parecer + Marcar Reunião + Marcar Reunião + Enviar para Pendentes + + + Arquivar + Efectuar Despacho + Solicitar Parecer + Pedido de Deferimento + Marcar Reunião + Enviar para Pendentes + + + diff --git a/src/app/shared/popover/request-options/request-options.page.scss b/src/app/shared/popover/request-options/request-options.page.scss new file mode 100644 index 000000000..6d4e6714f --- /dev/null +++ b/src/app/shared/popover/request-options/request-options.page.scss @@ -0,0 +1,56 @@ +.container{ + --padding-top:20px !important; + --padding-bottom:20px !important; + --padding-start:20px !important; + --padding-end:20px !important; +} +.arrow-right{ + display: none; + margin-bottom: 20px; + .arrow-right-icon{ + width: 37px; + float: right; + font-size: 35px; + overflow: hidden; + } +} +.buttons{ + display: flex; + flex-wrap: wrap; + justify-content: space-around; +} +.solid { + display: none; + width: 90%; + border-top: 1px solid #bbb; + margin: 0 auto !important; + } + .btn-ok, .btn-cancel{ + //width: 50% !important; + margin-bottom: 5px !important; + margin-top: 5px !important; +} +@media only screen and (max-width: 800px) { + .btn-ok, .btn-cancel, .btn-delete{ + width: 47% !important; + } +} +@media only screen and (min-width: 1024px) { + .arrow-right{ + display: flex; + justify-content: flex-end; + } + .btn-cancel{ + display: none; + width: 100% !important; + margin-bottom: 10px !important; + } + .btn-delete, .btn-ok{ + width: 100% !important; + margin-bottom: 10px !important; + margin-top: 10px !important; + } + /* .solid{ + display: block; + } */ +} \ No newline at end of file diff --git a/src/app/shared/popover/request-options/request-options.page.spec.ts b/src/app/shared/popover/request-options/request-options.page.spec.ts new file mode 100644 index 000000000..41c8cefda --- /dev/null +++ b/src/app/shared/popover/request-options/request-options.page.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { RequestOptionsPage } from './request-options.page'; + +describe('RequestOptionsPage', () => { + let component: RequestOptionsPage; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ RequestOptionsPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(RequestOptionsPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/popover/request-options/request-options.page.ts b/src/app/shared/popover/request-options/request-options.page.ts new file mode 100644 index 000000000..841df75eb --- /dev/null +++ b/src/app/shared/popover/request-options/request-options.page.ts @@ -0,0 +1,268 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import { ModalController, NavParams, PopoverController } from '@ionic/angular'; +import { AddNotePage } from 'src/app/modals/add-note/add-note.page'; +import { DarParecerPage } from 'src/app/modals/dar-parecer/dar-parecer.page'; +import { DelegarPage } from 'src/app/modals/delegar/delegar.page'; +import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page'; +import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page'; +import { ExpedientTaskModalPage } from 'src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page'; +import { ProcessesService } from 'src/app/services/processes.service'; + + +@Component({ + selector: 'app-request-options', + templateUrl: './request-options.page.html', + styleUrls: ['./request-options.page.scss'], +}) +export class RequestOptionsPage implements OnInit { + + task:any; + fulltask: any; + profile:string; + serialnumber : string + showEnviarPendentes = false + + constructor( + private popoverController: PopoverController, + private modalController: ModalController, + private navParams: NavParams, + private processes: ProcessesService, + private activatedRoute: ActivatedRoute, + ) { + this.task = this.navParams.get('task'); + this.fulltask = this.navParams.get('fulltask'); + + this.activatedRoute.queryParams.subscribe(params => { + if(params["serialNumber"]) { + this.serialnumber = params["serialNumber"]; + // console.log(params["serialNumber"]); + } + }); + + + + this.showEnviarPendentes = this.navParams.get('showEnviarPendentes'); + + if(!this.showEnviarPendentes) this.showEnviarPendentes = false + + } + + ngOnInit() { + console.log(this.task); + this.profile = "mdgpr"; + + window.onresize = (event) => { + if( window.innerWidth >= 800){ + this.popoverController.dismiss(); + } + }; + } + + close(){ + if( window.innerWidth <= 1024){ + this.popoverController.dismiss(); + } + else{ + this.modalController.dismiss(); + } + } + + sendExpedienteToPending(){ + this.processes.SetTaskToPending(this.task.SerialNumber).subscribe(res=>{ + console.log(res); + this.close(); + }); + } + + async openBookMeetingModal(task: any) { + let classs; + if( window.innerWidth <= 800){ + classs = 'book-meeting-modal modal modal-desktop' + } else { + classs = 'modal modal-desktop showAsideOptions' + } + const modal = await this.modalController.create({ + component: BookMeetingModalPage, + componentProps: { + task: this.task, + }, + cssClass: classs, + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss(); + } + + async openExpedientActionsModal(taskAction: any, task: any) { + //this.modalController.dismiss(); + let classs; + if( window.innerWidth <= 800) { + classs = 'modal modal-desktop' + } else { + classs = 'modal modal-desktop showAsideOptions' + } + const modal = await this.modalController.create({ + component: ExpedientTaskModalPage, + componentProps: { + taskAction: taskAction, + task: task, + profile: this.profile, + }, + cssClass: classs, + }); + await modal.present(); + modal.onDidDismiss().then(res=>{ + console.log(res['data']); + if(res['data']=='openDiscart'){ + console.log('open discart'); + + this.distartExpedientModal(); + + } + + }); + } + + async distartExpedientModal(){ + console.log(this.fulltask); + const modal = await this.modalController.create({ + component: DiscartExpedientModalPage, + componentProps: { + serialNumber: this.fulltask.serialNumber, + folderId: this.fulltask.workflowInstanceDataFields.FolderID, + action: 'complete', + }, + cssClass: 'discart-expedient-modal', + backdropDismiss: false + }); + + await modal.present(); + modal.onDidDismiss().then(res=>{ + if(res['data']=='close'){ + this.close(); + /* console.log('2Expedient Discard closed2'); + this.close(); + this.openMenu(); */ + } + + }); + } + + repreciar(note:string, documents:any) { + let body = { + "serialNumber": this.serialnumber, + "action": "Reapreciação", + "ActionTypeId": 100000009, + "dataFields": { + "ReviewUserComment": note, + }, + "AttachmentList" :documents, + } + this.processes.CompleteTask(body); + this.close(); + } + + async openAddNoteModal(actionName:string) { + let classs; + if( window.innerWidth <= 800){ + classs = 'modal modal-desktop' + } else { + classs = 'modal modal-desktop' + } + const modal = await this.modalController.create({ + component: AddNotePage, + componentProps:{ + }, + cssClass: classs, + backdropDismiss: true + }); + + await modal.present(); + + modal.onDidDismiss().then(res => { + + + const DocumentToSave = res.data.documents.map((e) => { + return { + ApplicationId: e.ApplicationType, + SourceId: e.Id, + } + }); + + let docs = { + ProcessInstanceID: "", + Attachments: DocumentToSave, + } + + + if(res.data){ + if(actionName == 'Solicitar Reapreciação') { + + this.repreciar(res.data.note, docs); + } + else if(actionName == 'Arquivar'){ + this.arquivar(res.data.note, docs); + } + } + }); + } + + arquivar(note:string, documents:any) { + let body = { + "serialNumber": this.serialnumber, + "action": "Arquivo", + "ActionTypeId": 95, + "dataFields": { + "ReviewUserComment": note, + }, + "AttachmentList" :documents, + } + this.processes.CompleteTask(body); + this.close(); + } + + async openDarParecer(task: any) { + console.log(task); + + let classs; + if( window.innerWidth <= 800){ + classs = 'book-meeting-modal modal modal-desktop' + } else { + classs = 'modal modal-desktop showAsideOptions' + } + const modal = await this.modalController.create({ + component: DarParecerPage, + componentProps: { + serialNumber: this.task.SerialNumber, + ProcessInstanceID: this.task.ProcessInstanceID, + }, + cssClass: classs, + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss(); + } + + async openDelegarModal(task: any) { + console.log(task); + + let classs; + if( window.innerWidth <= 800){ + classs = 'book-meeting-modal modal modal-desktop' + } else { + classs = 'modal modal-desktop showAsideOptions' + } + const modal = await this.modalController.create({ + component: DelegarPage, + componentProps: { + task: this.task, + }, + cssClass: classs, + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss(); + } + +}