Projekt

Obecné

Profil

Stáhnout (12.8 KB) Statistiky
| Větev: | Tag: | Revize:
1
// ******************** GET DATA APP getCurrentProfile ********************
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
export const getCurrentProfile = async () => {
30

    
31
  let response;
32

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

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

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

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

    
75
  let response;
76

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

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

    
98
    const newDate = day.date.split("/").join("-");
99

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

    
124
// ******************** LOAD DATA to CALENDAR - EMPLOYER ********************
125

    
126
export const getAdminCalendar = async () => {
127

    
128
  let response;
129

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

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

    
172
// ******************** ADD EVENT to CALENDAR - EMPLOYEE ********************
173

    
174
export async function addEventApi(dataAddEventEmployee) {
175
  let response;
176

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

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

    
210
export async function addEventApiAdmin(dataAddEventAdmin) {
211
  let response;
212

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

    
244
// ******************** GET DATA to OVERVIEW - EMPLOYER ********************
245

    
246
export const getUsersOverview = async () => {
247
  let response;
248

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

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

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

    
289
// ******************** SAVE DATA to OVERVIEW - EMPLOYER ********************
290

    
291
export async function saveDataOverview(dataOverviewObject) {
292
  let response;
293

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

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

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

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

    
337
  } catch (e) {
338
    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
    }
354

    
355
}
356

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

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

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

    
388
// ****************** LOAD DATA to YOUR REQUESTS - EMPLOYEE ******************
389

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

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

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

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

    
455
// ************** SEND ACCEPTED DATA - UPCOMING REQUESTS - EMPLOYER **************
456

    
457
export async function sendAcceptedRequest(acceptedRequests) {
458
  let response;
459

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

    
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
        window.location.replace(`/login`)
479
      case 403:
480
        window.location.replace(`/login`)
481
      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
}
490

    
491
// ************** SEND REJECTED DATA - UPCOMING REQUESTS - EMPLOYER **************
492

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