diff --git a/angular.json b/angular.json index 784b4bfa7..0defb466a 100644 --- a/angular.json +++ b/angular.json @@ -128,7 +128,9 @@ "tsconfig.spec.json", "e2e/tsconfig.json" ], - "exclude": ["**/node_modules/**"] + "exclude": [ + "**/node_modules/**" + ] } }, "e2e": { @@ -174,7 +176,8 @@ } }, "cli": { - "defaultCollection": "@ionic/angular-toolkit" + "defaultCollection": "@ionic/angular-toolkit", + "analytics": false }, "schematics": { "@ionic/angular-toolkit:component": { @@ -184,4 +187,4 @@ "styleext": "scss" } } -} +} \ No newline at end of file diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts index 559975cff..b083d86a8 100644 --- a/src/app/home/home-routing.module.ts +++ b/src/app/home/home-routing.module.ts @@ -47,7 +47,7 @@ const routes: Routes = [ loadChildren: ()=> import('../pages/gabinete-digital/expediente/expediente.module').then(m => m.ExpedientePageModule) }, { - path:':expediente-detailId', + path:':SerialNumber', loadChildren: ()=> import('../pages/gabinete-digital/expediente/expediente-detail/expediente-detail.module').then(m => m.ExpedienteDetailPageModule) } ] diff --git a/src/app/models/dailyworktask.model.ts b/src/app/models/dailyworktask.model.ts new file mode 100644 index 000000000..ca7b35ae8 --- /dev/null +++ b/src/app/models/dailyworktask.model.ts @@ -0,0 +1,7 @@ +export interface DailyWorkTask{ + + SerialNumber: string; + Folio: string; + Senders: string; + CreateDate: string; +} \ No newline at end of file diff --git a/src/app/models/user.model.ts b/src/app/models/user.model.ts new file mode 100644 index 000000000..2755574a0 --- /dev/null +++ b/src/app/models/user.model.ts @@ -0,0 +1,6 @@ +export interface User { + username: string, + password: string, + domainName: string, + BasicAuthKey: string + } \ No newline at end of file diff --git a/src/app/pages/events/event-detail/event-detail.page.html b/src/app/pages/events/event-detail/event-detail.page.html index 2717db023..7bbe151c0 100644 --- a/src/app/pages/events/event-detail/event-detail.page.html +++ b/src/app/pages/events/event-detail/event-detail.page.html @@ -7,43 +7,44 @@ - + Assunto - + + Descrição - + Localização - + Intervenientes - - + + Carácter - + Tipo do evento - + Data Início: - + Data Fim - + Anexos @@ -54,8 +55,8 @@
- Recusar - Aprovar + + Gravar
diff --git a/src/app/pages/events/event-detail/event-detail.page.ts b/src/app/pages/events/event-detail/event-detail.page.ts index 798a6fcf1..be49cf7b0 100644 --- a/src/app/pages/events/event-detail/event-detail.page.ts +++ b/src/app/pages/events/event-detail/event-detail.page.ts @@ -28,7 +28,20 @@ export class EventDetailPage implements OnInit { /* Load my event detail */ /* this.loadedEvent = this.eventsService.getEvent(eventId); */ this.eventItem = this.eventsService.getEvent(eventId); + + this.eventsService.getEvent(eventId).subscribe(response => + { + this.loadedEvent = response; + }); }); } + Save() + { + this.eventsService.PutEvent(this.loadedEvent).subscribe(response => + { + this.loadedEvent = response; + }); + } + } diff --git a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html index 418fdda8e..63a04c373 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html +++ b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html @@ -11,19 +11,19 @@ Assunto - + {{task.Folio }} Remetentes - + {{ task.Senders }} Data - + {{ task.CreateDate }} Documentos a Anexar diff --git a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts index 5ef391e05..afc75bc03 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts +++ b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts @@ -1,4 +1,8 @@ import { Component, OnInit } from '@angular/core'; +import { ProcessesService } from 'src/app/services/processes.service'; + +import { DailyWorkTask } from '../../../../models/dailyworktask.model'; +import { ActivatedRoute } from '@angular/router'; @Component({ selector: 'app-expediente-detail', @@ -7,9 +11,25 @@ import { Component, OnInit } from '@angular/core'; }) export class ExpedienteDetailPage implements OnInit { - constructor() { } + constructor(private activateRoute: ActivatedRoute,private processes:ProcessesService) { } + + task:DailyWorkTask; + +serialnumber:string; ngOnInit() { + this.activateRoute.paramMap.subscribe(paramMap => { + if (!paramMap.has('SerialNumber')){ + return; + } + this.serialnumber = paramMap.get('SerialNumber'); + this.LoadTaskDetail(this.serialnumber); + }); + } + + LoadTaskDetail(serial:string) + { + this.task = this.processes.GetTaskDetail(serial); } } diff --git a/src/app/pages/gabinete-digital/expediente/expediente.page.html b/src/app/pages/gabinete-digital/expediente/expediente.page.html index 567e89ce1..fa41b97ce 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente.page.html +++ b/src/app/pages/gabinete-digital/expediente/expediente.page.html @@ -22,13 +22,15 @@ - +
- - -

