import { lazy } from 'react';

// project import
import Loadable from 'components/Loadable';
// import MinimalLayout from 'layout/MinimalLayout';
import MainLayout from 'layout/MainLayout';

// render - login
const AuthLogin = Loadable(lazy(() => import('pages/authentication/Login')));
const AuthRegister = Loadable(lazy(() => import('pages/authentication/RegisterCustom')));
const RegisterForm = Loadable(lazy(() => import('pages/authentication/Register')));
const BusRegisterForm = Loadable(lazy(() => import('pages/authentication/BusRegister')));
const IAmSmartRegister = Loadable(lazy(() => import('pages/authentication/IAmSmartRegister')));
const ErrorPage = Loadable(lazy(() => import('pages/extra-pages/ErrorPage')));

const ForgotPassword = Loadable(lazy(() => import('pages/authentication/ForgotPassword')));
const AfterForgotPasswordPage = Loadable(lazy(() => import('pages/authentication/ForgotPassword/AfterForgotPasswordPage')));
const ForgotPassword_Callback = Loadable(lazy(() => import('pages/authentication/ForgotPassword/AuthCallback')));
const ForgotPassword_Success = Loadable(lazy(() => import('pages/authentication/ForgotPassword/AuthCallback/ResetPasswordSuccess')));

const ForgotUsername = Loadable(lazy(() => import('pages/authentication/ForgotUsername')));
const AfterForgotUsernamePage = Loadable(lazy(() => import('pages/authentication/ForgotUsername/AfterForgotPasswordPage')));
const ForgotUsername_Callback = Loadable(lazy(() => import('pages/authentication/ForgotUsername/AuthCallback')));
const ForgotUsername_Success = Loadable(lazy(() => import('pages/authentication/ForgotUsername/AuthCallback/ResetPasswordSuccess')));

const IAmSmart_DirectLoginCallback = Loadable(lazy(() => import('pages/iAmSmart/DirectLoginCallback')));
//const IAmSmart_FallCallback = Loadable(lazy(() => import('pages/iAmSmart/FallCallback')));
const IAmSmart_FailCallback = Loadable(lazy(() => import('pages/iAmSmart/FailCallback')));
const FailCallback_VerifyMail = Loadable(lazy(() => import('pages/iAmSmart/FailCallback_VerifyMail')));
const IAmSmart_AuthCallback = Loadable(lazy(() => import('pages/iAmSmart/AuthCallback')));
const IAmSmart_RegistryCallback = Loadable(lazy(() => import('pages/iAmSmart/RegistryCallback')));

//TODO: this page for testing only, please remove at prod
const VerifyPage = Loadable(lazy(() => import('pages/authentication/Verify')));
const Testfps = Loadable(lazy(() => import('pages/Payment/FPS/FPSTest')));
const Payment_FPS_CallBack = Loadable(lazy(() => import('pages/Payment/FPS/fpscallback')));

// ==============================|| AUTH ROUTING ||============================== //

const LoginRoutes = {
  path: '/',
  element: <MainLayout />,
  children: [
    {
      path: 'login',
      element: <AuthLogin />
    },
    {
      path: 'register',
      element: <AuthRegister />
    },
    {
      path: 'registerFrom',
      element: <RegisterForm />
    },
    {
      path: 'registerFromOrganization',
      element: <BusRegisterForm />
    },
    {
      path: 'iAmSmartRegisterFrom',
      element: <IAmSmartRegister />
    },
    {
      path: 'error',
      element: <ErrorPage/>
    },
    {
      path: 'iamsmart/logincallback',
      element: <IAmSmart_DirectLoginCallback/>
    },
    {
      path: 'iamsmart/loginfallback',
      element: <IAmSmart_FailCallback/>
    },
    {
      path: 'iamsmart/notverify',
      element: <FailCallback_VerifyMail/>
    },
    {
      path: 'iamsmart/authcallback',
      element: <IAmSmart_AuthCallback/>
    },
    {
      path: 'iamsmart/registrycallback',
      element: <IAmSmart_RegistryCallback/>
    },
    {
      path: 'iamsmart/loginFail',
      element: <IAmSmart_FailCallback/>
    },
    {
      path: 'verify/:verifyCode/:email',
      element: <VerifyPage/>
    },
    {
      path: 'testfps',
      element: <Testfps/>
    },
    {
      path: 'testfpscallback',
      element: <Payment_FPS_CallBack/>
    },
    {
      path: 'forgot/password',
      element: <ForgotPassword/>
    },
    {
      path: 'forgot/password/sent',
      element: <AfterForgotPasswordPage/>
    },
    {
      path: 'forgot/password/verify/:verifyCode/:email',
      element: <ForgotPassword_Callback/>
    },
    {
      path: 'forgot/password/success',
      element: <ForgotPassword_Success/>
    },
    {
      path: 'forgot/username',
      element: <ForgotUsername/>
    },
    {
      path: 'forgot/username/sent',
      element: <AfterForgotUsernamePage/>
    },
    {
      path: 'forgot/username/verify/:verifyCode/:email',
      element: <ForgotUsername_Callback/>
    },
    {
      path: 'forgot/username/success',
      element: <ForgotUsername_Success/>
    },
  ]
};

export default LoginRoutes;
