import Link from 'next/link'
import { useState } from 'react'
import Cookies from 'universal-cookie'
import HeadTag from '../../components/HeadTag'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faTimes } from '@fortawesome/free-solid-svg-icons'
import Modal from '../../components/Modal'
import FunctionsList from '../../components/FunctionsList/FunctionsList'
import AddEditFunction from '../../components/FunctionAdmin/AddEditFunction'
import redirect from '../../utils/redirect'
import '../../public/css/pages/admin.css'

const Admin = (props) => {
  const [isOpen, setIsOpen] = useState(false)

  const toggleModal = () => setIsOpen(!isOpen)

  return (
    <>
      <HeadTag title='Admin - FunctionProject' description="Page d'administration de FunctionProject." />

      {/* Création d'une fonction */}
      {(isOpen)
        ? (
          <Modal toggleModal={toggleModal}>
            <div className='Admin__Modal__container container-fluid'>
              <div className='Admin__Modal__row row'>
                <div className='col-24'>
                  <div className='Admin__Modal-top-container row'>
                    <div className='col-24'>
                      <span onClick={toggleModal} style={{ cursor: 'pointer', position: 'absolute', left: 0 }}>
                        <FontAwesomeIcon icon={faTimes} style={{ width: '1.5rem', color: 'red' }} />
                      </span>
                      <h2 className='text-center'>Crée une nouvelle fonction</h2>
                    </div>
                  </div>
                </div>

                <div className='col-24'>
                  <AddEditFunction defaultInputState={{ type: 'form' }} {...props} />
                </div>
              </div>
            </div>
          </Modal>
        )

        : (
          <FunctionsList isAdmin token={props.user.token}>
            <div className='col-24'>
              <h1 className='Functions__title'>Administration</h1>
              <button onClick={toggleModal} style={{ margin: '0 0 40px 0' }} className='btn btn-dark'>Crée une nouvelle fonction</button>
              <Link href='/admin/manageCategories'>
                <button style={{ margin: '0 0 0 20px' }} className='btn btn-dark'>Gérer les catégories</button>
              </Link>
              <Link href='/admin/manageQuotes'>
                <button style={{ margin: '0 0 0 20px' }} className='btn btn-dark'>Gérer les citations</button>
              </Link>
            </div>
          </FunctionsList>
        )}
    </>
  )
}

export async function getServerSideProps (context) {
  const cookies = new Cookies(context.req.headers.cookie)
  const user = { ...cookies.get('user') }
  if (!user.isAdmin) {
    return redirect(context, '/404')
  }
  return {
    props: { user }
  }
}

export default Admin
