import { Injectable } from '@angular/core'; import { environment } from 'src/environments/environment'; import { HttpServiceService } from 'src/app/services/http/http-service.service'; import { Observable} from 'rxjs'; import { CreateEvent, EditEvent, EventDetailsDTO, EventsDTO, IuploadFileLK, refreshTokenDTO } from "./interface"; import { HttpClient, HttpEvent, HttpHeaders, HttpParams } from '@angular/common/http'; import { DetectCalendars, makeHeaderForCalendar } from '../../utils/utils'; import { z } from "zod"; import { ok, err } from 'neverthrow'; import { SessionStore } from 'src/app/store/session.service'; /* import { ok, err } from 'neverthrow'; */ @Injectable({ providedIn: 'root' }) export class MiddlewareServiceService { constructor( private HttpServiceService: HttpServiceService, private http: HttpClient, ) { window["MiddlewareServiceService"] = this } refreshToken(refreshToken: string){ const data = { refreshToken: refreshToken } return this.HttpServiceService.put(environment.apiURL + "UserAuthentication/RefreshToken", data, {}) // .pipe( // map((response: HttpResponse) => { // return response.body // }) // ); } // ================================ Calendar ================================================= GetEvents(startDate: string, endDate: string, calendarId): Observable { let geturl = environment.apiURL + 'calendar/GetEvents'; geturl = geturl.replace('/V4/', '/V5/') let params = new HttpParams(); params = params.set("StartDate", startDate); params = params.set("EndDate", endDate); const calendar = DetectCalendars(calendarId) const header = makeHeaderForCalendar(calendar) let options = { headers: header, params: params }; // return this.HttpServiceService.get(`${geturl}`, options); return {} as any } GetEventDetail(eventId: string, calendarId: string) { let geturl = environment.apiURL + 'calendar/GetEvent'; let params = new HttpParams(); params = params.set("EventId", eventId); const calendar = DetectCalendars(calendarId) const header = makeHeaderForCalendar(calendar) let options = { headers: header, params: params } return this.HttpServiceService.get(`${geturl}`, options); } createEvent(event: CreateEvent, calendarName: string, CalendarId) { const puturl = environment.apiURL + 'Calendar/PostEvent'; let params = new HttpParams(); if(!event.TimeZone) { const now = new Date(); event.TimeZone = event.TimeZone = now.toString().match(/([A-Z]+[\+-][0-9]+.*)/)[1]; } if(!event.Organizer) { event.Organizer = { "Id": SessionStore.user.UserId, "EmailAddress": SessionStore.user.Email, "Name": SessionStore.user.UserName, "IsRequired": true, "UserType": "GD" } } params = params.set("CalendarName", calendarName); params = params.set("notifyUsers", true) let options: any; const calendar = DetectCalendars(CalendarId) const header = makeHeaderForCalendar(calendar) options = { headers: header, params: params }; return this.HttpServiceService.post(`${puturl}`, event, options) } editEvent(event: EditEvent, conflictResolutionMode: number, sendInvitationsOrCancellationsMode: number, CalendarId? ) { let options: any; const calendar = DetectCalendars(CalendarId) const header = makeHeaderForCalendar(calendar) let params = new HttpParams(); params = params.set("conflictResolutionMode", conflictResolutionMode.toString()); params = params.set("sendInvitationsOrCancellationsMode", sendInvitationsOrCancellationsMode.toString()); params.set('CalendarId', event.CalendarId) params.set('CalendarName', event.CalendarName) options = { headers: header, params: params }; const putUrl = environment.apiURL + 'calendar/PutEvent'; return this.HttpServiceService.put(`${putUrl}`, event, options); } // ================================ Acções ================================================= // ========== LKFRT uploadFileLK(formData: FormData) { const headers = new HttpHeaders(); headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); //const geturl = environment.apiURL + 'Tasks/DelegateTask'; const geturl = environment.apiURL + 'ObjectServer/UploadFiles'; let options = { headers: headers }; return this.http.post(`${geturl}`, formData, options) } // =========================================================================== CMAPIFileContent({length, path, index, blobFile}) { const headers = new HttpHeaders(); headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); //const geturl = environment.apiURL + 'Tasks/DelegateTask'; const geturl = environment.apiURL + 'ObjectServer/UploadFiles'; let options = { headers: headers }; const formData = new FormData(); formData.append("blobFile", blobFile); formData.append("length", length); formData.append("index", index.toString()); formData.append("path", path); return this.http.post(`${geturl}`, formData, options) } }