import PageHome from '$/pages/site/Home.svelte'
import PagePerfil from '$/pages/usuarios/Perfil.svelte'
import PageError from '$/pages/site/Error.svelte'
import PageAplicaciones from '$/pages/aplicaciones/Admin.svelte'
import PageOperador from '$/pages/operadores/Admin.svelte'
import PageRedTransporte from '$/pages/red_transporte/Admin.svelte'
import PageArchivoGTFS from '$/pages/gtfs_archivo/Admin.svelte'
import PageCargaArchivoGTFS from '$/pages/gtfs_upload/Admin.svelte'
import PageUsuarios from '$/pages/usuarios/Admin.svelte'
import PageUsuarioCreate from '$/pages/usuarios/Usuario.svelte'
import PageUsuarioModifica from '$/pages/usuarios/Usuario.svelte'
import PageComunas from '$/pages/comunas/Admin.svelte'
import PagePersonas from '$/pages/personas/Admin.svelte'
import PagePersonaCreate from '$/pages/personas/Persona.svelte'
import PagePersonaModifica from '$/pages/personas/Persona.svelte'
import PageMapaParaderos from '$/pages/mapas/Paraderos.svelte'
import PageMapaRutas from '$/pages/mapas/Rutas.svelte'
import PageRoles from '$/pages/roles/Admin.svelte'
import PageParaderos from '$/pages/paraderos/Home.svelte'
import PageRutas from "$/pages/rutas/Home.svelte";
import { getPermisosApp } from '$/services/usuarios'
import { storePermisos } from '$/stores/global'
import PageTipoCargo from '$/pages/tipo_cargo/Admin.svelte'

export const routes_base = [
    { path: '/', component: PageHome, public: true },
    { path: '/perfil', component: PagePerfil, public: true },
    { path: '/aplicaciones', component: PageAplicaciones },
    { path: '/red-transporte', component: PageRedTransporte },
    { path: '/gtfs-archivo', component: PageArchivoGTFS },    
   // { path: '/gtfs-upload', component: PageCargaArchivoGTFS },
    { path: '/operadores', component: PageOperador },
    { path: '/usuarios', component: PageUsuarios },
    { path: '/usuarios/nuevo', component: PageUsuarioCreate },
    { path: '/usuarios/:login', component: PageUsuarioModifica },
    { path: '/roles', component: PageRoles },
    { path: '/comunas', component: PageComunas },
    { path: '/personas', component: PagePersonas },
    { path: '/personas/nuevo', component: PagePersonaCreate },
    { path: '/personas/:rut', component: PagePersonaModifica },
    { path: '/mapas/paraderos', component: PageMapaParaderos },
    { path: '/mapas/rutas', component: PageMapaRutas },
    { path: '/paraderos', component: PageParaderos },
    { path: '/rutas', component: PageRutas },
    { path: '/tipo-cargo', component: PageTipoCargo },
    { path: '*', component: PageError, public: true },
];

export let routes = [];

export async function getRoutes() {
    const permisos = await getPermisosApp()
    const new_routes = routes_base.map(el => {
        if (el.public) return el;
        const permiso = permisos.aplicaciones.find(app => el.path.indexOf(app.path_app) === 0) || null;
        return permiso ? { ...el, escritura: permiso.escritura } : null;
    })

    routes = new_routes.filter(el => el !== null)
    storePermisos.set(routes.map(el => ({ path: el.path, escritura: el.escritura || false })))

    return routes;
}
