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 { try { let registerEvent: any = { "email": email, "fullName": fullName, "password": password }; return this.http.post(this.userApiUrl + 'register', registerEvent); } catch (exception) { console.log('Error fetching events from API'); } return new Observable(); } login(email: string, password: string): Observable { try { let loginEvent: any = { "email": email, "password": password }; return this.http.post(this.userApiUrl + 'login', loginEvent); } catch (exception) { console.log('Error fetching events from API'); } return new Observable(); } checkSession(session: Session): Observable { try { return this.http.post(this.userApiUrl + 'checkSessionValid', session); } catch (exception) { console.log('Error fetching events from API'); } return new Observable(); } getEvents(calendar: string): Observable { 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((this.apiUrl + calendar + '/json'), {params}); } catch (exception) { console.log('Error fetching events from API'); } return new Observable(); } updateEvent(event: Event): Observable { 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(); } createEvent(event: Event): Observable { 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(); } deleteEvent(event: Event): Observable { 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(); } moveEvent(event: Event): Observable { 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(); } }