'use client';

import React from 'react';
import { useAuthorization } from '@/features/auth/guards';
import { useAppSelector } from '@/store/hooks';

import SuperAdminView from './_components/SuperAdminView';
import DistrictOwnerView from './_components/DistrictOwnerView';
import SectorOwnerView from './_components/SectorOwnerView';
import InstituteAdminView from './_components/InstituteAdminView';
import CareerAdvisorView from './_components/CareerAdvisorView';
import DistrictSectorOwnerView from './_components/DistrictSectorOwnerView';
import AdminView from './_components/AdminView';
import HrView from './_components/HrView';
import KycOfficerView from './_components/KycOfficerView';
import BdmView from './_components/BusinessDevelopmentManagerView';
import AccountsView from './_components/AccountsView';
import InventoryManagerView from './_components/InventoryManagerView';
import StateOwnerView from './_components/StateOwnerView';
import OnboardingKycGate from './_components/OnboardingKycGate';
import DSOSelfCouponView from './_components/DSOSelfCouponView';

export default function UnifiedDashboardRouter() {
  const { user } = useAuthorization();
  
  // Read current active workspace perspective from Redux
  const activeDsoMode = useAppSelector((s) => s.ui.dsoWorkspaceMode);

  if (!user) {
    return (
      <div className="p-8 space-y-4 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 animate-pulse max-w-7xl mx-auto">
        {[...Array(8)].map((_, i) => (
          <div key={i} className="h-24 bg-muted/40 rounded-xl border border-border/20" />
        ))}
      </div>
    );
  }

  if (!user.isActive) {
    return <OnboardingKycGate user={user} />;
  }

  // Handle Multi-Perspective Layout for DSO
  if (user.role === 'DISTRICT_SECTOR_OWNER') {
    if (activeDsoMode === 'RESELLER') {
      return <DSOSelfCouponView />;
    }
    if (activeDsoMode === 'INSTITUTE') {
      return <InstituteAdminView userContext={user} />;
    }
    return <DistrictSectorOwnerView userContext={user} />;
  }

  // Standard switch cases for other roles
  switch (user.role) {
    case 'SUPER_ADMIN':
      return <SuperAdminView userContext={user} />;
    case 'ADMIN':
      return <AdminView userContext={user} />;
    case 'HR':
      return <HrView userContext={user} />;
    case 'KYC_OFFICER':
      return <KycOfficerView userContext={user} />;
    case 'BDM':
      return <BdmView userContext={user} />;
    case 'ACCOUNTS':
      return <AccountsView userContext={user} />;
    case 'INVENTORY_MANAGER':
      return <InventoryManagerView userContext={user} />;
    case 'STATE_OWNER':
      return <StateOwnerView userContext={user} />;
    case 'DISTRICT_OWNER':
      return <DistrictOwnerView userContext={user} />;
    case 'SECTOR_OWNER':
      return <SectorOwnerView userContext={user} />;
    case 'INSTITUTE_ADMIN':
      return <InstituteAdminView userContext={user} />;
    case 'CAREER_ADVISOR':
      return <CareerAdvisorView userContext={user} />;
    default:
      return (
        <div className="p-8 text-center text-sm text-destructive border border-dashed border-destructive/20 rounded-xl bg-destructive/5 max-w-7xl mx-auto">
          Unauthorized Access: Profile lacks an active operational dashboard layout.
        </div>
      );
  }
}