import React from 'react';
import {
  Navbar,
  Sidebar,
  Main, 
  Footer
} from './components';
import { BrowserRouter as Router, Route, Routes, Navigate } from 'react-router-dom';
import {
  GettingStarted,
  Dashboard,
  Applications,
  CreateApps
} from './screens/Home';
import {
  Verify as FaceVerify,
  Summary as FaceSummary,
  Transaction as FaceTransaction
} from './screens/Biometric/FaceRecognition';

import {
  Enroll, 
  Verify as VerifySection, 
  Liveness, 
  Compare, 
  Search
} from './screens/Biometric/FaceRecognition/Section';

import {
  Manage as ManageKtp,
  Summary as SummaryKtp,
  Verify as VerifyKtp,
  Transaction as TransactionKtp
} from './screens/Biometric/OcrKtp';

import { 
  Summary as SummaryNpwp,
  Transaction as TransactionNpwp,
  Verify as VerifyNpwp 
} from './screens/Biometric/OcrNpwp';

import { 
  Verify as VerifySim,
  Summary as SummarySim,
  Transaction as TransactionSim
} from './screens/Biometric/OcrSim';

import { 
  Verify as VerifyDoc,
  Summary as SummaryDoc,
  Transaction as TransactionDoc
} from './screens/Biometric/OcrDocument';

import {
  Verify as SmsVerify
} from './screens/Sms/Verification';

import {
  Annoncement as VerificationAnnoncement,
  Otp as VerificationOtp
} from './screens/Sms/Verification/Section';

import {
  Settings as SmsOtpSettings,
  Summary as SmsOtpSummary,
  Transaction as SmsOtpTransaction,
  Detail as SmsOtpDetail
} from './screens/Sms/OtpManagement';

import {
  Transaction as SmsOtpSummaryTransaction,
  Announcement as SmsOtpSummaryAnnouncement
} from './screens/Sms/OtpManagement/Section';

import {
  BulkMessage as SmsAnnouncementBulk,
  Summary as SmsAnnouncementSummary,
  Transaction as SmsAnnouncementTransaction
} from './screens/Sms/Announcements';

import {
  Transaction as SmsAnnouncementSummaryTransaction,
  Announcement as SmsAnnouncementSummaryAnnouncement
} from './screens/Sms/Announcements/Section';

import {
  Blocked as BlockedSms,
  BlockNumber
} from './screens/Sms/BlockedNumbers';

import {
  Anomaly as AnomalySms
} from './screens/Sms/AnomalyReport';

import {
  Verify as VerifyWa
} from './screens/Wa/Verify';

import {
  Auth,
  Auth as AuthWa,
  Message as MessageWa
} from './screens/Wa/Verify/Section';

import {
  Registration as RegistrationWa,
  Profile as ProfileWa,
  Template as TemplateWa,
  Integration as IntegrationWa
} from './screens/Wa/Manage';
import { CreateSettings } from './screens/Wa/Manage/Content';

import {
  Settings as SettingsWa,
  Summary as SummaryActivityWa,
  Transaction as TransactionLogsWa,
  Bulk as BulkWa
} from './screens/Wa/Activity';

import {
  Authentication as WaSettingsAuth,
  Message as WaSettingsMessage,
  Transaction as WaSummaryTransaction,
  Announcement as WaSummaryAnnouncement,
  Conversation as WaSummaryConversation,
  AuthLogs as WaTransactionAuth,
  MessageLogs as WaTransactionMessage
} from './screens/Wa/Activity/Section';

import {
  Inbox as InboxWa
} from './screens/Wa/Inbox';

import {
  Block as BlockedWa
} from './screens/Wa/Block';

import {
  Transaction as TransactionElectric,
  Verify as VerifyElectric
} from './screens/Identity/Electric';

import {
  Transaction as TransactionIdentityNpwp
} from './screens/Identity/Npwp';

import {
  Verify as VerifyTax,
  Transaction as TransactionTax
} from './screens/Identity/Tax'

import {
  Nik as NikTax,
  Npwp as NpwpTax
} from './screens/Identity/Tax/Section'

import {
  Verify as VerifyIncome,
  Transaction as TransactionIncome
} from './screens/Identity/Income';

import {
  Verify as VerifyID,
  Transaction as TransactionID
} from './screens/Identity/IdVerif';

import {
  Verify as VerifyScreening,
  Admin as AdminScreening,
  Search as SearchScreening,
  Transaction as TransactionScreening,
  Monitor as MonitorScreening
} from './screens/Watchlist/Screening';

