From ffadf6601c01aafef87681f2639ee67b40648444 Mon Sep 17 00:00:00 2001 From: Paulo Pinto Date: Fri, 21 Aug 2020 16:18:37 +0100 Subject: [PATCH] New Services, New Login, Better things --- src/app/home/home.page.html | 4 +- src/app/models/dailyworktask.model.ts | 3 +- src/app/models/event.model.ts | 10 +- src/app/models/eventattachment.model.ts | 22 ++- src/app/models/eventbody.model.ts | 4 +- src/app/models/eventperson.model.ts | 2 +- src/app/models/organizer.model.ts | 2 +- src/app/models/user.model.ts | 8 +- src/app/pages/agenda/agenda.page.ts | 2 +- src/app/pages/cal-modal/cal-modal.page.html | 27 ++- src/app/pages/cal-modal/cal-modal.page.ts | 37 +--- .../events/event-detail/event-detail.page.ts | 6 +- src/app/pages/events/events.page.html | 20 +- src/app/pages/events/events.page.ts | 82 ++++---- src/app/services/events.service.ts | 186 +++++++----------- 15 files changed, 177 insertions(+), 238 deletions(-) diff --git a/src/app/home/home.page.html b/src/app/home/home.page.html index 181d75a1c..55b3fb3cc 100644 --- a/src/app/home/home.page.html +++ b/src/app/home/home.page.html @@ -13,10 +13,10 @@ Gabinete Digital - + diff --git a/src/app/models/dailyworktask.model.ts b/src/app/models/dailyworktask.model.ts index ca7b35ae8..752d87894 100644 --- a/src/app/models/dailyworktask.model.ts +++ b/src/app/models/dailyworktask.model.ts @@ -1,5 +1,4 @@ -export interface DailyWorkTask{ - +export class DailyWorkTask{ SerialNumber: string; Folio: string; Senders: string; diff --git a/src/app/models/event.model.ts b/src/app/models/event.model.ts index 6a4e16585..8d6b9530b 100644 --- a/src/app/models/event.model.ts +++ b/src/app/models/event.model.ts @@ -3,7 +3,7 @@ import { EventPerson } from './eventperson.model'; import { EventAttachment } from './eventattachment.model'; import { EventOrganizer } from './organizer.model'; -export interface Event{ +export class Event{ EventId: string; Subject: string; @@ -14,15 +14,13 @@ export interface Event{ StartDate: string; EndDate: string; EventType: string; - RequiredAttendees: EventPerson; - OptionalAttendees: EventPerson; - HasAttachments: boolean; + RequiredAttendees: EventPerson[]; + OptionalAttendees: EventPerson[]; IsMeeting: boolean; IsRecurring: boolean; AppointmentState: number; TimeZone: string; Organizer: string; Categories: string[]; - Attachments: EventAttachment; - + Attachments: EventAttachment[]; } \ No newline at end of file diff --git a/src/app/models/eventattachment.model.ts b/src/app/models/eventattachment.model.ts index 7cee66df2..7b9621551 100644 --- a/src/app/models/eventattachment.model.ts +++ b/src/app/models/eventattachment.model.ts @@ -1,8 +1,16 @@ -export interface EventAttachment{ - Name: string; - OwnerId: string; - Subject: string; - Location: string; - ExternalEntities: string; - CreatedIn: string; +export class EventAttachment{ + Id: number; + ParentId: string; + Sources: Sources; + SourceId: string; + Data: any; +} + +enum Sources +{ + Unknow = 0, + webTRIX = 1, + K2 = 2, + Exchange = 3, + File = 4 } \ No newline at end of file diff --git a/src/app/models/eventbody.model.ts b/src/app/models/eventbody.model.ts index f4a552f8e..63a291f85 100644 --- a/src/app/models/eventbody.model.ts +++ b/src/app/models/eventbody.model.ts @@ -1,4 +1,4 @@ -export interface EventBody{ - bodyType: string; +export class EventBody{ + BodyType: string; Text: string; } \ No newline at end of file diff --git a/src/app/models/eventperson.model.ts b/src/app/models/eventperson.model.ts index 6ef8e0ac5..8c4be9d77 100644 --- a/src/app/models/eventperson.model.ts +++ b/src/app/models/eventperson.model.ts @@ -1,4 +1,4 @@ -export interface EventPerson{ +export class EventPerson{ EmailAddress: string; Name: string; } \ No newline at end of file diff --git a/src/app/models/organizer.model.ts b/src/app/models/organizer.model.ts index 999bce33b..96d01129e 100644 --- a/src/app/models/organizer.model.ts +++ b/src/app/models/organizer.model.ts @@ -1,4 +1,4 @@ -export interface EventOrganizer{ +export class EventOrganizer{ EmailAddress: string; Text: string; } \ No newline at end of file diff --git a/src/app/models/user.model.ts b/src/app/models/user.model.ts index 2755574a0..a4bcde816 100644 --- a/src/app/models/user.model.ts +++ b/src/app/models/user.model.ts @@ -1,6 +1,6 @@ -export interface User { - username: string, - password: string, - domainName: string, +export class User { + username: string; + password: string; + domainName: string; BasicAuthKey: string } \ No newline at end of file diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index a34e7affd..37e56967d 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -210,7 +210,7 @@ export class AgendaPage implements OnInit { console.log(test); const defaultEndDate = new Date(); - await this.eventService.allEvents().subscribe( + await this.eventService.getAllEvents("2020-01-01","2020-12-31").subscribe( response => { this.eventsList = response; diff --git a/src/app/pages/cal-modal/cal-modal.page.html b/src/app/pages/cal-modal/cal-modal.page.html index fb2f1209c..a372980ad 100644 --- a/src/app/pages/cal-modal/cal-modal.page.html +++ b/src/app/pages/cal-modal/cal-modal.page.html @@ -13,21 +13,21 @@
Assunto - + Descrição - + Localização - + - + + + + Selecione o calendário + + Pessoal + Oficial + + Selecione o tipo de evento @@ -61,7 +68,7 @@ displayFormat="D MMM YYYY H:mm" monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"> -
+
diff --git a/src/app/pages/cal-modal/cal-modal.page.ts b/src/app/pages/cal-modal/cal-modal.page.ts index 964ab7afc..7e51de718 100644 --- a/src/app/pages/cal-modal/cal-modal.page.ts +++ b/src/app/pages/cal-modal/cal-modal.page.ts @@ -3,6 +3,7 @@ import { ModalController } from '@ionic/angular'; import { Event } from '../../models/event.model'; import { EventsService } from 'src/app/services/events.service'; +import { EventBody } from 'src/app/models/eventbody.model'; @Component({ selector: 'app-cal-modal', @@ -17,32 +18,13 @@ export class CalModalPage implements AfterViewInit { }; viewTitle: string; - - public postEvent: Event = { - EventId: '', - Subject: '', - Body: null, - Location: '', - CalendarId: '', - CalendarName: '', - StartDate: '', - EndDate: '', - EventType: '', - RequiredAttendees: null, - OptionalAttendees: null, - HasAttachments: false, - IsMeeting: false, - IsRecurring: false, - AppointmentState: 0, - TimeZone: '', - Organizer: '', - Categories: null, - Attachments: null, - }; - + postEvent: Event; modalReady = false; - constructor(private modalCtrl: ModalController, private eventService: EventsService) { } + constructor(private modalCtrl: ModalController, private eventService: EventsService) { + this.postEvent = new Event(); + this.postEvent.Body = { BodyType : "1", Text : ""}; + } ngOnInit() { } @@ -54,11 +36,8 @@ export class CalModalPage implements AfterViewInit { } save(){ - this.modalCtrl.dismiss({postEvent: this.eventService.AddEvent(this.postEvent)}); - /* this.eventService.AddEvent(); */ - console.log("created"); - - + this.eventService.postEvent(this.postEvent, this.postEvent.CalendarName).subscribe(); + this.modalCtrl.dismiss(); } onViewTitleChanged(title){ 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 be49cf7b0..164f6623b 100644 --- a/src/app/pages/events/event-detail/event-detail.page.ts +++ b/src/app/pages/events/event-detail/event-detail.page.ts @@ -15,7 +15,9 @@ export class EventDetailPage implements OnInit { loadedEvent: Event; eventItem: Observable; - constructor(private activatedRoute: ActivatedRoute, private eventsService: EventsService) { } + constructor(private activatedRoute: ActivatedRoute, private eventsService: EventsService) { + this.loadedEvent = new Event(); + } ngOnInit() { /* Emit new data when something changes */ @@ -38,7 +40,7 @@ export class EventDetailPage implements OnInit { Save() { - this.eventsService.PutEvent(this.loadedEvent).subscribe(response => + this.eventsService.putEvent(this.loadedEvent, 2, 3).subscribe(response => { this.loadedEvent = response; }); diff --git a/src/app/pages/events/events.page.html b/src/app/pages/events/events.page.html index 66be491cf..c95ad68cd 100644 --- a/src/app/pages/events/events.page.html +++ b/src/app/pages/events/events.page.html @@ -13,7 +13,7 @@

{{greetting}} Sua Excelência
- Minístro Director do Gabinete do
+ Ministro Director do Gabinete do
Presidente da República

{{customDate}}

@@ -41,11 +41,10 @@
- - +
@@ -77,12 +76,12 @@ - + - +
diff --git a/src/app/pages/events/events.page.ts b/src/app/pages/events/events.page.ts index 3a9765ef2..b4c079848 100644 --- a/src/app/pages/events/events.page.ts +++ b/src/app/pages/events/events.page.ts @@ -1,10 +1,10 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, LOCALE_ID } from '@angular/core'; import { Event } from '../../models/event.model'; import { EventsService } from 'src/app/services/events.service'; import { Router } from '@angular/router'; import { ActivatedRoute } from '@angular/router'; -import { Observable } from 'rxjs'; +import { formatDate } from '@angular/common'; @Component({ @@ -13,52 +13,54 @@ import { Observable } from 'rxjs'; styleUrls: ['./events.page.scss'], }) export class EventsPage implements OnInit { + /* Get current system date */ + today = new Date(); + + 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"]; - /* Get current system date */ - today = new Date(); - 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 = this.days[this.today.getDay()]+ ", " - + this.today.getDate() +" de " - + ( this.months[this.today.getMonth()]); - /* Setting appropriate greeting according to the time */ - grettings = ["Bom dia", "Boa tarde", "Boa noite"]; - greetting=''; -timeDate = this.today.getHours() + ":" + this.today.getMinutes(); -/* Set segment variable */ - segment:string; + customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]); - events: Event[]; - eventsList: Observable; + /* Setting appropriate greeting according to the time */ + grettings = ["Bom dia", "Boa tarde", "Boa noite"]; + greetting=''; - constructor(private eventService: EventsService, private router: Router, public activatedRoute: ActivatedRoute) { } + timeDate = this.today.getHours() + ":" + this.today.getMinutes(); + /* Set segment variable */ + segment:string; - ngOnInit() { - //Inicializar segment - this.segment = "combinada"; - this.showGreeting(); - /* Call Get events method */ - this.eventsList = this.eventService.allEvents();/* .subscribe(prods=>console.log(prods)); */ - } + eventsList: Event[]; - showGreeting(){ - if(this.today.getHours() >= 6 && this.today.getHours() < 12){ - console.log(this.grettings[0]+this.today.getHours()); - this.greetting = this.grettings[0]; + constructor(private eventService: EventsService, private router: Router, public activatedRoute: ActivatedRoute) { } + + ngOnInit() { + //Inicializar segment + this.segment = "combinada"; + this.showGreeting(); + + /* Call Get events method */ + this.eventService.getAllEvents(formatDate(new Date(), 'yyyy-MM-dd', 'pt') + ' 00:00:00', formatDate(new Date(), 'yyyy-MM-dd', 'pt') + ' 23:59:59') + .subscribe(response => { + this.eventsList = response; + } + ); } - else if(this.today.getHours() >= 12 && this.today.getHours() < 18){ - console.log(this.grettings[1]+this.today.getHours()); - this.greetting = this.grettings[1]; - } - else /* if(this.today.getHours() < 6 && this.today.getHours() >= 18) */{ - console.log(this.grettings[2]+this.today.getHours()); - this.greetting = this.grettings[2]; + showGreeting(){ + if(this.today.getHours() >= 6 && this.today.getHours() < 12){ + this.greetting = this.grettings[0]; + } + else if(this.today.getHours() >= 12 && this.today.getHours() < 18){ + this.greetting = this.grettings[1]; + } + else /* if(this.today.getHours() < 6 && this.today.getHours() >= 18) */{ + this.greetting = this.grettings[2]; + } + } + + gotTo(){ + this.router.navigate(['/home/events']); } -} -gotTo(ev){ - this.router.navigate(['/home/events']); -} } diff --git a/src/app/services/events.service.ts b/src/app/services/events.service.ts index b206ac223..cd069fb02 100644 --- a/src/app/services/events.service.ts +++ b/src/app/services/events.service.ts @@ -2,141 +2,87 @@ import { Injectable } from '@angular/core'; import { Event } from '../models/event.model'; import axios from 'axios' -import { HttpClient } from '@angular/common/http'; +import { HttpClient, HttpHeaders, HttpParams } 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' }) export class EventsService { - /* Set events */ - private events: Event[] = [ - { - EventId: '1', - Subject: 'Reunião do Conselho de Ministros', - Body: null, - Location: 'Luanda, Palácio presidencial', - CalendarId: '', - CalendarName: 'pessoal', - StartDate: '10:30', - EndDate: '11:00', - EventType: '', - RequiredAttendees: null, - OptionalAttendees: null, - HasAttachments: false, - IsMeeting: false, - IsRecurring: false, - AppointmentState: 0, - TimeZone: '', - Organizer: '', - Categories: null, - Attachments: null, - }, - { - EventId: '2', - Subject: 'Conference call Particular', - Body: null, - Location: 'Luanda, Palácio presidencial', - CalendarId: '', - CalendarName: 'pessoal', - StartDate: '10:30', - EndDate: '11:00', - EventType: '', - RequiredAttendees: null, - OptionalAttendees: null, - HasAttachments: false, - IsMeeting: false, - IsRecurring: false, - AppointmentState: 0, - TimeZone: '', - Organizer: '', - Categories: null, - Attachments: null, - } -]; - options = {}; + + authheader = {}; loggeduser: User; + headers: HttpHeaders; - constructor(private http: HttpClient, private user: AuthService) { + constructor(private http: HttpClient, user: AuthService) { this.loggeduser = user.ValidatedUser; - this.options = { headers: {'Authorization': this.loggeduser.BasicAuthKey}}; + this.headers = new HttpHeaders(); + this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); } - allEvents(): Observable{ - 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'; + getAllEvents(startdate:string, enddate:string): Observable{ + const geturl = environment.apiURL + 'calendar/GetAllEvents'; + let params = new HttpParams(); + + params = params.set("StartDate", startdate); + params = params.set("EndDate", enddate); - return this.http.get(`${geturl}`, this.options) - } - getEvent(ev: string): Observable{ - 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){ - const url = 'http://gpr-dev-01.gabinetedigital.local/GabineteDigital.Services/api/calendar/PostEvent'; - const mydata = JSON.stringify({ - "AppointmentState":1, - "Body":{"BodyType":1,"Text":"Noooooo"}, - "CalendarId":"AAMkAGMwNTJiZDY2LTZjN2MtNDgzYS1hNzAzLTZhZWRhNTk3ZWNiMAAuAAAAAABgX8u97PeNQrYTHXctnZkcAQB4Hy3hTowgSI7Yp8YAVgKKAAACCd9zAAA=", - "EndDate":"8/16/2020 6:00:00 PM", - "EventType":"Single","HasAttachments":false, - "IsMeeting":true,"IsRecurring":false, - "Location":postEvent.Location, - "OptionalAttendees":null, - "Organizer":{"EmailAddress":"paulo.pinto@gabinetedigital.local","Name":"Paulo Pinto"}, - "RequiredAttendees":[{"EmailAddress":"Administrator@gabinetedigital.local","Name":"Administrator"},{"EmailAddress":"tiago.kayaya@gabinetedigital.local","Name":"Tiago Kayaya"}], - "StartDate":"8/14/2020 5:30:00 PM", - "Subject":postEvent.Subject, - "TimeZone":"(UTC+01:00) Centro-Oeste da África"}); - /* const options = { - method: 'post', - url: 'url', - headears: { - 'Authorization': 'Basic Z2FiaW5ldGVkaWdpdGFsLmxvY2FsXHBhdWxvLnBpbnRvOnRhYnRlc3RlQDAwNg==', - 'Content-Type': 'application/json' - }, - data: data - } */ - console.log(postEvent.Subject); - axios({ - method: 'post', - url: url, - data: mydata, - headers: {'Authorization': 'Basic Z2FiaW5ldGVkaWdpdGFsLmxvY2FsXHBhdWxvLnBpbnRvOnRhYnRlc3RlQDAwNg==', - 'Content-Type': 'application/json' } - }) - .then(function (response) { - //handle success - console.log(response); - }) - .catch(function (response) { - //handle error - console.log(response); - }); - } - - getStaticEvent(eventId: string){ - return { - // The find() function looks for an event in a array and return true if found - ...this.events.find(event => { - //Compare if the event found is the same as the event passed in as parameter - return event.EventId === eventId; - }) + let options = { + headers: this.headers, + params: params }; + + console.log(options); + + return this.http.get(`${geturl}`, options); + } + + getEvent(eventid: string): Observable{ + const geturl = environment.apiURL + 'calendar/GetEvent'; + let params = new HttpParams(); + + params = params.set("EventId", eventid); + + let options = { + headers: this.headers, + params: params + }; + + return this.http.get(`${geturl}`, options) + } + + putEvent(event: Event, conflictResolutionMode:number, sendInvitationsOrCancellationsMode:number): Observable + { + const puturl = environment.apiURL + 'calendar/PutEvent'; + + let params: HttpParams; + + params.append("conflictResolutionMode", conflictResolutionMode.toString()); + params.append("sendInvitationsOrCancellationsMode", sendInvitationsOrCancellationsMode.toString()); + + let options = { + headers: this.headers, + params: params + }; + + return this.http.put(`${puturl}`, event, options) + } + + postEvent(event:Event, calendarName:string) + { + const puturl = environment.apiURL + 'calendar/PostEvent'; + let params = new HttpParams(); + + params = params.set("CalendarName", calendarName); + + let options = { + headers: this.headers, + params: params + }; + + return this.http.post(`${puturl}`, event, options) } - }