Projekt

Obecné

Profil

Stáhnout (12.8 KB) Statistiky
| Větev: | Tag: | Revize:
1
// ******************** Log Out ********************
2

    
3
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
// ******************** GET DATA APP getCurrentProfile ********************
30

    
31
export const getCurrentProfile = async () => {
32

    
33
  let response;
34

    
35
  try {
36
    response = await fetch(
37
      `${window.config.baseUrl}/users/current/profile`, {
38

    
39
        credentials: 'include'
40
      }
41
    );    
42
  } catch (e) {
43
    throw 'Server is not available'
44
    }
45

    
46
  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
      photo: data.photo,
56
      takenSickday: data.takenSickDayCount
57
    }
58
  } else {
59
      switch (response.status) {
60
        case 401:
61
          window.location.replace(`/login`)
62
          break;
63
        case 403:
64
          window.location.replace(`/login`)
65
          break;
66
        case 500:
67
          throw new Error('Internal server error.')
68
        default:
69
          throw new Error(response.statusText)
70
      }
71
    }
72
}
73

    
74
// ******************** LOAD DATA to CALENDAR - EMPLOYEE ********************
75
export const getUserCalendar = async (currentUser, fromDate ) => {
76

    
77
  let response;
78

    
79
  try {
80
    response = await fetch(
81
      `${window.config.baseUrl}/user/${currentUser.id}/calendar?from=${fromDate}&status=ACCEPTED&status=REJECTED`, {
82
        headers: {
83
          'Accept': 'application/json',
84
        },
85
        credentials: 'include',
86
        method: 'GET',
87
      }
88
    );
89
  } catch (e) {
90
    throw 'Server is not available'
91
  }
92

    
93
  if (response.ok) {
94
    const data = await response.json();
95
  
96
    return data.filter(day => {
97
      return day.status !== 'PENDING'
98
    }).map(day => {
99

    
100
    const newDate = day.date.split("/").join("-");
101

    
102
    return ({
103
      title: currentUser.name,
104
      start: newDate,
105
      backgroundColor: day.status === 'REJECTED' ? 'red' : 'green'
106
    })
107
  })
108
  } else {
109
      switch (response.status) {
110
        case 400:
111
          throw new Error('Bad request. Check query parameters.')
112
        case 401:
113
          window.location.replace(`/login`)
114
        case 403:
115
          window.location.replace(`/login`)
116
        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
    }
124
}
125

    
126
// ******************** LOAD DATA to CALENDAR - EMPLOYER ********************
127

    
128
export const getAdminCalendar = async () => {
129

    
130
  let response;
131

    
132
  try {
133
    response = await fetch(
134
      `${window.config.baseUrl}/users/requests/vacation?status=ACCEPTED`, {
135
        headers: {
136
          'Accept': 'application/json',
137
        },
138
        credentials: 'include',
139
        method: 'GET',
140
      }
141
    );
142
  } catch (e) {
143
    throw 'Server is not available'
144
  }
145

    
146
  if (response.ok) {
147
    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
      switch (response.status) {
160
        case 400:
161
          throw new Error('Bad request. Check query parameters.')
162
        case 401:
163
          window.location.replace(`/login`)
164
        case 403:
165
          window.location.replace(`/login`)
166
        case 500:
167
          throw new Error('Internal server error.')
168
        default:
169
          throw new Error(response.statusText)
170
      }
171
    }
172
}
173

    
174
// ******************** ADD EVENT to CALENDAR - EMPLOYEE ********************
175

    
176
export async function addEventApi(dataAddEventEmployee) {
177
  let response;
178

    
179
  try {
180
  // send accepted request to server
181
    response = await fetch(`${window.config.baseUrl}/user/calendar/create`, {
182
      headers: {
183
        'Content-Type': 'application/json',
184
      },
185
      credentials: 'include',
186
      method: 'POST',
187
  // object which is sent to server
188
  body: JSON.stringify(dataAddEventEmployee),
189
    });
190
  } catch (e) {
191
    throw 'Server is not available'
192
  }
193

    
194
  if (!response.ok) {
195
      switch (response.status) {
196
        case 400:
197
          throw new Error('Bad request. Check request body.')
198
        case 401:
199
          window.location.replace(`/login`)
200
        case 403:
201
          window.location.replace(`/login`)
202
        case 500:
203
          throw new Error('Internal server error.')
204
        default:
205
          throw new Error(response.statusText)
206
      }    
207
    }
208
}
209
      
210
// ******************** ADD EVENT to CALENDAR - EMPLOYER ********************
211

    
212
export async function addEventApiAdmin(dataAddEventAdmin) {
213
  let response;
214

    
215
  try {
216
  // send accepted request to server
217
    response = await fetch(`${window.config.baseUrl}/user/calendar/create`, {
218
      headers: {
219
        'Content-Type': 'application/json',
220
    },
221
    credentials: 'include',
222
      method: 'POST',
223
    // object which is sent to server
224
      body: JSON.stringify(dataAddEventAdmin),
225
    });
226
  } catch (e) {
227
    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
        window.location.replace(`/login`)
236
      case 403:
237
        window.location.replace(`/login`)
238
      case 500:
239
        throw new Error('Internal server error.')
240
      default:
241
        throw new Error(response.statusText)
242
    }    
243
  }
244
}
245

    
246
// ******************** GET DATA to OVERVIEW - EMPLOYER ********************
247

    
248
export const getUsersOverview = async () => {
249
  let response;
250

    
251
  try {
252
  response = await fetch (
253
    `${window.config.baseUrl}/users`, {
254
      credentials: 'include',
255
    }
256
  );
257
  } catch (e) {
258
    throw 'Server is not available'
259
  }
260
  
261
  if (response.ok) {
262

    
263
    const data = await response.json();
264
    return data.map(user => {
265

    
266
     return ({
267
           name: user.firstName + ' ' + user.lastName,
268
           id: user.id,
269
           sickday: user.sickDayCount,
270
           holiday: user.vacationCount,
271
           takenSickday: user.takenSickDayCount,
272
           role: user.role
273
        })
274
    })
275
  } else {
276
    switch (response.status) {
277
      case 400:
278
        throw new Error('Bad request. Check query parameters.')
279
      case 401:
280
        window.location.replace(`/login`)
281
      case 403:
282
        window.location.replace(`/login`)
283
      case 500:
284
        throw new Error('Internal server error.')
285
      default:
286
        throw new Error(response.statusText)
287
    }    
288
  }
289
}
290

    
291
// ******************** SAVE DATA to OVERVIEW - EMPLOYER ********************
292

    
293
export async function saveDataOverview(dataOverviewObject) {
294
  let response;
295

    
296
  try {
297
    // send accepted request to server
298
        response = await fetch(`${window.config.baseUrl}/user/settings`, {
299
          headers: {
300
            'Content-Type': 'application/json',
301
          },
302
          credentials: 'include',
303
          method: 'PUT',
304
 
305
    // object which is sent to server
306
          body: JSON.stringify(dataOverviewObject),        
307
        });
308
  } catch (e) {
309
    throw 'Server is not available'
310
  }
311

    
312
  if (!response.ok) {
313
    switch (response.status) {
314
      case 400:
315
        throw new Error('Bad request. Check query parameters.')
316
      case 401:
317
        window.location.replace(`/login`)
318
      case 403:
319
        window.location.replace(`/login`)
320
      case 500:
321
        throw new Error('Internal server error.')
322
      default:
323
        throw new Error(response.statusText)
324
    }
325
  }    
326
}
327

    
328
// ******************** LOAD DATA to SETTING - EMPLOYER ********************
329
export const getSettingData = async () =>  {
330
  let response;
331

    
332
  try {
333
    response = await fetch(
334
      `${window.config.baseUrl}/settings`, {
335
        credentials: 'include',
336
      }
337
    );
338

    
339
  } catch (e) {
340
    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
    }
356

    
357
}
358

    
359
// ******************** SAVE DATA to SETTING - EMPLOYER ********************
360
export async function saveDataSetting(dataSettingObject) {
361
  let response;
362

    
363
  try {
364
    response = await fetch(`${window.config.baseUrl}/settings`, {
365
      headers: {
366
        'Content-Type': 'application/json'
367
      },
368
      credentials: 'include',
369
      method: 'POST',
370
      body: JSON.stringify(dataSettingObject),
371
    });
372
  } catch (e) {
373
    throw 'Server is not available'
374
  }
375

    
376
  if (!response.ok) {
377
    switch (response.status) {
378
      case 401:
379
        window.location.replace(`/login`)
380
      case 403:
381
        window.location.replace(`/login`)
382
      case 500:
383
        throw new Error('Internal server error.')
384
      default:
385
        throw new Error(response.statusText)
386
    }    
387
  }
388
}
389

    
390
// ****************** LOAD DATA to YOUR REQUESTS - EMPLOYEE ******************
391

    
392
export async function loadYourRequests(currentUser) {
393
  let response;
394
  
395
  try {
396
    response = await fetch(
397
      `${window.config.baseUrl}/user/${currentUser.id}/calendar?from=2020/06/24&status=PENDING`, {
398
        credentials: 'include',
399
      }
400
    );
401
  } catch (e) {
402
    throw 'Server is not available'
403
  }
404

    
405
  if (response.ok) {
406
    const data = await response.json();
407
    return data;
408
  } else {
409
      switch (response.status) {
410
        case 400:
411
          throw new Error('Bad request. Check query parameters.')
412
        case 401:
413
          window.location.replace(`/login`)
414
        case 403:
415
          window.location.replace(`/login`)
416
        case 500:
417
          throw new Error('Internal server error.')
418
        default:
419
          throw new Error(response.statusText)
420
      }    
421
    }
422
}
423

    
424
// ****************** LOAD DATA - UPCOMING REQUESTS - EMPLOYER ****************** //tady
425
export async function loadAdminRequests() {
426
  let response;
427

    
428
  try {
429
    response = await fetch(
430
      `${window.config.baseUrl}/users/requests/vacation?status=PENDING`, {
431
        credentials: 'include',
432
      },
433
    );
434
  } catch (e) {
435
    throw 'Server is not available'
436
    } 
437
  
438
  if (response.ok) {
439
    const data = await response.json();
440
      return data;
441
  } else {
442
      switch (response.status) {
443
        case 400:
444
          throw new Error('Bad request. Check query parameters.')
445
        case 401:
446
          window.location.replace(`/login`)
447
        case 403:
448
          window.location.replace(`/login`)
449
        case 500:
450
          throw new Error('Internal server error.')
451
        default:
452
          throw new Error(response.statusText)
453
      }   
454
    }
455
}
456

    
457
// ************** SEND ACCEPTED DATA - UPCOMING REQUESTS - EMPLOYER **************
458

    
459
export async function sendAcceptedRequest(acceptedRequests) {
460
  let response;
461

    
462
  try {
463
    response = await fetch(`${window.config.baseUrl}/user/requests?type=VACATION`, {
464
      headers: {
465
        'Content-Type': 'application/json',
466
      },
467
      credentials: 'include',
468
      method: 'PUT',
469
      body: JSON.stringify(acceptedRequests),
470
    });
471
  } catch (e) {
472
    throw 'Server is not available'
473
    }
474

    
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
        window.location.replace(`/login`)
481
      case 403:
482
        window.location.replace(`/login`)
483
      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
}
492

    
493
// ************** SEND REJECTED DATA - UPCOMING REQUESTS - EMPLOYER **************
494

    
495
export async function sendRejectedRequest(rejectedRequest) {
496
  let response;
497
  
498
  try {
499
    response = await fetch(`${window.config.baseUrl}/user/requests?type=VACATION`, {
500
      headers: {
501
        'Content-Type': 'application/json',
502
      },
503
      credentials: 'include',
504
      method: 'PUT',
505
      body: JSON.stringify(rejectedRequest),
506
    });
507
  } 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
        window.location.replace(`/login`)
517
      case 403:
518
        window.location.replace(`/login`)
519
      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
  }
527
}
(13-13/18)