import { Suspense, lazy, ElementType } from 'react'; import { Navigate, useRoutes, useLocation } from 'react-router-dom'; // layouts import DashboardLayout from '../layouts/dashboard'; import LogoOnlyLayout from '../layouts/LogoOnlyLayout'; // components import LoadingScreen from '../components/LoadingScreen'; import GuestGuard from '../guards/GuestGuard'; import { RegisterForm } from '../sections/auth/register'; import Register from '../pages/auth/Register'; import VerifyCode from '../pages/auth/VerifyCode'; import { AuthProvider } from '../contexts/LaravelAuthContext'; import AuthGuard from '../guards/AuthGuard'; import { Link, useParams, useSearchParams } from 'react-router-dom'; import Prescription from '@/pages/Report/Prescription/Index'; import DoctorRating from '@/pages/Report/DoctorRating/Index'; // ---------------------------------------------------------------------- const Loadable = (Component: ElementType) => (props: any) => { // eslint-disable-next-line react-hooks/rules-of-hooks const { pathname } = useLocation(); return ( }> ); }; export default function Router() { return useRoutes([ { path: 'auth', children: [ { path: 'login', element: ( ), }, { path: 'register', element: ( ), }, // { path: 'login-unprotected', element: }, // { path: 'register-unprotected', element: }, { path: 'reset-password', element: }, { path: 'forget-password', element: }, // { path: 'verify', element: }, ], }, // { // path: '/', // element: , // }, { path: '/', element: ( ), children: [ { element: , index: true }, { path: 'dashboard', element: , }, { path: 'members', element: , }, { path: 'corporates', element: , }, { path: 'corporates/create', element: , }, { path: 'corporates', element: , // Layout that use the context children: [ { path: ':corporate_id', element: , }, { path: ':corporate_id/services', element: , }, { path: ':corporate_id/services/:service_code', element: , }, { path: ':corporate_id/services/:service_code/history', element: , }, { path: ':corporate_id/plans/create', element: , }, { path: ':corporate_id/plans/:plan_id/history', element: , }, { path: ':corporate_id/plans', element: , }, { path: ':corporate_id/benefits/create', element: , }, { path: ':corporate_id/benefits', element: , }, { path: ':corporate_id/benefits/:benefit_id/history', element: , }, { path: ':corporate_id/benefits/:benefit_id/edit', element: , }, { path: ':corporate_id/members', element: , }, { path: ':corporate_id/members/:member_id/history', element: , }, { path: ':corporate_id/divisions', element: , }, { path: ':corporate_id/divisions/create', element: , }, { path: ':corporate_id/divisions/:id/edit', element: , }, { path: ':corporate_id/formulariums', element: , }, { path: ':corporate_id/formulariums/create', element: }, { path: ':corporate_id/formulariums/:id/history', element: }, { path: ':corporate_id/diagnosis-exclusions', element: , }, { path: ':corporate_id/diagnosis-exclusions/:exclusion_id/edit', element: , }, { path: ':corporate_id/diagnosis-exclusions/history', element: , }, { path: ':corporate_id/hospitals', element: , }, { path: ':corporate_id/hospitals/create', element: , }, { path: ':corporate_id/hospitals/edit/:id/:organization_id', element: , }, { path: ':corporate_id/hospitals/:id/history', element: , }, { path: ':corporate_id/claim-history', element: , }, { path: ':corporate_id/corporate-history', element: , }, ], }, { path: 'corporates/:corporate_id/edit', element: , }, { path: 'case_management', // Case Management element: '', children: [ { path: 'daily_monitoring', // Daily Monitoring element: }, { path: 'daily_monitoring/:member_id/claims', element: }, { path: 'daily_monitoring/:member_id/claims/:claim_code/add_monitoring', element: }, { path: 'daily_monitoring/:member_id/claims/:claim_code/list_monitoring', element: }, { path: 'laboratorium_result', // Laboratorium Result element: }, { path: 'laboratorium_result/:member_id/claims', element: }, { path: 'laboratorium_result/:member_id/claims/:claim_code/add_lab_result', element: }, { path: 'laboratorium_result/:member_id/claims/:claim_code/list_lab_result', element: }, { path: 'inpatient_monitoring', // Inpatient Monitoring element: }, ] }, { path: 'corporates/:corporate_id/corporate-plans/create', element: , }, { path: 'corporates/:corporate_id/corporate-plans/:id/edit', element: , }, { path: 'corporates/:corporate_id/corporate-plans', element: , }, { path: 'corporates/:corporate_id/corporate-benefits/create', element: , }, { path: 'corporates/:corporate_id/corporate-benefits', element: , }, { path: 'corporates/:corporate_id/corporate-benefits/:id/edit', element: , }, { path: 'master/doctors', element: , }, { path: 'master/doctors/create', element: , }, { path: 'master/doctors/:id/edit', element: , }, { path: 'master/hospitals', element: , }, { path: 'master/hospitals/create', element: , }, { path: 'master/hospitals/:id/edit', element: , }, { path: 'master/diagnosis', element: , }, { path: 'master/diagnosis/create', element: , }, { path: 'master/diagnosis-template/:id/diagnosis-template-history', element: , }, { path: 'master/diagnosis-template/:id/edit', element: , }, { path: 'master/diagnosis/:diagnosis_template_id', element: , }, { path: 'master/diagnosis/:id/diagnosis-history', element: , }, { path: 'master/drugs', element: , }, { path: 'master/formularium/:formularium_template_id', element: , }, { path: 'master/formularium/create/:formularium_template_id', element: , }, { path: 'master/formularium-template', element: , }, { path: 'master/formularium-template/create', element: , }, { path: 'master/formularium-template/:id/formularium-template-history', element: , }, { path: 'master/formularium-template/:id/edit', element: , }, { path: 'master/formularium-template-v2', element: }, { path: 'master/formularium-template-v2/create', element: }, { path: 'master/formularium-template-v2/:id/edit', element: }, { path: 'master/formularium-template-v2/:id/history', element: }, { path: 'master/formularium-template-v2/:id/detail', element: }, { path: 'report/appointments', element: , }, { path: 'report/appointments/:id', element: , }, { path: 'report/appointments/:id/show', element: , }, { path: 'report/appointments/:id/edit', element: , }, { path: 'report/live-chat', element: , }, { path: 'report/live-chat/:id', element: , }, { path: 'report/live-chat/:id/show', element: , }, { path: 'report/live-chat/:id/edit', element: , }, { path: 'report/prescription', element: , }, { path: 'report/doctorrating', element: , }, { path: 'report/linksehat-payments', element: , }, { path: 'claims', element: , }, { path: 'claims/create', element: , }, { path: 'claims/edit/:id', element: , }, { path: 'claims/detail/:id', element: , }, { path: 'claims/:id', element: , }, { path: 'claim-requests', element: , }, { path: 'claim-requests/create', element: , }, { path: 'claim-requests/edit/:id', element: , }, { path: 'claim-requests/detail/:id', element: , }, { path: 'profile', element: , }, { path: 'cs-membership', element: , }, { path: 'custormer-service/request', element: , }, { path: 'custormer-service/request/detail/:id', element: , }, { path: 'custormer-service/final-log', element: , }, { path: 'custormer-service/final-log/detail/:id', element: , }, ], }, // { // path: '/dashboard', // element: , // children: [ // { element: , index: true }, // { path: 'one', element: // }, // { path: 'two', element: // }, // { path: 'three', element: // }, // { // path: 'user', // children: [ // { element: , index: true }, // { path: 'four', element: }, // { path: 'six', element: }, // ], // }, // ], // }, { path: '*', element: , children: [ { path: '404', element: }, { path: '*', element: }, ], }, { path: '*', element: }, ]); } const Login = Loadable(lazy(() => import('../pages/auth/Login'))); const ResetPassword = Loadable(lazy(() => import('../pages/auth/ResetPassword'))); const ForgetPassword = Loadable(lazy(() => import('../pages/auth/ForgetPassword'))); // Dashboard const Dashboard = Loadable(lazy(() => import('../pages/Dashboard'))); const NotFound = Loadable(lazy(() => import('../pages/Page404'))); // Members const Members = Loadable(lazy(() => import('../pages/Members/Index'))); const MedicinesCreate = Loadable(lazy(() => import('../pages/Medicines/Create'))); // Corporate const ConfigLayout = Loadable(lazy(() => import('../pages/Corporates/ConfigLayout'))); const Corporate = Loadable(lazy(() => import('../pages/Corporates/Index'))); const CorporateCreate = Loadable(lazy(() => import('../pages/Corporates/CreateUpdate'))); const CorporateShow = Loadable(lazy(() => import('../pages/Corporates/Show'))); const CorporateDivisions = Loadable(lazy(() => import('../pages/Corporates/Division/Index'))); const CorporateDivisionsCreate = Loadable( lazy(() => import('../pages/Corporates/Division/CreateUpdate')) ); const CorporateMembers = Loadable(lazy(() => import('../pages/Corporates/Member/Index'))); const CorporateHistoryMembers = Loadable(lazy(() => import('../pages/Corporates/Member/History'))); const BenefitCreate = Loadable(lazy(() => import('../pages/Corporates/Benefit/Create'))); const Benefits = Loadable(lazy(() => import('../pages/Corporates/Benefit/Index'))); const CorporateBenefitsCreate = Loadable( lazy(() => import('../pages/Corporates/CorporateBenefit/CreateUpdate')) ); const CorporateBenefits = Loadable( lazy(() => import('../pages/Corporates/CorporateBenefit/Index')) ); const CorporateBenefitsHistory = Loadable( lazy(() => import('../pages/Corporates/Benefit/sections/History')) ); const CorporateBenefitsEdit = Loadable( lazy(() => import('../pages/Corporates/Benefit/Create')) ); const CorporatePlanCreate = Loadable( lazy(() => import('../pages/Corporates/CorporatePlan/CreateUpdate')) ); const CorporatePlans = Loadable(lazy(() => import('../pages/Corporates/CorporatePlan/Index'))); const PlanCreate = Loadable(lazy(() => import('../pages/Corporates/Plan/Create'))); const Plans = Loadable(lazy(() => import('../pages/Corporates/Plan/Index'))); const CorporatePlansHistory = Loadable(lazy(() => import('../pages/Corporates/Plan/sections/History'))); const DiagnosisExclusions = Loadable( lazy(() => import('../pages/Corporates/DiagnosisExclusion/Index')) ); const EditDiagnosisExclusions = Loadable( lazy(() => import('../pages/Corporates/DiagnosisExclusion/Edit')) ); const DiagnosisExclusionsHistory = Loadable( lazy(() => import('../pages/Corporates/DiagnosisExclusion/History')) ); const CorporateFormularium = Loadable(lazy(() => import('../pages/Corporates/Formularium/Index'))); const CorporateFormulariumCreate = Loadable(lazy(() => import('../pages/Corporates/Formularium/New/CreateForm'))); const CorporateFormulariumHistory = Loadable(lazy(() => import('../pages/Corporates/Formularium/New/History'))) /** * Case Management * ------------------------------- */ // Daily Monitoring const DailyMonitoring = Loadable(lazy(() => import('../pages/CaseManagement/DailyMonitoring/index'))) const DailyMonitoringClaims = Loadable(lazy(() => import('../pages/CaseManagement/DailyMonitoring/Claim'))) const DetailMonitoringForm = Loadable(lazy(() => import('../pages/CaseManagement/DailyMonitoring/Components/DetailMonitoringForm'))) const DetailMonitoringList = Loadable(lazy(() => import('../pages/CaseManagement/DailyMonitoring/Components/DetailMonitoringList'))) // Laboratorium Result const LaboratoriumResult = Loadable(lazy(() => import('../pages/CaseManagement/LaboratoriumResult/index'))) const LaboratoriumResultClaims = Loadable(lazy(() => import('../pages/CaseManagement/LaboratoriumResult/Claim'))) const DetailLabResultForm = Loadable(lazy(() => import('../pages/CaseManagement/LaboratoriumResult/Components/DetailLabResultForm'))) const DetailLabResultList = Loadable(lazy(() => import('../pages/CaseManagement/LaboratoriumResult/Components/DetailLabResultList'))) // Inpatient Monitoring const InpatientMonitoring = Loadable(lazy(() => import('../pages/CaseManagement/InpatientMonitoring/Index'))) /** * Customer Service */ // Request const RequestLog = Loadable(lazy(() => import('../pages/CustomerService/Request/Index'))) const RequestLogDetail = Loadable(lazy(() => import('../pages/CustomerService/Request/Detail'))) // Final LOG const FinalLog = Loadable(lazy(() => import('../pages/CustomerService/FinalLog/Index'))) const FinalLogDetail = Loadable(lazy(() => import('../pages/CustomerService/FinalLog/Detail'))) const MasterDiagnosisTemplate = Loadable(lazy(() => import('../pages/Master/Diagnosis/Master/Index'))); const MasterDiagnosisTemplateCreate = Loadable(lazy(() => import('../pages/Master/Diagnosis/Master/CreateUpdate'))); const MasterDiagnosisTemplateHistories = Loadable( lazy(() => import('../pages/Master/Diagnosis/Master/History')) ); const MasterDiagnosis = Loadable(lazy(() => import('../pages/Master/Diagnosis/Index'))); const MasterDiagnosisHistories = Loadable( lazy(() => import('../pages/Master/Diagnosis/History')) ); const MasterDoctors = Loadable(lazy(() => import('../pages/Master/Doctors/Index'))); const MasterDoctorsCreate = Loadable(lazy(() => import('../pages/Master/Doctors/Create'))); const MasterHospitals = Loadable(lazy(() => import('../pages/Master/Hospitals/Index'))); const MasterHospitalsCreate = Loadable(lazy(() => import('../pages/Master/Hospitals/Create'))); const Appointment = Loadable(lazy(() => import('../pages/Report/Appointments/Index'))); const AppointmentCreate = Loadable(lazy(() => import('../pages/Report/Appointments/Create'))); const AppointmentShow = Loadable(lazy(() => import('../pages/Report/Appointments/Show'))); const Livechat = Loadable(lazy(() => import('../pages/Report/Livechat/Index'))); const LivechatCreate = Loadable(lazy(() => import('../pages/Report/Livechat/Create'))); const LivechatShow = Loadable(lazy(() => import('../pages/Report/Livechat/Show'))); const LinksehatPayment = Loadable(lazy(() => import('../pages/Report/LinksehatPayments/Index'))); const MasterDrug = Loadable(lazy(() => import('../pages/Master/Drug/Index'))); const MasterFormularium = Loadable(lazy(() => import('../pages/Master/Formularium/Index'))); const MasterFormulariumCreate = Loadable(lazy(() => import('../pages/Master/Formularium/Create'))); const MasterFormulariumTemplate = Loadable(lazy(() => import('../pages/Master/Formularium/Master/Index'))); const MasterFormulariumTemplateCreate = Loadable(lazy(() => import('../pages/Master/Formularium/Master/CreateUpdate'))); const MasterFormulariumTemplateHistories = Loadable(lazy(() => import('../pages/Master/Formularium/Master/History'))); const MasterFormulariumTemplateV2 = Loadable(lazy(() => import('../pages/Master/FormulariumV2/Index'))); const MasterFormulariumTemplateCreateV2 = Loadable(lazy(() => import('../pages/Master/FormulariumV2/CreateUpdate'))); const MasterFormulariumTemplateHistoriesV2 = Loadable(lazy(() => import('../pages/Master/FormulariumV2/History'))); const MasterFormulariumTemplateDetailV2 = Loadable(lazy(() => import('../pages/Master/FormulariumV2/Detail/Index'))) const CorporateServices = Loadable(lazy(() => import('../pages/Corporates/Services/Index'))); const CorporateServicesCreate = Loadable(lazy(() => import('../pages/Corporates/Services/Create'))); const CorporateServicesHistory = Loadable(lazy(() => import('../pages/Corporates/Services/sections/History'))); const CorporateHospitals = Loadable(lazy(() => import('../pages/Corporates/Hospital/Index'))); const HospitalCreateUpdate = Loadable(lazy(() => import('../pages/Corporates/Hospital/CreateUpdate'))); const CorporateClaimHistories = Loadable( lazy(() => import('../pages/Corporates/ClaimHistory/Index')) ); const HospitalHistory = Loadable(lazy(() => import('../pages/Corporates/Hospital/History'))); const CorporateHistories = Loadable( lazy(() => import('../pages/Corporates/History')) ); const Profile = Loadable(lazy(() => import('../pages/Profile/Index'))); const Claims = Loadable(lazy(() => import('../pages/Claims/Index'))); const ClaimsCreate = Loadable(lazy(() => import('../pages/Claims/CreateUpdate'))); const ClaimsDetail = Loadable(lazy(() => import('../pages/Claims/Detail'))); const ClaimShow = Loadable(lazy(() => import('../pages/Claims/Show'))); const ClaimRequests = Loadable(lazy(() => import('../pages/ClaimRequests/Index'))); const ClaimRequestsCreate = Loadable(lazy(() => import('../pages/ClaimRequests/CreateUpdate'))); const ClaimRequestsDetail = Loadable(lazy(() => import('../pages/ClaimRequests/Detail'))); const Membership = Loadable(lazy(() => import('../pages/Service/Membership/index')));