import { Inject, Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Config } from './types/config'; import { Observable } from 'rxjs'; import { FormValues } from './types/form-values'; import { Notification } from './types/notification'; import { CONFIG_TOKEN } from './injecton'; import { NameValue } from '@varmasagi/ics-common-types'; import { catchError } from 'rxjs/operators'; export class IcsNotificationService { constructor( private httpClient: HttpClient, @Inject(CONFIG_TOKEN) private config: Config ) {} public fetchFormValues( applicationId: any, platformId?: any, contextId?: any ): Observable { let queryParams = '?'; if (contextId) { queryParams += `contextId=${contextId}`; } if (platformId) { queryParams += `platformId=${platformId}`; } return this.httpClient.get( `${ this.config.url }notifications/applications/${applicationId}/form-values${queryParams}` ); } public fetchFrequencies(ruleId: any): Observable { return this.httpClient.get( `${this.config.url}notifications/rules/${ruleId}/frequencies` ); } public createNotification(notification: Notification): Observable { return this.httpClient.post( `${this.config.url}notifications`, notification ); } /** * Updates an existing notification. * @param id - Notification ID * @param notification - The Notification Object */ public updateNotification(id:number, notification: Notification, subscriptionId:number): Observable { return this.httpClient.put( `${this.config.url}notifications/${id}?subscriptionId=${subscriptionId}`, notification ); } /** * Fetches existing notifications. * @param subscriptionId - Subscription Id */ public getNotification(subscriptionId: number): Observable { return this.httpClient.get( `${this.config.url}subscriptions/${subscriptionId}`); } /** * Updates Subscription Status * @param subscriptionId - Subscription Id * @param action - true to subscribe, false to unsubscribe */ public updateSubscription(subscriptionId:number, action:boolean): Observable{ let actionStr = ""; if(action) actionStr = "yes"; else actionStr = "no"; return this.httpClient.patch( `${this.config.url}subscriptions/${subscriptionId}/subscribe?action=${actionStr}`,{}); } public unSubscribeDefault(ruleMapId:number): Observable{ return this.httpClient.post(`${this.config.url}subscriptions/default`,ruleMapId); } }