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'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
|
}
|