import {
  Account,
  Company,
  Production,
  Trial
} from './screens/Profile';


const App = () => {
  return (
    <Router>
      <body className="sb-nav-fixed">
        <Navbar />
        <div id="layoutSidenav">
          <Sidebar />
          <div id="layoutSidenav_content">
            <Routes>
              {/* Main Dashboard */}
              <Route path="/" element={<GettingStarted />} />
              <Route path="/getting-started" element={<GettingStarted />} />
              <Route path="/dashboard" element={<Dashboard />} />
              <Route path="/application" element={<Applications />} />
              <Route path="/createApps" element={<CreateApps />} />

              {/* Profile */}
              <Route path="/my-account" element={<Account />} />
              <Route path="/company-access" element={<Company />} />
              <Route path="/production" element={<Production />} />
              <Route path="/trial" element={<Trial />} />

              {/* Biometric - Face Recognition (Verify) */}
              <Route path="/face-verify/*" element={<FaceVerify />}>
                {/* Anak rute */}
                <Route path="face-enroll" element={<Enroll />} />
                <Route path="face-verifysection" element={<VerifySection />} />
                <Route path="face-liveness" element={<Liveness />} />
                <Route path="face-compare" element={<Compare />} />
                <Route path="face-search" element={<Search />} />

                {/* Default route */}
                <Route index element={<Navigate to="face-enroll" />} />
              </Route>

              {/* Biometric - Face Recognition (Summary) */}
              <Route path="/face-summary" element={<FaceSummary />} />
              <Route path="/face-transaction" element={<FaceTransaction />} />

              {/* Biometric - KTP */}
              <Route path="/ktp-verify" element={<VerifyKtp />} />
              <Route path="/ktp-manage" element={<ManageKtp />} />
              <Route path="/ktp-summary" element={<SummaryKtp />} />
              <Route path="/ktp-transaction" element={<TransactionKtp />} />

              {/* Biometric - NPWP */}
              <Route path="/npwp-verify" element={<VerifyNpwp />} />
              <Route path="/npwp-summary" element={<SummaryNpwp />} />
              <Route path="/npwp-transaction" element={<TransactionNpwp />} />

              {/* Biometric - SIM */}
              <Route path="/sim-verify" element={<VerifySim />} />
              <Route path="/sim-summary" element={<SummarySim />} />
              <Route path="/sim-transaction" element={<TransactionSim />} />

              {/* Biometric - Document */}
              <Route path="/document-verify" element={<VerifyDoc />} />
              <Route path="/document-summary" element={<SummaryDoc />} />
              <Route path="/document-transaction" element={<TransactionDoc />} />

              {/* Sms Services - Verification */}
              <Route path="/sms-verify/*" element={<SmsVerify />}>
                {/* Anak rute */}
                <Route path="sms-otp" element={<VerificationOtp />} />
                <Route path="sms-announcement" element={<VerificationAnnoncement />} />
                {/* Default route */}
                <Route index element={<Navigate to="sms-otp" />} />
              </Route>

              {/* Sms Services - OTP (Settings) */}
              <Route path="/sms-otp-settings" element={<SmsOtpSettings />} />
              {/* Sms Services - OTP (Summary) */}
              <Route path="/sms-otp-summary/*" element={<SmsOtpSummary />}>
                {/* Anak rute */}
                <Route path="sms-otp-transaction" element={<SmsOtpSummaryTransaction />} />
                <Route path="sms-otp-announcement" element={<SmsOtpSummaryAnnouncement />} />
                {/* Default route */}
                <Route index element={<Navigate to="sms-otp-transaction" />} />
              </Route>
              {/* Sms Services - OTP (Transaction) */}
              <Route path="/sms-otp-transaction" element={<SmsOtpTransaction />} />
              {/* Sms Services - OTP (Detail) */}
              <Route path="/sms-otp-detail" element={<SmsOtpDetail />} />

              {/* Sms Services - Announcements */}
              <Route path="/sms-announcement-bulk" element={<SmsAnnouncementBulk />} />
              <Route path="/sms-announcement-summary/*" element={<SmsAnnouncementSummary />}>
                {/* Anak rute */}
                <Route path="sms-announcement-transaction" element={<SmsAnnouncementSummaryTransaction />} />
                <Route path="sms-announcement-announcement" element={<SmsAnnouncementSummaryAnnouncement />} />
                {/* Default route */}
                <Route index element={<Navigate to="sms-announcement-transaction" />} />
              </Route>
              <Route path="/sms-announcement-transaction" element={<SmsAnnouncementTransaction />} />

              {/* Sms Services - Block Numbers */}
              <Route path="/sms-block" element={<BlockedSms />}></Route>
              <Route path="/block-number" element={<BlockNumber />} />

              {/* Sms Services - Anomaly Report */}
              <Route path="/sms-anomaly" element={<AnomalySms />}></Route>

              {/* WhatsApp - Verify */}
              <Route path="/wa-verify/*" element={<VerifyWa />}>
                {/* Anak rute */}
                <Route path="wa-auth" element={<AuthWa />} />
                <Route path="wa-message" element={<MessageWa />} />
                {/* Default route */}
                <Route index element={<Navigate to="wa-auth" />} />
              </Route>

              {/* WhatsApp - Manage */}
              <Route path="/wa-registration" element={<RegistrationWa />} />
              <Route path="/wa-profile" element={<ProfileWa />} />
              <Route path="/wa-template" element={<TemplateWa />} />
              <Route path="/wa-integration" element={<IntegrationWa />} />
              <Route path="/wa-createSettings" element={<CreateSettings />} />

              {/* WhatsApp - Activity (Settings) */}
              <Route path="/wa-settings/*" element={<SettingsWa />}>
                {/* Anak rute */}
                <Route path="wa-settings-auth" element={<WaSettingsAuth />} />
                <Route path="wa-settings-message" element={<WaSettingsMessage />} />
                {/* Default route */}
                <Route index element={<Navigate to="wa-settings-auth" />} />
              </Route>
              
              {/* WhatsApp - Activity (Summary) */}
              <Route path="/wa-summary/*" element={<SummaryActivityWa />}>
                {/* Anak rute */}
                <Route path="wa-summary-transaction" element={<WaSummaryTransaction />} />
                <Route path="wa-summary-announcement" element={<WaSummaryAnnouncement />} />
                <Route path="wa-summary-conversation" element={<WaSummaryConversation />} />
                {/* Default route */}
                <Route index element={<Navigate to="wa-summary-transaction" />} />
              </Route>

              {/* WhatsApp - Activity (Transaction) */}
              <Route path="/wa-transaction/*" element={<TransactionLogsWa />}>
                {/* Anak rute */}
                <Route path="wa-transaction-auth" element={<WaTransactionAuth />} />
                <Route path="wa-transaction-message" element={<WaTransactionMessage />} />
                {/* Default route */}
                <Route index element={<Navigate to="wa-transaction-auth" />} />
              </Route>

              <Route path="/wa-bulk" element={<BulkWa />} />

              <Route path="/wa-inbox" element={<InboxWa />} />
              <Route path="/wa-block" element={<BlockedWa />} />

              {/* Identity - Electric */}
              <Route path="/identity-electro-transaction" element={<TransactionElectric />} />
              <Route path="/identity-electro-verify" element={<VerifyElectric />} />
              
              {/* Identity - Npwp */}
              <Route path="/identity-npwp-transaction" element={<TransactionIdentityNpwp />} />

              {/* Identity - Tax */}
              <Route path="/identity-tax-verify/*" element={<VerifyTax />}>
                {/* Anak rute */}
                <Route path="identity-tax-nik" element={<NikTax />} />
                <Route path="identity-tax-npwp" element={<NpwpTax />} />
                {/* Default route */}
                <Route index element={<Navigate to="identity-tax-nik" />} />
              </Route>

              <Route path="/identity-tax-transaction" element={<TransactionTax />} />

              {/* Identity - Income */}
              <Route path="/identity-income-verify" element={<VerifyIncome />} />
              <Route path="/identity-income-transaction" element={<TransactionIncome />} />

              {/* Identity - ID Verifiy */}
              <Route path="/identity-id-verify" element={<VerifyID />} />
              <Route path="/identity-id-transaction" element={<TransactionID />} />

              {/* Watchlist - Screening */}
              <Route path="/watchlist-screening-verify" element={<VerifyScreening />} />                
              <Route path="/watchlist-screening-admin" element={<AdminScreening />} />
              <Route path="/watchlist-screening-search" element={<SearchScreening />} />
              <Route path="/watchlist-screening-transaction" element={<TransactionScreening />} />
              <Route path="/watchlist-screening-monitor" element={<MonitorScreening />} />
            </Routes>
            <Footer />
          </div>
        </div>
      </body>
    </Router>
  );
};

export default App;
