mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
improve api interface
This commit is contained in:
+128
-1
@@ -4,7 +4,7 @@ export interface refreshTokenDTO {
|
||||
refreshToken: null
|
||||
}
|
||||
|
||||
|
||||
// ===========================================================
|
||||
export interface EventsDTO {
|
||||
HasAttachments: boolean
|
||||
IsAllDayEvent: boolean
|
||||
@@ -23,6 +23,7 @@ export interface EventsDTO {
|
||||
IsPrivate: boolean
|
||||
}
|
||||
|
||||
// ===========================================================
|
||||
|
||||
export interface EventDetailsDTO {
|
||||
HasAttachments: boolean
|
||||
@@ -101,3 +102,129 @@ interface EventDetailsAttachment {
|
||||
ApplicationId: number
|
||||
FileSize: number
|
||||
}
|
||||
// ===========================================================
|
||||
|
||||
|
||||
// =================================================== Post ===========================================
|
||||
|
||||
export interface CreateEvent {
|
||||
EventId: string;
|
||||
Subject: string;
|
||||
Body: {
|
||||
BodyType: string;
|
||||
Text: string;
|
||||
};
|
||||
Location: string;
|
||||
CalendarId: string;
|
||||
CalendarName: string;
|
||||
StartDate: string;
|
||||
EndDate: string;
|
||||
EventType: string;
|
||||
Attendees: CreateAttendee[];
|
||||
IsMeeting: boolean;
|
||||
IsRecurring: boolean;
|
||||
AppointmentState: number;
|
||||
TimeZone: string;
|
||||
Organizer?: CreateOrganizer;
|
||||
Category: string;
|
||||
HasAttachments: boolean;
|
||||
EventRecurrence: {
|
||||
Type: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface CreateAttendee {
|
||||
Id: number;
|
||||
EmailAddress: string;
|
||||
Name: string;
|
||||
IsRequired: boolean;
|
||||
UserType: string;
|
||||
IsPR: boolean;
|
||||
Entity: string;
|
||||
Acknowledgment: boolean;
|
||||
RoleDescription: string;
|
||||
}
|
||||
|
||||
interface CreateOrganizer {
|
||||
Id: number;
|
||||
EmailAddress: string;
|
||||
Name: string;
|
||||
IsRequired: boolean;
|
||||
UserType: string;
|
||||
}
|
||||
// ================================================ PUT =============================================
|
||||
|
||||
|
||||
export interface EditEvent {
|
||||
HasAttachments: boolean;
|
||||
EventComunicationId: number;
|
||||
EventId: string;
|
||||
Subject: string;
|
||||
Body: {
|
||||
BodyType: number;
|
||||
Text: string;
|
||||
};
|
||||
Location: string;
|
||||
CalendarId: string;
|
||||
CalendarName: string;
|
||||
StartDate: string;
|
||||
EndDate: string;
|
||||
EventType: string;
|
||||
Attendees: Attendee[];
|
||||
IsMeeting: boolean;
|
||||
IsRecurring: boolean;
|
||||
IsAllDayEvent: boolean;
|
||||
AppointmentState: number;
|
||||
TimeZone: string;
|
||||
Organizer: Organizer;
|
||||
InstanceId: null | string;
|
||||
Category: string;
|
||||
EventRecurrence: {
|
||||
Type: string;
|
||||
Day: null | string;
|
||||
DayOfWeek: null | string;
|
||||
Month: null | string;
|
||||
LastOccurrence: null | string;
|
||||
};
|
||||
Attachments: Attachment[];
|
||||
IsPrivate: boolean;
|
||||
}
|
||||
|
||||
interface Attendee {
|
||||
Id: number;
|
||||
EmailAddress: string;
|
||||
Name: string;
|
||||
IsRequired: boolean;
|
||||
UserType: string;
|
||||
IsPR: boolean;
|
||||
Entity: null | string;
|
||||
Acknowledgment: boolean;
|
||||
RoleDescription: null | string;
|
||||
}
|
||||
|
||||
interface Organizer {
|
||||
Id: number;
|
||||
EmailAddress: string;
|
||||
Name: string;
|
||||
IsRequired: boolean;
|
||||
UserType: null | string;
|
||||
IsPR: boolean;
|
||||
Entity: null | string;
|
||||
Acknowledgment: boolean;
|
||||
RoleDescription: null | string;
|
||||
}
|
||||
|
||||
interface Attachment {
|
||||
Id: number;
|
||||
ParentId: string;
|
||||
Source: number;
|
||||
SourceId: string;
|
||||
Description: string;
|
||||
SourceName: string;
|
||||
CreateDate: string;
|
||||
Stakeholders: string;
|
||||
Link: string;
|
||||
Data: null | string;
|
||||
ApplicationId: number;
|
||||
FileSize: number;
|
||||
}
|
||||
|
||||
@@ -2,14 +2,12 @@ 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 { EventsDTO, refreshTokenDTO } from "./interface";
|
||||
import { CreateEvent, EditEvent, EventDetailsDTO, EventsDTO, refreshTokenDTO } from "./interface";
|
||||
import { HttpParams } from '@angular/common/http';
|
||||
import { DetectCalendars, makeHeaderForCalendar } from '../../utils/utils';
|
||||
import { z } from "zod";
|
||||
import { ok, err } from 'neverthrow';
|
||||
|
||||
// let a = z
|
||||
// let b = ok
|
||||
import { SessionStore } from 'src/app/store/session.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -58,4 +56,79 @@ export class MiddlewareServiceService {
|
||||
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<EventDetailsDTO>(`${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<string>(`${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<string>(`${putUrl}`, event, options);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user