153 lines
4.1 KiB
TypeScript
153 lines
4.1 KiB
TypeScript
import {Injectable} from '@angular/core';
|
|
import {HttpClient, HttpParams} from '@angular/common/http';
|
|
import {Observable} from 'rxjs';
|
|
import {Event} from '../models/event';
|
|
import {UtilsService} from './utils.service';
|
|
import { environment } from './../../environments/environment';
|
|
import {Session} from '../models/session';
|
|
import {User} from '../models/user';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class ApiService {
|
|
apiUrl = environment.apiUrl + '/calendar/events/';
|
|
userApiUrl = environment.apiUrl + '/calendar/users/';
|
|
|
|
constructor(
|
|
private http: HttpClient
|
|
) {
|
|
}
|
|
|
|
register(email: string, fullName: string, password: string): Observable<Session> {
|
|
try {
|
|
let registerEvent: any = {
|
|
"email": email,
|
|
"fullName": fullName,
|
|
"password": password
|
|
};
|
|
|
|
return this.http.post<Session>(this.userApiUrl + 'register', registerEvent);
|
|
} catch (exception) {
|
|
console.log('Error fetching events from API');
|
|
}
|
|
return new Observable<Session>();
|
|
}
|
|
|
|
login(email: string, password: string): Observable<Session> {
|
|
try {
|
|
let loginEvent: any = {
|
|
"email": email,
|
|
"password": password
|
|
};
|
|
|
|
return this.http.post<Session>(this.userApiUrl + 'login', loginEvent);
|
|
} catch (exception) {
|
|
console.log('Error fetching events from API');
|
|
}
|
|
return new Observable<Session>();
|
|
}
|
|
|
|
checkSession(session: Session): Observable<User> {
|
|
try {
|
|
return this.http.post<User>(this.userApiUrl + 'checkSessionValid', session);
|
|
} catch (exception) {
|
|
console.log('Error fetching events from API');
|
|
}
|
|
return new Observable<User>();
|
|
}
|
|
|
|
getEvents(calendar: string): Observable<Event[]> {
|
|
try {
|
|
let session = UtilsService.getSessionInfoFromLocalStorage();
|
|
|
|
let params = new HttpParams();
|
|
params = params.append('sessionId', session.sessionId);
|
|
params = params.append('sessionKey', session.sessionKey);
|
|
return this.http.get<Event[]>((this.apiUrl + calendar + '/json'), {params});
|
|
} catch (exception) {
|
|
console.log('Error fetching events from API');
|
|
}
|
|
return new Observable<Event[]>();
|
|
}
|
|
|
|
updateEvent(event: Event): Observable<any> {
|
|
try {
|
|
let session = UtilsService.getSessionInfoFromLocalStorage();
|
|
|
|
let params = new HttpParams();
|
|
params = params.append('sessionId', session.sessionId);
|
|
params = params.append('sessionKey', session.sessionKey);
|
|
|
|
let updateEvent: any = event;
|
|
|
|
return this.http.put(this.apiUrl + updateEvent.eventId, updateEvent, {params});
|
|
} catch (exception) {
|
|
console.log('Error updating event');
|
|
}
|
|
return new Observable<any>();
|
|
}
|
|
|
|
createEvent(event: Event): Observable<any> {
|
|
try {
|
|
let session = UtilsService.getSessionInfoFromLocalStorage();
|
|
|
|
let params = new HttpParams();
|
|
params = params.append('sessionId', session.sessionId);
|
|
params = params.append('sessionKey', session.sessionKey);
|
|
|
|
// Automatically set birthdays to recurring
|
|
if(event.calendarId === 5) {
|
|
event.repeatFrequency = 'YEARLY';
|
|
}
|
|
|
|
let createEvent: any = event;
|
|
|
|
return this.http.post(this.apiUrl, createEvent, {params});
|
|
} catch (exception) {
|
|
console.log('Error creating event');
|
|
}
|
|
return new Observable<any>();
|
|
}
|
|
|
|
deleteEvent(event: Event): Observable<any> {
|
|
try {
|
|
let session = UtilsService.getSessionInfoFromLocalStorage();
|
|
|
|
let params = new HttpParams();
|
|
params = params.append('sessionId', session.sessionId);
|
|
params = params.append('sessionKey', session.sessionKey);
|
|
|
|
let deleteEvent: any = event;
|
|
|
|
return this.http.delete(this.apiUrl + deleteEvent.eventId, {
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: deleteEvent,
|
|
params
|
|
});
|
|
} catch (exception) {
|
|
console.log('Error deleting event');
|
|
}
|
|
return new Observable<any>();
|
|
}
|
|
|
|
moveEvent(event: Event): Observable<any> {
|
|
try {
|
|
let session = UtilsService.getSessionInfoFromLocalStorage();
|
|
|
|
let params = new HttpParams();
|
|
params = params.append('sessionId', session.sessionId);
|
|
params = params.append('sessionKey', session.sessionKey);
|
|
|
|
let updateEvent: any = event;
|
|
|
|
return this.http.put(this.apiUrl + 'move/' + updateEvent.eventId, updateEvent, {params});
|
|
} catch (exception) {
|
|
console.log('Error updating event');
|
|
}
|
|
return new Observable<any>();
|
|
}
|
|
}
|