import React, { Component } from 'react';
import './App.css';
import TopMenu from './react/entity/TopMenu';
import PublicPage from './react/pages/PublicPage';
import PrivatePage from './react/pages/PrivatePage';
import UserManagement from '../src/react/user/UserManagement';
import DegreeCourseManagement from '../src/react/degreeCourse/DegreeCourseManagement';
import CreateNewUserForm from '../src/react/user/components/CreateNewUser';
import DegreeCourseApplicationManagement from '../src/react/degreeCourseApplication/DegreeCourseApplicationManagement'
import { connect } from 'react-redux';
import { Routes, Route, Navigate } from 'react-router-dom';

const mapStateToProps = state => {
  return {
    user: state.AuthenticationReducer.user
};
}

class App extends Component {
  render() {
    const user = this.props.user
    let workspace;

    if (user) {
      workspace =
        <Routes>
          <Route path="/" element={<PrivatePage />}></Route>
          <Route exact path="/userManagement" element={<UserManagement />}></Route>
          <Route path='/createNewUserForm' element={<CreateNewUserForm />}></Route>
          <Route exact path='/degreeCourseManagement' element={<DegreeCourseManagement />}></Route>
          <Route path='/degreeCourseApplicationManagement' element={<DegreeCourseApplicationManagement />}></Route>
          <Route path='*' element={<Navigate to="/" />}></Route>
        </Routes>
    } else {
      workspace =
        <Routes>
          <Route path="/" element={<PublicPage />}></Route>
          <Route path='*' element={<Navigate to="/" />}></Route>
        </Routes>
    }

    return (
      <div className="App">
        <TopMenu />
        {workspace}
      </div>
    );
  }
}


export default connect(mapStateToProps)(App);