Projekt

Obecné

Profil

Stáhnout (12.8 KB) Statistiky
| Větev: | Tag: | Revize:
1 6b95d204 plundrichov
// ******************** Log Out ********************
2 7495b9eb plundrichov
3 a12a4e99 plundrichov
export const logOut = async () => {
4
5
  let response;
6
7
  try {
8
    response = await fetch(
9
      `${window.config.baseUrl}/logout`, {
10
        credentials: 'include'
11
      }
12
    );    
13
  } catch (e) {
14
    throw 'Server is not available'
15
    }
16
17
  if (response.ok) {
18
        window.location.replace(`/logout`)
19
  } else {
20
      switch (response.status) {
21
        case 500:
22
          throw new Error('Internal server error.')
23
        default:
24
          throw new Error(response.statusText)
25
      }
26
    }
27
}
28
29 6b95d204 plundrichov
// ******************** GET DATA APP getCurrentProfile ********************
30
31 7495b9eb plundrichov
export const getCurrentProfile = async () => {
32
33 ebfe6347 plundrichov
  let response;
34
35
  try {
36
    response = await fetch(
37 faed7f5e plundrichov
      `${window.config.baseUrl}/users/current/profile`, {
38 a12a4e99 plundrichov
39 faed7f5e plundrichov
        credentials: 'include'
40 7495b9eb plundrichov
      }
41 ebfe6347 plundrichov
    );    
42
  } catch (e) {
43
    throw 'Server is not available'
44
    }
45 7495b9eb plundrichov
46 ebfe6347 plundrichov
  if (response.ok) {
47
    const data = await response.json();
48
49
    return {
50
      name: data.firstName + ' ' + data.lastName,
51
      role: data.role,
52
      id: data.id,
53
      holiday: data.vacationCount,
54
      sickday: data.sickDayCount,
55 5bedee9e plundrichov
      photo: data.photo,
56 ebfe6347 plundrichov
      takenSickday: data.takenSickDayCount
57 7495b9eb plundrichov
    }
58 ebfe6347 plundrichov
  } else {
59
      switch (response.status) {
60
        case 401:
61 5bedee9e plundrichov
          window.location.replace(`/login`)
62 faed7f5e plundrichov
          break;
63
        case 403:
64 5bedee9e plundrichov
          window.location.replace(`/login`)
65 faed7f5e plundrichov
          break;
66 ebfe6347 plundrichov
        case 500:
67
          throw new Error('Internal server error.')
68
        default:
69
          throw new Error(response.statusText)
70
      }
71 7495b9eb plundrichov
    }
72
}
73
74
// ******************** LOAD DATA to CALENDAR - EMPLOYEE ********************
75 5bedee9e plundrichov
export const getUserCalendar = async (currentUser, fromDate ) => {
76 ebfe6347 plundrichov
77
  let response;
78
79 7495b9eb plundrichov
  try {
80 ebfe6347 plundrichov
    response = await fetch(
81 5bedee9e plundrichov
      `${window.config.baseUrl}/user/${currentUser.id}/calendar?from=${fromDate}&status=ACCEPTED&status=REJECTED`, {
82 ebfe6347 plundrichov
        headers: {
83
          'Accept': 'application/json',
84
        },
85 faed7f5e plundrichov
        credentials: 'include',
86 ebfe6347 plundrichov
        method: 'GET',
87
      }
88
    );
89
  } catch (e) {
90
    throw 'Server is not available'
91
  }
92 7495b9eb plundrichov
93
  if (response.ok) {
94 ebfe6347 plundrichov
    const data = await response.json();
95 7495b9eb plundrichov
  
96 ebfe6347 plundrichov
    return data.filter(day => {
97
      return day.status !== 'PENDING'
98
    }).map(day => {
99 7495b9eb plundrichov
100
    const newDate = day.date.split("/").join("-");
101
102
    return ({
103 5bedee9e plundrichov
      title: currentUser.name,
104 ebfe6347 plundrichov
      start: newDate,
105
      backgroundColor: day.status === 'REJECTED' ? 'red' : 'green'
106 7495b9eb plundrichov
    })
107
  })
108 ebfe6347 plundrichov
  } else {
109
      switch (response.status) {
110
        case 400:
111
          throw new Error('Bad request. Check query parameters.')
112
        case 401:
113 5bedee9e plundrichov
          window.location.replace(`/login`)
114 ebfe6347 plundrichov
        case 403:
115 5bedee9e plundrichov
          window.location.replace(`/login`)
116 ebfe6347 plundrichov
        case 404:
117
          throw new Error('User with given ID does not exist.')
118
        case 500:
119
          throw new Error('Internal server error.')
120
        default:
121
          throw new Error(response.statusText)
122
      }
123 7495b9eb plundrichov
    }
124
}
125
126
// ******************** LOAD DATA to CALENDAR - EMPLOYER ********************
127 ebfe6347 plundrichov
128 7495b9eb plundrichov
export const getAdminCalendar = async () => {
129 ebfe6347 plundrichov
130
  let response;
131
132
  try {
133
    response = await fetch(
134 faed7f5e plundrichov
      `${window.config.baseUrl}/users/requests/vacation?status=ACCEPTED`, {
135 7495b9eb plundrichov
        headers: {
136
          'Accept': 'application/json',
137
        },
138 faed7f5e plundrichov
        credentials: 'include',
139 7495b9eb plundrichov
        method: 'GET',
140
      }
141
    );
142 ebfe6347 plundrichov
  } catch (e) {
143
    throw 'Server is not available'
144
  }
145 7495b9eb plundrichov
146 ebfe6347 plundrichov
  if (response.ok) {
147 7495b9eb plundrichov
    const data = await response.json();
148
    
149
    return data.map(day => {
150
151
      const newDate = day.date.split("/").join("-");
152
153
      return ( {
154
      title: day.firstName + ' ' + day.lastName,
155
      start: newDate
156
      })
157
    })
158
  } else {
159 ebfe6347 plundrichov
      switch (response.status) {
160
        case 400:
161
          throw new Error('Bad request. Check query parameters.')
162
        case 401:
163 5bedee9e plundrichov
          window.location.replace(`/login`)
164 ebfe6347 plundrichov
        case 403:
165 5bedee9e plundrichov
          window.location.replace(`/login`)
166 ebfe6347 plundrichov
        case 500:
167
          throw new Error('Internal server error.')
168
        default:
169
          throw new Error(response.statusText)
170 7495b9eb plundrichov
      }
171 9f045397 plundrichov
    }
172 7495b9eb plundrichov
}
173
174
// ******************** ADD EVENT to CALENDAR - EMPLOYEE ********************
175 ebfe6347 plundrichov
176 5bedee9e plundrichov
export async function addEventApi(dataAddEventEmployee) {
177 ebfe6347 plundrichov
  let response;
178
179
  try {
180 7495b9eb plundrichov
  // send accepted request to server
181 faed7f5e plundrichov
    response = await fetch(`${window.config.baseUrl}/user/calendar/create`, {
182 9f045397 plundrichov
      headers: {
183
        'Content-Type': 'application/json',
184
      },
185 faed7f5e plundrichov
      credentials: 'include',
186 9f045397 plundrichov
      method: 'POST',
187
  // object which is sent to server
188
  body: JSON.stringify(dataAddEventEmployee),
189
    });
190 ebfe6347 plundrichov
  } catch (e) {
191
    throw 'Server is not available'
192
  }
193
194 5bedee9e plundrichov
  if (!response.ok) {
195 ebfe6347 plundrichov
      switch (response.status) {
196
        case 400:
197
          throw new Error('Bad request. Check request body.')
198
        case 401:
199 5bedee9e plundrichov
          window.location.replace(`/login`)
200 ebfe6347 plundrichov
        case 403:
201 5bedee9e plundrichov
          window.location.replace(`/login`)
202 ebfe6347 plundrichov
        case 500:
203
          throw new Error('Internal server error.')
204
        default:
205
          throw new Error(response.statusText)
206
      }    
207 9f045397 plundrichov
    }
208
}
209
      
