import DynamicDetailPage from 'src/components/layouts/_dynamic/dynamic_detail_page/DynamicDetailPage.vue';
import DynamicListPage from 'src/components/layouts/_dynamic/dynamic_list_page/DynamicListPage.vue';

export function buildRoutesWithDynamicContent(path: string, options: RouteOptions) {
  return [
    {
      path: `/${path}`,
      component: () => (options?.dynamicList ? Promise.resolve(DynamicListPage) : import(`src/pages/${path}/ListPage.vue`)),
      meta: { ca: options.ca ?? null },
    },
    {
      path: `/${path}/:${options.idKey}`,
      component: () => (options?.dynamicDetail ? Promise.resolve(DynamicDetailPage) : import(`src/pages/${path}/DetailPage.vue`)),
      children: [
        { path: '', redirect: (to) => ({ path: `${to.path}/${options.defaultTab || 'estado'}` }) },
        { path: ':tab', component: () => import('src/components/layouts/_dynamic/DynamicDetailViews.vue') },
      ],
    },
  ];
}

export interface RouteOptions {
  idKey: string;
  defaultTab?: string;
  ca?: number[];
  dynamicDetail?: boolean;
  dynamicList?: boolean;
}
