Projekt

Obecné

Profil

Stáhnout (2.83 KB) Statistiky
| Větev: | Tag: | Revize:
1
import React, { useEffect, useState } from 'react';
2
import './App.css';
3
import Nav from './Nav';
4
import Overview from './Overview';
5
import OverviewAdmin from './OverviewAdmin';
6
import Calendar from './Calendar';
7
import UpcomingRequests from './UpcomingRequests';
8
import YourRequests from './YourRequests';
9
import Setting from './Setting';
10
import LogOut from './LogOut';
11
import Login from './Login';
12
import { BrowserRouter, Route, Switch } from 'react-router-dom';
13
import * as api from './api';
14

    
15
export default function App() {
16

    
17
  useEffect(() => {
18
    if (window.location.pathname === '/login' || window.location.pathname === '/logout') return;
19

    
20
    api.getCurrentProfile().then(currentProfile => {
21
      setCurrentUser(currentProfile);
22
    }).catch(reason => {
23
      alert(reason);
24
    });
25
  }, []);
26

    
27
  const [currentUser, setCurrentUser] = useState();
28

    
29

    
30
  return (
31
    <BrowserRouter>
32
      <div className="App">
33
        <Nav currentUser={currentUser} />
34
        <div className="container">
35
          <Switch>
36
            <Route path="/" exact component={() => <Home currentUser={currentUser} setCurrentUser={setCurrentUser}/>}/>
37
            <Route path="/setting">
38
              {currentUser !== undefined && currentUser.role === 'EMPLOYER' ? (
39
                <Setting/>
40
              ) : (
41
                <div className="permissionText column">
42
                  <p>You don&apos;t have permission to access on this server.</p>
43
                </div>
44
              )}
45
            </Route>
46
            <Route path="/logout"><LogOut/></Route>
47
            <Route path="/login"><Login/></Route>
48
          </Switch>
49
        </div>
50
      </div>
51
    </BrowserRouter>
52
  );
53
}
54

    
55
function Home(props) {
56
  const [user, setUser] = useState({});
57
  const [acceptedRequest, setAcceptedRequest] = useState([]);
58

    
59
  // OverviewAdmin state
60
  const [employees, setEmployees] = useState([]);
61

    
62
  return (
63
    <div className="container">
64
      <div className="main-content">
65
        {props.currentUser !== undefined && props.currentUser.role === 'EMPLOYER' ? (
66
          <UpcomingRequests user={user} setUser={setUser} acceptedRequest={acceptedRequest} setAcceptedRequest={setAcceptedRequest} setEmployees={setEmployees}/>
67
        ) : (
68
          <YourRequests user={user} setUser={setUser} acceptedRequest={acceptedRequest} setAcceptedRequest={setAcceptedRequest} currentUser={props.currentUser}/>
69
        )}
70
        <Calendar setUser={setUser} user={user} acceptedRequest={acceptedRequest} setAcceptedRequest={setAcceptedRequest} currentUser={props.currentUser} setEmployees={setEmployees} setCurrentUser={props.setCurrentUser}/>
71
      </div>
72
      {props.currentUser !== undefined && props.currentUser.role === 'EMPLOYER' ? (
73
        <OverviewAdmin employees={employees} setEmployees={setEmployees} />
74
      ) : (
75
        <Overview currentUser={props.currentUser} employees={employees} />
76
      )}
77
    </div>
78
  );
79
}
(2-2/19)