Project

General

Profile

1
import {Injectable} from '@angular/core';
2
import {HttpClient} from '@angular/common/http';
3
import {map, tap} from "rxjs/operators";
4
import {CustomOptions} from "../../services/servicesUtils/customOptions.class";
5
import {EnvProperties} from "../properties/env-properties";
6
import {COOKIE} from "../../login/utils/helper.class";
7
import {BehaviorSubject, Observable} from "rxjs";
8

    
9
@Injectable()
10
export class SubscribeService {
11
  private isSubscribedSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);
12

    
13
  constructor(private http: HttpClient) {}
14

    
15
  public initIsSubscribedToCommunity(properties: EnvProperties, pid: string) {
16
    let url = properties.adminToolsAPIURL + "/community/" + pid + "/is-subscriber/";
17
    this.http.get<boolean>(url, CustomOptions.getAuthOptionsWithBody()).subscribe((isSubscribed) => {
18
      this.isSubscribedSubject.next(isSubscribed);
19
    }, error => {
20
      this.isSubscribedSubject.error(error);
21
    });
22
  }
23

    
24
  public get isSubscribed(): Observable<boolean> {
25
    return this.isSubscribedSubject.asObservable();
26
  }
27

    
28
  getCommunitySubscribers(properties: EnvProperties, pid: string) {
29
    let url = properties.adminToolsAPIURL + "/community/" + pid + "/subscribers";
30
    return this.http.get<any>((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url);
31
  }
32

    
33
  getNumberOfCommunitySubscribers(properties: EnvProperties, pid: string) {
34
    let url = properties.adminToolsAPIURL + "/community/" + pid + "/subscribers/count";
35
    return this.http.get<any>((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url);
36
  }
37

    
38
  isSubscribedToCommunity(properties: EnvProperties, pid: string) {
39
    let url = properties.adminToolsAPIURL + "/community/" + pid + "/is-subscriber/";
40
    return this.http.get<boolean>(url, CustomOptions.getAuthOptionsWithBody())
41
      .pipe(map(res => {
42
        // if (res['status'] && res['status'] != 200) {
43
        //   return null;
44
        // }
45
        // if (res['subscribers'] && res['subscribers'] != null) {
46
        //
47
        //   for (var i = 0; i < res['subscribers'].length; i++) {
48
        //     if (res['subscribers'][i] != null && res['subscribers'][i].email == email) {
49
        //       return true;
50
        //     }
51
        //   }
52
        // }
53
        // return false;
54
        return res;
55
      }));
56
  }
57

    
58
  subscribeToCommunity(properties: EnvProperties, pid: string) {
59
    return this.http.post<any>(properties.adminToolsAPIURL + "/community/" + pid + "/subscriber", {}, CustomOptions.getAuthOptionsWithBody())
60
      .pipe(tap(isSubscribed => {
61
        this.isSubscribedSubject.next(isSubscribed);}));
62
  }
63

    
64
  unSubscribeToCommunity(properties: EnvProperties, pid: string) {
65
    return this.http.post<any>(properties.adminToolsAPIURL + "/community/" + pid + "/subscriber/delete", {}, CustomOptions.getAuthOptionsWithBody())
66
      .pipe(tap(unSubscribed => {
67
        this.isSubscribedSubject.next(!unSubscribed);}));
68
  }
69

    
70
  subscribeToCommunityByEmail(properties: EnvProperties, pid: string, email: string) {
71
    let subscriber = {"email": email};
72
    return this.http.post<any>(properties.adminToolsAPIURL + "/community/" + pid + "/subscribers", JSON.stringify(subscriber), CustomOptions.getAuthOptionsWithBody());
73
  }
74

    
75
  unSubscribeToCommunityByEmail(properties: EnvProperties, pid: string, email: string) {
76
    return this.http.post<any>(properties.adminToolsAPIURL + "/community/" + pid + "/subscribers/delete", JSON.stringify([email]), CustomOptions.getAuthOptionsWithBody());
77
  }
78

    
79
  getCommunitiesSubscribedTo(properties: EnvProperties/*, email: string*/) {
80
    let url = properties.adminToolsAPIURL + "/subscriber/communities";//?email=" + email;
81
    return this.http.get<any>(url, CustomOptions.getAuthOptionsWithBody());
82
  }
83
}
    (1-1/1)