Projekt

Obecné

Profil

Stáhnout (4.72 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} from '../../models/user.model';
10
import {MatSnackBar} from '@angular/material';
11

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

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

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

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

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

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

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

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

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

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

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

    
93

    
94
  /**
95
   * Returns all authorization requests
96
   */
97
  getAuthorizationRequests() {
98
    return this.makeGetAuthorizationRequestsApiCall(null);
99
  }
100

    
101

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

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

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

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

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

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

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

    
156
}
(5-5/5)