import { Routes } from '@angular/router'
import { AuthenticatedGuard, RestaurantAccessGuard } from './auth'
import { featureAccessGuard, NavigationResolver, TranslationResolver, UserResolver } from './core'
import { FeatureKey } from '@core/types'

export const adminShellRoutes: Routes = [
	{
		path: '',
		loadComponent: () => import('./layout').then((m) => m.LayoutComponent),
		resolve: [UserResolver, TranslationResolver, NavigationResolver],
		canActivate: [AuthenticatedGuard, RestaurantAccessGuard],
		data: { layout: 'classic' },
		children: [
			{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
			{
				path: 'dashboard',
				loadChildren: () => import('./views/dashboard/dashboard.routes').then((m) => m.dashboardRoutes),
			},
			{
				path: 'reservations',
				canActivate: [featureAccessGuard],
				data: { featureName: FeatureKey.Reservation },
				loadChildren: () => import('./views/reservations/reservations.routes').then((m) => m.reservationRoutes),
			},
			{
				path: 'statistics',
				canActivate: [featureAccessGuard],
				data: { featureName: FeatureKey.Statistics },
				loadChildren: () => import('./views/statistics/statistics.routes').then((m) => m.statisticsRoutes),
			},
			{
				path: 'settings',
				loadChildren: () => import('./views/settings/settings.routes').then((m) => m.settingsRoutes),
			},
		],
	},

	{
		path: '',
		loadComponent: () => import('./layout').then((m) => m.LayoutComponent),
		resolve: [TranslationResolver],
		data: { layout: 'empty' },
		children: [
			{
				path: '',
				loadChildren: () => import('./auth/auth.routes').then((m) => m.authRoutes),
			},
			{
				path: 'error',
				loadChildren: () => import('./views/errors/errors.routes').then((m) => m.errorRoutes),
			},
			{
				path: 'onboarding',
				loadChildren: () => import('./views/onboarding/onboarding.routes').then((m) => m.onboardingRoutes),
			},
		],
	},
]
