Projekt

Obecné

Profil

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