210
// ******************** ADD EVENT to CALENDAR - EMPLOYER ********************
211 ebfe6347 plundrichov
212 9f045397 plundrichov
export async function addEventApiAdmin(dataAddEventAdmin) {
213 ebfe6347 plundrichov
  let response;
214
215 9f045397 plundrichov
  try {
216 ebfe6347 plundrichov
  // send accepted request to server
217 faed7f5e plundrichov
    response = await fetch(`${window.config.baseUrl}/user/calendar/create`, {
218 ebfe6347 plundrichov
      headers: {
219
        'Content-Type': 'application/json',
220
    },
221 faed7f5e plundrichov
    credentials: 'include',
222 ebfe6347 plundrichov
      method: 'POST',
223 9f045397 plundrichov
    // object which is sent to server
224 ebfe6347 plundrichov
      body: JSON.stringify(dataAddEventAdmin),
225
    });
226 9f045397 plundrichov
  } catch (e) {
227 ebfe6347 plundrichov
    throw 'Server is not available'
228
  }
229
230
  if (!response.ok) {
231
    switch (response.status) {
232
      case 400:
233
        throw new Error('Bad request. Check request body.')
234
      case 401:
235 5bedee9e plundrichov
        window.location.replace(`/login`)
236 ebfe6347 plundrichov
      case 403:
237 5bedee9e plundrichov
        window.location.replace(`/login`)
238 ebfe6347 plundrichov
      case 500:
239
        throw new Error('Internal server error.')
240
      default:
241
        throw new Error(response.statusText)
242
    }    
243
  }
244 9f045397 plundrichov
}
245 7495b9eb plundrichov
246 9f045397 plundrichov
// ******************** GET DATA to OVERVIEW - EMPLOYER ********************
247 ebfe6347 plundrichov
248 9f045397 plundrichov
export const getUsersOverview = async () => {
249 ebfe6347 plundrichov
  let response;
250
251 9f045397 plundrichov
  try {
252 ebfe6347 plundrichov
  response = await fetch (
253 faed7f5e plundrichov
    `${window.config.baseUrl}/users`, {
254
      credentials: 'include',
255 9f045397 plundrichov
    }
256
  );
257 ebfe6347 plundrichov
  } catch (e) {
258
    throw 'Server is not available'
259
  }
260 7495b9eb plundrichov
  
261 ebfe6347 plundrichov
  if (response.ok) {
262 9f045397 plundrichov
263 ebfe6347 plundrichov
    const data = await response.json();
264
    return data.map(user => {
265 9f045397 plundrichov
266 ebfe6347 plundrichov
     return ({
267 9f045397 plundrichov
           name: user.firstName + ' ' + user.lastName,
268
           id: user.id,
269
           sickday: user.sickDayCount,
270
           holiday: user.vacationCount,
271 ebfe6347 plundrichov
           takenSickday: user.takenSickDayCount,
272 9f045397 plundrichov
           role: user.role
273 7495b9eb plundrichov
        })
274 ebfe6347 plundrichov
    })
275
  } else {
276
    switch (response.status) {
277
      case 400:
278
        throw new Error('Bad request. Check query parameters.')
279
      case 401:
280 5bedee9e plundrichov
        window.location.replace(`/login`)
281 ebfe6347 plundrichov
      case 403:
282 5bedee9e plundrichov
        window.location.replace(`/login`)
283 ebfe6347 plundrichov
      case 500:
284
        throw new Error('Internal server error.')
285
      default:
286
        throw new Error(response.statusText)
287
    }    
288 9f045397 plundrichov
  }
289
}
290 7495b9eb plundrichov
291 9f045397 plundrichov
// ******************** SAVE DATA to OVERVIEW - EMPLOYER ********************
292 ebfe6347 plundrichov
293 9f045397 plundrichov
export async function saveDataOverview(dataOverviewObject) {
294 ebfe6347 plundrichov
  let response;
295
296 9f045397 plundrichov
  try {
297
    // send accepted request to server
298 faed7f5e plundrichov
        response = await fetch(`${window.config.baseUrl}/user/settings`, {
299 9f045397 plundrichov
          headers: {
300
            'Content-Type': 'application/json',
301
          },
302 faed7f5e plundrichov
          credentials: 'include',
303 9f045397 plundrichov
          method: 'PUT',
304
 
305
    // object which is sent to server
306
          body: JSON.stringify(dataOverviewObject),        
307
        });
308
  } catch (e) {
309 ebfe6347 plundrichov
    throw 'Server is not available'
310 9f045397 plundrichov
  }
311 ebfe6347 plundrichov
312
  if (!response.ok) {
313
    switch (response.status) {
314
      case 400:
315
        throw new Error('Bad request. Check query parameters.')
316
      case 401:
317 5bedee9e plundrichov
        window.location.replace(`/login`)
318 ebfe6347 plundrichov
      case 403:
319 5bedee9e plundrichov
        window.location.replace(`/login`)
320 ebfe6347 plundrichov
      case 500:
321
        throw new Error('Internal server error.')
322
      default:
323
        throw new Error(response.statusText)
324
    }
325
  }    
326 9f045397 plundrichov
}
327
328
// ******************** LOAD DATA to SETTING - EMPLOYER ********************
329
export const getSettingData = async () =>  {
330 ebfe6347 plundrichov
  let response;
331
332 9f045397 plundrichov
  try {
333 a0cbde1e plundrichov
    response = await fetch(
334 faed7f5e plundrichov
      `${window.config.baseUrl}/settings`, {
335
        credentials: 'include',
336
      }
337
    );
338 a0cbde1e plundrichov
339 9f045397 plundrichov
  } catch (e) {
340 ebfe6347 plundrichov
    throw 'Server is not available'
341
    }
342
343
  if (response.ok) {
344
    const data = await response.json();
345
    return {
346
      sickday: data.sickDayCount,
347
    }
348
  } else {
349
    switch (response.status) {
350
      case 500:
351
        throw new Error('Internal server error.')
352
      default:
353
        throw new Error(response.statusText)
354
      }            
355 9f045397 plundrichov
    }
356 ebfe6347 plundrichov
357 9f045397 plundrichov
}
358
359
// ******************** SAVE DATA to SETTING - EMPLOYER ********************
360
export async function saveDataSetting(dataSettingObject) {
361 ebfe6347 plundrichov
  let response;
362
363 9f045397 plundrichov
  try {
364 faed7f5e plundrichov
    response = await fetch(`${window.config.baseUrl}/settings`, {
365 9f045397 plundrichov
      headers: {
366
        'Content-Type': 'application/json'
367
      },
368 faed7f5e plundrichov
      credentials: 'include',
369 9f045397 plundrichov
      method: 'POST',
370
      body: JSON.stringify(dataSettingObject),
371
    });
372 ebfe6347 plundrichov
  } catch (e) {
373
    throw 'Server is not available'
374
  }
375 9f045397 plundrichov
376 ebfe6347 plundrichov
  if (!response.ok) {
377 9f045397 plundrichov
    switch (response.status) {
378 ebfe6347 plundrichov
      case 401:
379 5bedee9e plundrichov
        window.location.replace(`/login`)
380 ebfe6347 plundrichov
      case 403:
381 5bedee9e plundrichov
        window.location.replace(`/login`)
382 9f045397 plundrichov
      case 500:
383 ebfe6347 plundrichov
        throw new Error('Internal server error.')
384 9f045397 plundrichov
      default:
385 ebfe6347 plundrichov
        throw new Error(response.statusText)
386
    }    
387
  }
388 9f045397 plundrichov
}
389
390
// ****************** LOAD DATA to YOUR REQUESTS - EMPLOYEE ******************
391
392 5bedee9e plundrichov
export async function loadYourRequests(currentUser) {
393 ebfe6347 plundrichov
  let response;
394
  
395 9f045397 plundrichov
  try {
396 ebfe6347 plundrichov
    response = await fetch(
397 5bedee9e plundrichov
      `${window.config.baseUrl}/user/${currentUser.id}/calendar?from=2020/06/24&status=PENDING`, {
398 faed7f5e plundrichov
        credentials: 'include',
399 9f045397 plundrichov
      }
400
    );
401 ebfe6347 plundrichov
  } catch (e) {
402
    throw 'Server is not available'
403
  }
404 9f045397 plundrichov
405
  if (response.ok) {
406
    const data = await response.json();
407
    return data;
408
  } else {
409 ebfe6347 plundrichov
      switch (response.status) {
410
        case 400:
411
          throw new Error('Bad request. Check query parameters.')
412
        case 401:
413 5bedee9e plundrichov
          window.location.replace(`/login`)
414 ebfe6347 plundrichov
        case 403:
415 5bedee9e plundrichov
          window.location.replace(`/login`)
416 ebfe6347 plundrichov
        case 500:
417
          throw new Error('Internal server error.')
418
        default:
419
          throw new Error(response.statusText)
420
      }    
421
    }
422 9f045397 plundrichov
}
423
424 ebfe6347 plundrichov
// ****************** LOAD DATA - UPCOMING REQUESTS - EMPLOYER ****************** //tady
425 9f045397 plundrichov
export async function loadAdminRequests() {
426 ebfe6347 plundrichov
  let response;
427
428 9f045397 plundrichov
  try {
429 ebfe6347 plundrichov
    response = await fetch(
430 faed7f5e plundrichov
      `${window.config.baseUrl}/users/requests/vacation?status=PENDING`, {
431
        credentials: 'include',
432 9f045397 plundrichov
      },
433
    );
434 ebfe6347 plundrichov
  } catch (e) {
435
    throw 'Server is not available'
436
    } 
437
  
438
  if (response.ok) {
439 9f045397 plundrichov
    const data = await response.json();
440
      return data;
441
  } else {
442 ebfe6347 plundrichov
      switch (response.status) {
443
        case 400:
444
          throw new Error('Bad request. Check query parameters.')
445
        case 401:
446 5bedee9e plundrichov
          window.location.replace(`/login`)
447 ebfe6347 plundrichov
        case 403:
448 5bedee9e plundrichov
          window.location.replace(`/login`)
449 ebfe6347 plundrichov
        case 500:
450
          throw new Error('Internal server error.')
451
        default:
452
          throw new Error(response.statusText)
453
      }   
454 7495b9eb plundrichov
    }
455 9f045397 plundrichov
}
456
457
// ************** SEND ACCEPTED DATA - UPCOMING REQUESTS - EMPLOYER **************
458 ebfe6347 plundrichov
459 9f045397 plundrichov
export async function sendAcceptedRequest(acceptedRequests) {
460 ebfe6347 plundrichov
  let response;
461
462 9f045397 plundrichov
  try {
463 faed7f5e plundrichov
    response = await fetch(`${window.config.baseUrl}/user/requests?type=VACATION`, {
464 9f045397 plundrichov
      headers: {
465
        'Content-Type': 'application/json',
466
      },
467 faed7f5e plundrichov
      credentials: 'include',
468 9f045397 plundrichov
      method: 'PUT',
469
      body: JSON.stringify(acceptedRequests),
470
    });
471
  } catch (e) {
472 ebfe6347 plundrichov
    throw 'Server is not available'
473 9f045397 plundrichov
    }
474 ebfe6347 plundrichov
475
  if (!response.ok) {
476
    switch (response.status) {
477
      case 400:
478
        throw new Error('Bad request. Check query parameters and request body.')
479
      case 401:
480 5bedee9e plundrichov
        window.location.replace(`/login`)
481 ebfe6347 plundrichov
      case 403:
482 5bedee9e plundrichov
        window.location.replace(`/login`)
483 ebfe6347 plundrichov
      case 404:
484
        throw new Error('Neither vacation nor authorization request with given ID exists.')
485
      case 500:
486
        throw new Error('Internal server error.')
487
      default:
488
        throw new Error(response.statusText)
489
    }   
490
  }
491 9f045397 plundrichov
}
492
493
// ************** SEND REJECTED DATA - UPCOMING REQUESTS - EMPLOYER **************
494
495
export async function sendRejectedRequest(rejectedRequest) {
496 ebfe6347 plundrichov
  let response;
497
  
498 9f045397 plundrichov
  try {
499 faed7f5e plundrichov
    response = await fetch(`${window.config.baseUrl}/user/requests?type=VACATION`, {
500 9f045397 plundrichov
      headers: {
501
        'Content-Type': 'application/json',
502
      },
503 faed7f5e plundrichov
      credentials: 'include',
504 9f045397 plundrichov
      method: 'PUT',
505
      body: JSON.stringify(rejectedRequest),
506
    });
507 ebfe6347 plundrichov
  } catch (e) {
508
    throw 'Server is not available'
509
    }
510
  
511
  if (!response.ok) {
512
    switch (response.status) {
513
      case 400:
514
        throw new Error('Bad request. Check query parameters and request body.')
515
      case 401:
516 5bedee9e plundrichov
        window.location.replace(`/login`)
517 ebfe6347 plundrichov
      case 403:
518 5bedee9e plundrichov
        window.location.replace(`/login`)
519 ebfe6347 plundrichov
      case 404:
520
        throw new Error('Neither vacation nor authorization request with given ID exists.')
521
      case 500:
522
        throw new Error('Internal server error.')
523
      default:
524
        throw new Error(response.statusText)
525
    }    
526 9f045397 plundrichov
  }
527
}