import React from 'react';

import '@patternfly/react-core/dist/styles/base.css';
import {
  Nav,
  NavList
} from '@patternfly/react-core';

import { NavLink, Route, Switch } from 'react-router-dom';
import EventEmitter from 'wolfy87-eventemitter';

import { IbutsuPage } from './components';
import { AdminHome } from './pages/admin/home';
import { UserList } from './pages/admin/user-list';
import { UserEdit } from './pages/admin/user-edit';
import { ProjectList } from './pages/admin/project-list';
import { ProjectEdit } from './pages/admin/project-edit';
import { AuthService } from './services/auth';
import './app.css';


export class Admin extends React.Component {
  constructor(props) {
    super(props);
    this.eventEmitter = new EventEmitter();
  }

  componentDidMount() {
    AuthService.isSuperAdmin().then(isSuperAdmin => {
      if (!isSuperAdmin) {
        window.location = '/';
      }
    });
  }

  render() {
    const navigation = (
      <Nav onSelect={this.onNavSelect} theme="dark" aria-label="Nav">
        <NavList>
          <li className="pf-c-nav__item">
            <NavLink to="/admin" className="pf-c-nav__link" activeClassName="pf-m-active" exact>Admin Home</NavLink>
          </li>
          <li className="pf-c-nav__item">
            <NavLink to="/admin/users" className="pf-c-nav__link" activeClassName="pf-m-active">Users</NavLink>
          </li>
          <li className="pf-c-nav__item">
            <NavLink to="/admin/projects" className="pf-c-nav__link" activeClassName="pf-m-active">Projects</NavLink>
          </li>
        </NavList>
      </Nav>
    );

    return (
      <React.Fragment>
        <IbutsuPage eventEmitter={this.eventEmitter} navigation={navigation} title="Administration | Ibutsu">
          <Switch>
            <Route path="/admin" component={AdminHome} exact />
            <Route path="/admin/users" component={UserList} exact />
            <Route path="/admin/users/:id" component={UserEdit} />
            <Route path="/admin/projects" component={ProjectList} exact />
            <Route path="/admin/projects/:id" component={ProjectEdit} exact />
          </Switch>
        </IbutsuPage>
      </React.Fragment>
    );
  }
}