diff --git a/src/layouts/Sidebar.svelte b/src/layouts/Sidebar.svelte
index 7588e84..6710986 100644
--- a/src/layouts/Sidebar.svelte
+++ b/src/layouts/Sidebar.svelte
@@ -96,6 +96,13 @@
Roles
+
+
+
+
+ Cargos
+
+
diff --git a/src/pages/operadores/ModalOperador.svelte b/src/pages/operadores/ModalOperador.svelte
index effd77b..ffc8f4e 100644
--- a/src/pages/operadores/ModalOperador.svelte
+++ b/src/pages/operadores/ModalOperador.svelte
@@ -6,6 +6,18 @@
updateOperador,
deleteOperador,
} from "$/services/operadores";
+ import {
+ createRol
+ }
+ from "$/services/roles";
+ import {
+ createRolOperador
+ }
+ from "$/services/roles_operadores";
+ import {
+ createRolyaplicacion
+ }
+ from "$/services/roles_aplicaciones";
import { createEventDispatcher } from "svelte";
import TabOperador from "./TabOperador.svelte";
import "./modal.css";
@@ -20,6 +32,7 @@
let loading = false;
let tab = 0;
+
$: tab === 0 && begin(operador.id_operador);
$: tab === 1 && fetchLineas()
@@ -35,7 +48,7 @@
async function fetchLineas() {
try {
lineas = []
- const data = await getLineas({ ordering: 'route_long_name' })
+ const data = await getLineas({ vigente:true, ordering: 'route_long_name' })
lineas = data.filter(linea =>
linea.id_operador === operador.id_operador || linea.id_operador === null
);
@@ -49,14 +62,32 @@
}
}
+
async function onSave() {
+ let formRol={};
try {
loading = true;
if (operador.id_operador) {
form = await updateOperador(form);
} else {
- form = await createOperador(form);
+
+ formRol.nombre_rol=form.nombre_operador;
+ formRol = await createRol(formRol);
+ form.id_rol = formRol.id_rol
+ form = await createOperador(form);
+ formRol= await createRolOperador(form);
+
+ formRol={};
+ formRol.id_rol = form.id_rol;
+ formRol.id_aplicacion=1;
+ formRol = await createRolyaplicacion(formRol);
+
+ formRol.id_aplicacion=2;
+ formRol = await createRolyaplicacion(formRol);
+
+
}
+
globalThis.toast.success("Se ha guardado el Operador");
dispatch("refresh");
dispatch("close");
@@ -83,6 +114,7 @@
}
async function onSaveLineas() {
+
try {
loading = true;
@@ -93,7 +125,7 @@
if (operador.id_operador) {
for (let ln of lineasModificadas) {
- form = await updateLinea(ln);
+ form = await updateLinea(ln);
}
}
diff --git a/src/pages/tipo_cargo/Admin.svelte b/src/pages/tipo_cargo/Admin.svelte
new file mode 100644
index 0000000..16f9c56
--- /dev/null
+++ b/src/pages/tipo_cargo/Admin.svelte
@@ -0,0 +1,122 @@
+
+
+Tipos de Cargos
+
+
+
+{#if cargo}
+ cargo= null}
+ on:refresh={() => onPage(page)}
+ />
+{/if}
+
+
\ No newline at end of file
diff --git a/src/pages/tipo_cargo/ModalTipoCargo.svelte b/src/pages/tipo_cargo/ModalTipoCargo.svelte
new file mode 100644
index 0000000..02cb4e9
--- /dev/null
+++ b/src/pages/tipo_cargo/ModalTipoCargo.svelte
@@ -0,0 +1,94 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/user.routes.js b/src/routes/user.routes.js
index bf3f589..8c19f43 100644
--- a/src/routes/user.routes.js
+++ b/src/routes/user.routes.js
@@ -20,6 +20,7 @@ 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 },
@@ -41,6 +42,7 @@ export const routes_base = [
{ path: '/mapas/rutas', component: PageMapaRutas },
{ path: '/paraderos', component: PageParaderos },
{ path: '/rutas', component: PageRutas },
+ { path: '/tipo-cargo', component: PageTipoCargo },
{ path: '*', component: PageError, public: true },
];
diff --git a/src/services/tipo_cargo.js b/src/services/tipo_cargo.js
new file mode 100644
index 0000000..59b630f
--- /dev/null
+++ b/src/services/tipo_cargo.js
@@ -0,0 +1,47 @@
+import { base, getToken } from './_config'
+
+export async function getTipoCargo(params) {
+ const query = !params ? '' : '?' + (new URLSearchParams(params).toString());
+ const res = await fetch(`${base}/tipo-cargo/${query}`, {
+ headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" }
+ })
+ if (!res.ok) throw await res.json()
+ return res.json()
+}
+
+export async function getTipoCargoId(id) {
+ const res = await fetch(`${base}/tipo-cargo/${id}/`, {
+ headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" }
+ })
+ if (!res.ok) throw await res.json()
+ return res.json()
+}
+
+export async function createTipoCargo(data) {
+ const res = await fetch(`${base}/tipo-cargo/`, {
+ method: 'POST',
+ body: JSON.stringify(data),
+ headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" }
+ })
+ if (!res.ok) throw await res.json()
+ return res.json()
+}
+
+export async function updateTipoCargo({ id_cargo: id = null, ...data }) {
+ const res = await fetch(`${base}/tipo-cargo/${id}/`, {
+ method: 'PATCH',
+ body: JSON.stringify(data),
+ headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" }
+ })
+ if (!res.ok) throw await res.json()
+ return res.json()
+}
+
+export async function deleteTipoCargo(id) {
+ const res = await fetch(`${base}/tipo-cargo/${id}/`, {
+ method: 'DELETE',
+ headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" }
+ })
+ if (!res.ok) throw await res.json()
+ return res.text()
+}
\ No newline at end of file