Reunião de Conselho de Ministros

+ + + +

{{ task.Folio }}

-

MINEC, MINFIN13 JAN

+

{{ task.Senders }}{{ task.CreateDate }}

diff --git a/src/app/pages/gabinete-digital/expediente/expediente.page.ts b/src/app/pages/gabinete-digital/expediente/expediente.page.ts index afe89eb23..98481f4f0 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente.page.ts +++ b/src/app/pages/gabinete-digital/expediente/expediente.page.ts @@ -4,6 +4,9 @@ import { ModalController } from '@ionic/angular'; import { ExpedienteModalPage } from '../expediente-modal/expediente-modal.page'; import { CalendarComponent } from 'ionic2-calendar'; +import { DailyWorkTask } from '../../../models/dailyworktask.model'; +import { ProcessesService } from 'src/app/services/processes.service'; + @Component({ selector: 'app-expediente', templateUrl: './expediente.page.html', @@ -15,12 +18,16 @@ export class ExpedientePage implements OnInit { @ViewChild(CalendarComponent) myCal: CalendarComponent; - constructor(private router: Router,private modalCtrl: ModalController ) { } + taskslist:DailyWorkTask[]; + + constructor(private router: Router,private modalCtrl: ModalController, private processes:ProcessesService ) { } ngOnInit() { //Inicializar segment this.segment = "expediente"; + this.LoadList(); } + async openExpedienteModal(){ const modal = await this.modalCtrl.create({ component: ExpedienteModalPage, @@ -58,5 +65,10 @@ export class ExpedientePage implements OnInit { }); } + LoadList() + { + this.taskslist = this.processes.GetDailyWorkTasks(); + } + } \ No newline at end of file diff --git a/src/app/pages/gabinete-digital/gabinete-digital-routing.module.ts b/src/app/pages/gabinete-digital/gabinete-digital-routing.module.ts index 69203e5af..03f601326 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital-routing.module.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital-routing.module.ts @@ -7,15 +7,16 @@ const routes: Routes = [ { path: '', component: GabineteDigitalPage - }, { - path: 'expediente', - loadChildren: () => import('./expediente/expediente.module').then( m => m.ExpedientePageModule) - }, - { - path: 'expediente-modal', - loadChildren: () => import('../../Pages/gabinete-digital/expediente-modal/expediente-modal.module').then( m => m.ExpedienteModalPageModule) - } - + }, + { + path: 'expediente', + loadChildren: () => import('./expediente/expediente.module').then( m => m.ExpedientePageModule) + }, + { + path: 'expediente-modal', + loadChildren: () => import('../../pages/gabinete-digital/expediente-modal/expediente-modal.module').then( m => m.ExpedienteModalPageModule) + } + ]; @NgModule({ diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.html b/src/app/pages/gabinete-digital/gabinete-digital.page.html index bb86d2958..3a9050b3b 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.html +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.html @@ -1,6 +1,6 @@ - Gbinete Digital + Gabinete Digital @@ -11,15 +11,15 @@ Correspondência - 1 + {{ count_exp_dailywork }} Pedidos de parecer - 1 + {{count_exp_pp}} Pedidos de deferimento - 1 + {{count_exp_pd}} @@ -30,11 +30,11 @@ Assinados pelo PR - 1 + {{count_dip_apr}} Por validar (MDGPR) - 1 + {{count_dip_pv}} @@ -45,7 +45,7 @@ Presidente da República - 1 + {{count_de_pr}} diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.ts b/src/app/pages/gabinete-digital/gabinete-digital.page.ts index 5b57d28b1..5920edacd 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.ts @@ -1,4 +1,5 @@ import { Component, OnInit } from '@angular/core'; +import { ProcessesService } from 'src/app/services/processes.service'; @Component({ selector: 'app-gabinete-digital', @@ -9,13 +10,30 @@ export class GabineteDigitalPage implements OnInit { segment:string; - constructor() { } + constructor(private processesbackend:ProcessesService) { } + + count_exp_dailywork : number; + count_exp_pp : string; + count_exp_pd : string; + count_dip_apr : string; + count_dip_pv : string; + count_de_pr : string; ngOnInit() { + this.LoadCounts(); } load(){ } + LoadCounts() { + this.count_exp_dailywork = this.processesbackend.GetDailyWorkCount(); + this.count_exp_pp = "-"; + this.count_exp_pd = "-"; + this.count_dip_apr = "-"; + this.count_dip_pv = "-"; + this.count_de_pr = "-"; + } + } diff --git a/src/app/pages/login/login.page.html b/src/app/pages/login/login.page.html index 70333da08..cb5952a1c 100644 --- a/src/app/pages/login/login.page.html +++ b/src/app/pages/login/login.page.html @@ -3,23 +3,18 @@ -

Iniciar a sessão

+

Inicie a sessão

- Username ou email - + Nome de utilizador + Palavra-passe - - - - Domínio - - - - Entrar + + + Iniciar
diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts index 549466a8a..35ec0dd87 100644 --- a/src/app/pages/login/login.page.ts +++ b/src/app/pages/login/login.page.ts @@ -1,9 +1,8 @@ import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { AuthService } from 'src/app/services/auth.service'; -import { StorageService } from 'src/app/services/storage.service'; -import { AuthConnstants } from 'src/app/config/auth-constants'; -import { ToastController } from '@ionic/angular'; +import { User } from 'src/app/models/user.model'; + @Component({ selector: 'app-login', @@ -13,93 +12,43 @@ import { ToastController } from '@ionic/angular'; export class LoginPage implements OnInit { logstatus: boolean; - - /* Declare variables */ - public postData = { - username: '', - password: '', - domainName: '' - } + username: string = ""; + password: string = ""; + userattempt: User; constructor( private router: Router, - private authService: AuthService, - private storageService: StorageService, - toastController: ToastController - ) { } + private authService: AuthService) { } ngOnInit() { - /* console.log(this.authService.validateLogin()); */ - /* this.authService.login(this.postData); */ + } /* Function to validade the login inputs */ validateInput(){ - let username = this.postData.username.trim(); - let password = this.postData.password.trim(); - let domainName = this.postData.domainName.trim(); + this.userattempt = { + username: this.username, + password: this.password, + domainName: "", + BasicAuthKey: "" + } return ( - this.postData.username && - this.postData.password && - username.length > 0 - && password.length > 0 + this.username.trim().length > 0 + && this.password.trim().length > 0 ); } - loginRequest(){ - /* axios.get('https://gpr-dev-08.gabinetedigital.local/api/v2.0/me/calendarview?startDateTime=2014-10-01T01:00:00&endDateTime=2020-10-31T23:00:00') - .then(response => { - console.log(response.data.url); - console.log(response.data.explanation); - }) - .catch(error => { - console.log(error); - }); */ - - } - - loginAction(){/* - if(this.validateInput()){ - //Try to login - this.authService.login(this.postData).subscribe((res: any)=> { - //userData must be in the API results as paratemers otherwise change to the param that is in the API - if(res.userData){ - //Then we store this information at the staorage service - this.storageService.store(AuthConnstants.AUTH, res.userData); - //Then go to home view - this.router.navigate(['home']); - } - else{ - console.log("Os dados inseridos são inválidos"); - } - }, - ///Write a connection error - (error: any)=>{ - console.log("Erro de conexão com a API."); - } - ); - } - else{ - //Display an error message - console.log("Preencha todos campos"); - }*/ - } - - async simpleLogin(){ + async Login(){ //Go to our home in home/feed. - if(this.validateInput()){ - this.router.navigate(['/home/events']); - - /* if (await this.authService.login(this.postData)) + if (await this.authService.login(this.userattempt)) { - this.router.navigate(['/home/feed']); - console.log(this.postData); + this.router.navigate(['/home/events']); } else { console.log("Não foi possível fazer login"); - } */ + } } else{ console.log("Preencha todos campos"); diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 2692a9e09..032e4c11e 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -2,10 +2,10 @@ import { Injectable } from '@angular/core'; import { StorageService } from './storage.service'; import { HttpService } from './http.service'; import { Router } from '@angular/router'; -import { Observable } from 'rxjs'; import { AuthConnstants } from '../config/auth-constants'; -import axios from "axios"; import { HttpClient } from '@angular/common/http'; +import { User } from '../models/user.model'; +import { environment } from 'src/environments/environment'; @Injectable({ providedIn: 'root' @@ -15,70 +15,38 @@ export class AuthService { constructor( - private httpService: HttpService, private storageService: StorageService, private router: Router, private http: HttpClient ) { } - async login(postData: any): Promise { + public ValidatedUser:User; - var session_url = 'https://gpr-dev-08.gabinetedigital.local/api/v2.0/me'; - var credentials = btoa(postData.domainName + '\\' + postData.username + ':' + postData.password); //conversão em base64 das credenciais inseridas - var statusresult = -1; + async login(user: User): Promise { + user.domainName = environment.domain; + user.BasicAuthKey = 'Basic ' + btoa(user.domainName + '\\' + user.username + ':' + user.password); //conversão em base64 das credenciais inseridas - //configuração dos headers para autênticação básica, passando as credenciais convertidas em base64 - var config = { - headers: { - 'Authorization': 'Basic ' + credentials, - }, - }; - - await axios.get(session_url, config) - .then(function (response) { - statusresult = response.status; - }) - .catch(function (error) { - if (error.response) { - statusresult = error.response.status; - } - }); - - if (statusresult == 200) - { - return true; - } - else - if (statusresult == 401) - { - return false; - } - else - { - return false; - } + const options = { headers: {'Authorization': user.BasicAuthKey }}; + const service = environment.apiURL + "userauthentication/GetValidateAuth"; + + let result: boolean | PromiseLike; + + try { + result = await this.http.get(service, options).toPromise(); + } catch(e) { + console.log(e); + result = false; + } + + if (result) + { + this.ValidatedUser = user; + } + + return result; } - - /* logout(){ - this.storageService.removeStorageItem(AuthConnstants.AUTH).then(res =>{ - this.router.navigate(['']) - }) - - } */ - validateLogin(){ - const options = { headers: {'Authorization': 'Basic cGF1bG8ucGludG86dGFidGVzdGVAMDA2'}}; - const url = 'http://gpr-dev-01.gabinetedigital.local/GabineteDigital.Services/api/calendar/ValidateAuth'; - /* return this.http.get(`${url}`, options); */ - axios.get(url, options) - .then(resp => { - if(resp.data) - console.log(resp.data); - }) - .catch(err => { - // Handle Error Here - console.error(err); - }); + logout(){ + this.ValidatedUser = null; } - } diff --git a/src/app/services/events.service.ts b/src/app/services/events.service.ts index a798f4d2e..b206ac223 100644 --- a/src/app/services/events.service.ts +++ b/src/app/services/events.service.ts @@ -4,8 +4,11 @@ import { Event } from '../models/event.model'; import axios from 'axios' import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; - - +import { environment } from 'src/environments/environment'; +import { stringify } from 'querystring'; +import { AuthService } from '../services/auth.service'; +import { User } from '../models/user.model'; +import { CalModalPageRoutingModule } from '../pages/cal-modal/cal-modal-routing.module'; @Injectable({ providedIn: 'root' @@ -56,18 +59,31 @@ export class EventsService { Attachments: null, } ]; + options = {}; + loggeduser: User; - url = 'http://gpr-dev-01.gabinetedigital.local/GabineteDigital.Services/api/calendar/GetEvents?StartDate=2020-08-14 00:00:00&EndDate=2020-08-19 23:59:00&CalendarName=Pessoal'; - options = { headers: {'Authorization': 'Basic cGF1bG8ucGludG86dGFidGVzdGVAMDA2'}}; - - constructor(private http: HttpClient) { } + constructor(private http: HttpClient, private user: AuthService) { + this.loggeduser = user.ValidatedUser; + this.options = { headers: {'Authorization': this.loggeduser.BasicAuthKey}}; + } allEvents(): Observable{ - return this.http.get(`${this.url}`, this.options) + console.log(this.loggeduser); + const geturl = environment.apiURL + 'calendar/GetEvents?StartDate=2020-08-14 00:00:00&EndDate=2020-08-19 23:59:00&CalendarName=Pessoal'; + + return this.http.get(`${geturl}`, this.options) } getEvent(ev: string): Observable{ - const url = 'http://gpr-dev-01.gabinetedigital.local/GabineteDigital.Services/api/calendar/GetEvent?EventId='; - return this.http.get(`${url + ev}`, this.options) + const geturl = environment.apiURL + 'calendar/GetEvent?EventId='; + + return this.http.get(`${geturl + ev}`, this.options) + } + + PutEvent(event: Event): Observable + { + const puturl = environment.apiURL +'calendar/PutEvent?conflictResolutionMode=2&sendInvitationsOrCancellationsMode=3'; + + return this.http.put(`${puturl}`, event,this.options) } AddEvent(postEvent: any){ diff --git a/src/app/services/processes.service.spec.ts b/src/app/services/processes.service.spec.ts new file mode 100644 index 000000000..33c5cc2ee --- /dev/null +++ b/src/app/services/processes.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ProcessesService } from './processes.service'; + +describe('ProcessesService', () => { + let service: ProcessesService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ProcessesService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/processes.service.ts b/src/app/services/processes.service.ts new file mode 100644 index 000000000..64577e128 --- /dev/null +++ b/src/app/services/processes.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; + +import { DailyWorkTask } from '../models/dailyworktask.model'; + +@Injectable({ + providedIn: 'root' +}) +export class ProcessesService { + + constructor() { } + + GetDailyWorkCount() + { + return 100; + } + + private tasks: DailyWorkTask[] = [ + { + SerialNumber: "1", + Folio: "Teste 1", + Senders: "MINEC, MINPLAN, MINFIN", + CreateDate: "2020-08-18" + }, + { + SerialNumber: "2", + Folio: "Teste 2", + Senders: "MINFIN", + CreateDate: "2020-08-19" + },{ + SerialNumber: "3", + Folio: "Teste 3", + Senders: "MINEC", + CreateDate: "2020-08-20" + } + ]; + + GetDailyWorkTasks() + { + return this.tasks; + } + + GetTaskDetail(serialnumber:string) + { + console.log(serialnumber); + return this.tasks.find(t => t.SerialNumber = serialnumber); + } + +} diff --git a/src/environments/environment.ts b/src/environments/environment.ts index a070b4d86..604060ab7 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -4,7 +4,8 @@ export const environment = { production: false, - apiURL: '' + apiURL: 'http://gpr-dev-01.gabinetedigital.local/GabineteDigital.Services/v1/api/', + domain: 'gabinetedigital.local' }; /*