Projekt

Obecné

Profil

Stáhnout (4.64 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 {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

    
17
  constructor(protected http: HttpClient) {
18
    super(http);
19
  }
20

    
21
  /**
22
   * Returns all authorized users
23
   */
24
  getAuthorizedUsers() {
25
    return this.makeGetUsersApiCall(ProfileStatus.AUTHORIZED, null);
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.makeGetUsersApiCall(ProfileStatus.AUTHORIZED, language);
35
  }
36

    
37
  /**
38
   * Returns all pending users
39
   */
40
  getPendingUsers() {
41
    return this.makeGetUsersApiCall(ProfileStatus.PENDING, null);
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.makeGetUsersApiCall(ProfileStatus.PENDING, language);
51
  }
52

    
53
  /**
54
   * Return all rejected users
55
   */
56
  getRejectedUsers() {
57
    return this.makeGetUsersApiCall(ProfileStatus.REJECTED, null);
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.makeGetUsersApiCall(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.makeGetUsersApiCall(null, null);
75
  }
76

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

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

    
92

    
93
  /**
94
   * Returns all authorization requests
95
   */
96
  getAuthorizationRequests() {
97
    return this.makeGetAuthorizationRequestsApiCall(null);
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.makeGetAuthorizationRequestsApiCall(language);
107
  }
108

    
109
  /**
110
   * Získání žádostí o autorizaci všech uživatelů s možností filtrace pomocí úrovně schválení.
111
   * GET /users/requests/authorization?[lang=<CZ,EN>]&[status=<ACCEPTED, PENDING, REJECTED>
112
   * @param language filter by language
113
   */
114
  private makeGetAuthorizationRequestsApiCall(language: string) {
115
    const httpParams: HttpParams = this.createParams({lang: language});
116
    const options = {params: httpParams};
117

    
118
    return this.http.get<AuthorizationRequest[]>(this._usersUrl + '/requests/authorization', options)
119
      .pipe(
120
        catchError(err => this.handleError(err))
121
      );
122
  }
123

    
124
  /**
125
   * Získání žádostí o dovolené a sick days všech uživatelů s možností filtrace pomocí úrovně schválení.
126
   * GET /users/requests/vacation? [lang=<CZ,EN>]&[status=<ACCEPTED, PENDING, REJECTED>]
127
   * @param language filter by language
128
   */
129
  private makeGetVacationRequestsApiCall(language: string) {
130
    const httpParams: HttpParams = this.createParams({lang: language});
131
    const options = {params: httpParams};
132

    
133
    return this.http.get<VacationRequest[]>(this._usersUrl + '/requests/vacation', options)
134
      .pipe(
135
        catchError(err => this.handleError(err))
136
      );
137
  }
138

    
139
  /**
140
   * Získání všech uživatelů s možností filtrace pomocí statusu
141
   * GET /users?[lang=<CZ,EN>]&[status=<ACCEPTED, PENDING, REJECTED>]
142
   * @param status filter by status
143
   * @param language filter by language
144
   */
145
  private makeGetUsersApiCall(status: string, language: string): Observable<UserBasicInformation[]> {
146
    const httpParams: HttpParams = this.createParams({lang: language, status});
147
    const options = {params: httpParams};
148

    
149
    return this.http.get<UserBasicInformation[]>(this._usersUrl, options)
150
      .pipe(
151
        catchError(err => this.handleError(err))
152
      );
153
  }
154

    
155
}
(9-9/9)