Projekt

Obecné

Profil

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

    
6
import {AuthorizationRequest, VacationRequest} from '../../models/requests.model';
7
import {Languages, ProfileStatus} from '../../enums/common.enum';
8
import {Observable} from 'rxjs';
9
import {UserBasicInformation, UserProfile} from '../../models/user.model';
10
import {MatSnackBar} from '@angular/material';
11
import {TranslateService} from '@ngx-translate/core';
12

    
13
@Injectable({
14
  providedIn: 'root'
15
})
16
export class UsersService extends BasicService {
17
  private _usersUrl = this.baseUrl + '/api/users';
18

    
19
  constructor(protected http: HttpClient, protected snackBar: MatSnackBar, protected translateService: TranslateService) {
20
    super(http, snackBar, translateService);
21
  }
22

    
23
  /**
24
   * Returns profile of currently logged user
25
   * UserProfile.notification might be returned as string instead of date
26
   */
27
  getLoggedUserProfile() {
28
    return this.makeGetProfileApiCall('current', null);
29
  }
30

    
31
  /**
32
   * Returns profile of currently logged user filtered by language
33
   * UserProfile.notification might be returned as string instead of date
34
   * @param language filter profile by language
35
   */
36
  getLoggedUserProfileWithLanguage(language: Languages) {
37
    return this.makeGetProfileApiCall('current', language);
38
  }
39

    
40
  /**
41
   * Returns user profile if the user making this call
42
   * is logged as admin
43
   * UserProfile.notification might be returned as string instead of date
44
   * @param id user profile id
45
   */
46
  getUserProfile(id: number) {
47
    return this.makeGetProfileApiCall(id.toString(), null);
48
  }
49

    
50
  /**
51
   * Overloaded version of getUserProfile to filter profiles
52
   * by language
53
   * UserProfile.notification might be returned as string instead of date
54
   * @param id user profile id
55
   * @param language language to filtery by
56
   */
57
  getUserProfileWithLanguage(id: number, language: Languages) {
58
    return this.makeGetProfileApiCall(id.toString(), language);
59
  }
60

    
61
  /**
62
   * Returns all authorized users
63
   */
64
  getAuthorizedUsers() {
65
    return this.makeGetUsersApiCall(null, ProfileStatus.AUTHORIZED);
66
  }
67

    
68
  /**
69
   * Returns all authorized users with specified language
70
   * overloaded version of getAuthorizedUsers
71
   * @param language filter users based on language
72
   */
73
  getAuthorizedUsersWithLanguage(language: Languages) {
74
    return this.makeGetUsersApiCall(language, ProfileStatus.AUTHORIZED);
75
  }
76

    
77
  /**
78
   * Returns all pending users
79
   */
80
  getPendingUsers() {
81
    return this.makeGetUsersApiCall(null, ProfileStatus.PENDING);
82
  }
83

    
84
  /**
85
   * Returns all pending users with specified language
86
   * overloaded version of getPendingUsers
87
   * @param language filter users based on language
88
   */
89
  getPendingUsersWithLanguage(language: Languages) {
90
    return this.makeGetUsersApiCall(language, ProfileStatus.PENDING);
91
  }
92

    
93
  /**
94
   * Return all rejected users
95
   */
96
  getRejectedUsers() {
97
    return this.makeGetUsersApiCall(null, ProfileStatus.REJECTED);
98
  }
99

    
100
  /**
101
   * Returns all rejected users with specified language
102
   * overloaded version of getRejectedUsers
103
   * @param language filter users based on language
104
   */
105
  getRejectedUsersWithLanguage(language: Languages) {
106
    return this.makeGetUsersApiCall(language, ProfileStatus.REJECTED);
107
  }
108

    
109
 /**
110
  * Default api call which returns all users in the database
111
  * regardless of language and status
112
  */
113
  getUsers() {
114
    return this.makeGetUsersApiCall();
115
  }
116

    
117
  /**
118
   * Returns all vacation requests specified by status, if status
119
   * is not specified, returns all vacation requests
120
   * @param status optional vacation request status
121
   */
122
  getVacationRequests(status?: string) {
123
    return this.makeGetVacationRequestsApiCall( null, status);
124
  }
125

    
126
  /**
127
   * Returns vacations filtered by language
128
   * @param language filter by passed language
129
   * @param status optionalvacation request status
130
   */
131
  getVacationRequestsWithLanguage(language: Languages, status?: string) {
132
    return this.makeGetVacationRequestsApiCall(language, status);
133
  }
134

    
135

    
136
  /**
137
   * Returns all authorization requests
138
   * @param status optional authorization request status
139
   */
140
  getAuthorizationRequests(status?: string) {
141
    return this.makeGetAuthorizationRequestsApiCall(null, status);
142
  }
143

    
144

    
145
  /**
146
   * Returns authorization requests filtered by language
147
   * @param language filter by passed language
148
   * @param status optional authorization request status
149
   */
150
  getAuthorizationRequestsWithLanguage(language: Languages, status?: string) {
151
    return this.makeGetAuthorizationRequestsApiCall(language, status);
152
  }
153

    
154
  /**
155
   * Získání žádostí o autorizaci všech uživatelů s možností filtrace pomocí úrovně schválení.
156
   * GET /users/requests/authorization?[lang=<CZ,EN>]&[status=<ACCEPTED, PENDING, REJECTED>
157
   * @param language filter by language
158
   * @param status optional authorization request status
159
   */
160
  private makeGetAuthorizationRequestsApiCall(language?: string, statusReq?: string) {
161
    const httpParams: HttpParams = this.createParams({lang: language, status: statusReq});
162
    const options = {params: httpParams};
163

    
164
    return this.http.get<AuthorizationRequest[]>(this._usersUrl + '/requests/authorization', options)
165
      .pipe(
166
        catchError(err => this.handleError(err))
167
      );
168
  }
169

    
170
  /**
171
   * Získání žádostí o dovolené a sick days všech uživatelů s možností filtrace pomocí úrovně schválení.
172
   * GET /users/requests/vacation? [lang=<CZ,EN>]&[status=<ACCEPTED, PENDING, REJECTED>]
173
   * @param language filter by language
174
   * @param status vacation request status
175
   */
176
  private makeGetVacationRequestsApiCall(language?: string, statusReq?: string) {
177
    const httpParams: HttpParams = this.createParams({lang: language, status: statusReq});
178
    const options = {params: httpParams};
179

    
180
    return this.http.get<VacationRequest[]>(this._usersUrl + '/requests/vacation', options)
181
      .pipe(
182
        catchError(err => this.handleError(err))
183
      );
184
  }
185

    
186
  /**
187
   * Získání všech uživatelů s možností filtrace pomocí statusu
188
   * GET /users?[lang=<CZ,EN>]&[status=<ACCEPTED, PENDING, REJECTED>]
189
   * @param status filter by status
190
   * @param language filter by language
191
   */
192
  private makeGetUsersApiCall(language?: string, status?: string): Observable<UserBasicInformation[]> {
193
    const httpParams: HttpParams = this.createParams({lang: language, status});
194
    const options = {params: httpParams};
195

    
196
    return this.http.get<UserBasicInformation[]>(this._usersUrl, options)
197
      .pipe(
198
        catchError(err => this.handleError(err))
199
      );
200
  }
201

    
202
  /**
203
   * Získání profilu aktuálně přihlášeného uživatele nebo uživatele podle zadaného id.
204
   * GET /user/<{id} || me>/profile?[lang=<CZ,EN>]
205
   * @param id id of profile to get (number or 'me')
206
   * @param language filter by language
207
   */
208
  private makeGetProfileApiCall(id: string, language: string) {
209
    const httpParams: HttpParams = this.createParams({lang: language});
210
    const options = {params: httpParams};
211

    
212
    return this.http.get<UserProfile>(this._usersUrl + "/" + id + '/profile', options)
213
      .pipe(
214
        catchError(err => this.handleError(err))
215
      );
216
  }
217

    
218

    
219
}
(5-5/5)