Projekt

Obecné

Profil

Stáhnout (4.16 KB) Statistiky
| Větev: | Tag: | Revize:
1
import {Injectable} from '@angular/core';
2
import {HttpClient} from '@angular/common/http';
3
import {BasicService} from './basic.service';
4
import {catchError} from 'rxjs/operators';
5

    
6
import {UserBasicInformation} from '../models/user-basic-information.model';
7
import {AuthorizationRequest, VacationRequest} from '../models/requests.model';
8
import {Languages, ProfileStatus} from '../enums/common.enum';
9
import {Observable} from 'rxjs';
10

    
11
@Injectable({
12
  providedIn: 'root'
13
})
14
export class UsersService extends BasicService {
15
  private _usersUrl = this.baseUrl + '/api/users?';
16
  private _statusPrefix = 'status=';
17
  private _languagePrefix = 'language=';
18
  private _vacationRequestsUrl = this.baseUrl + '/api/users/requests/vacation?';
19
  private _authorizationRequestsUrl = this.baseUrl + '/api/users/requests/authorization?';
20

    
21
  /**
22
   * Returns all authorized users
23
   */
24
  getAuthorizedUsers() {
25
    return this.makeUsersApiCall(ProfileStatus.AUTHORIZED, '');
26
  }
27

    
28
  /**
29
   * Returns all authorized users with specified language
30
   * overloaded version of getAuthorizedUsers
31
   * @param language filter users based on language
32
   */
33
  getAuthorizedUsersWithLanguage(language: Languages) {
34
    return this.makeUsersApiCall(ProfileStatus.AUTHORIZED, language);
35
  }
36

    
37
  /**
38
   * Returns all pending users
39
   */
40
  getPendingUsers() {
41
    return this.makeUsersApiCall(ProfileStatus.PENDING, '');
42
  }
43

    
44
  /**
45
   * Returns all pending users with specified language
46
   * overloaded version of getPendingUsers
47
   * @param language filter users based on language
48
   */
49
  getPendingUsersWithLanguage(language: Languages) {
50
    return this.makeUsersApiCall(ProfileStatus.PENDING, language);
51
  }
52

    
53
  /**
54
   * Return all rejected users
55
   */
56
  getRejectedUsers() {
57
    return this.makeUsersApiCall(ProfileStatus.REJECTED, '');
58
  }
59

    
60
  /**
61
   * Returns all rejected users with specified language
62
   * overloaded version of getRejectedUsers
63
   * @param language filter users based on language
64
   */
65
  getRejectedUsersWithLanguage(language: Languages) {
66
    return this.makeUsersApiCall(ProfileStatus.REJECTED, language);
67
  }
68

    
69
 /**
70
  * Default api call which returns all users in the database
71
  * regardless of language and status
72
  */
73
  getUsers() {
74
    return this.makeUsersApiCall('', '');
75
  }
76

    
77
  /**
78
   * Returns all vacation requests
79
   */
80
  getVacationRequests() {
81
    return this.makeVacationRequestsApiCall('');
82
  }
83

    
84
  /**
85
   * Returns vacations filtered by language
86
   * @param language filter by passed language
87
   */
88
  getVacationRequestsWithLanguage(language: Languages) {
89
    return this.makeVacationRequestsApiCall(language);
90
  }
91

    
92

    
93
  /**
94
   * Returns all authorization requests
95
   */
96
  getAuthorizationRequests() {
97
    return this.makeAuthorizationRequestsApiCall('');
98
  }
99

    
100

    
101
  /**
102
   * Returns authorization requests filtered by language
103
   * @param language filter by passed language
104
   */
105
  getAuthorizationRequestsWithLanguage(language: Languages) {
106
    return this.makeAuthorizationRequestsApiCall(language);
107
  }
108

    
109
  private makeAuthorizationRequestsApiCall(language: string) {
110
    const apiUrl: string = this.createApiUrl(this._authorizationRequestsUrl, '', language);
111

    
112
    return this.http.get<AuthorizationRequest[]>(apiUrl)
113
      .pipe(
114
        catchError(err => this.handleError(err))
115
      );
116
  }
117

    
118
  private makeVacationRequestsApiCall(language: string) {
119
    const apiUrl: string = this.createApiUrl(this._vacationRequestsUrl, '', language);
120

    
121
    return this.http.get<VacationRequest[]>(apiUrl)
122
      .pipe(
123
        catchError(err => this.handleError(err))
124
      );
125
  }
126

    
127
  private makeUsersApiCall(status: string, language: string): Observable<UserBasicInformation[]> {
128
    const apiUrl: string = this.createApiUrl(this._usersUrl, status, language);
129

    
130
    return this.http.get<UserBasicInformation[]>(apiUrl)
131
      .pipe(
132
        catchError(err => this.handleError(err))
133
      );
134
  }
135

    
136
  private createApiUrl(base: string, status: string, language: string): string {
137
    let apiUrl = base;
138

    
139
    if (status.length > 0) {
140
      apiUrl += this._statusPrefix + status + '&';
141
    }
142
    if (language.length > 0) {
143
      apiUrl += this._languagePrefix + language;
144
    }
145

    
146
    return apiUrl;
147
  }
148

    
149
  constructor(protected http: HttpClient) {
150
    super(http);
151
  }
152

    
153
}
(7-7/7)