Projekt

Obecné

Profil

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