From 6f4ee51b552bf2d9f93d2babc0aed566aa52ee0f Mon Sep 17 00:00:00 2001 From: Alejandro Rosales Date: Fri, 29 Sep 2023 17:44:40 +0000 Subject: [PATCH] Puestos --- ts/puestos.ts | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 ts/puestos.ts diff --git a/ts/puestos.ts b/ts/puestos.ts new file mode 100644 index 0000000..3ae54a8 --- /dev/null +++ b/ts/puestos.ts @@ -0,0 +1,78 @@ +import { createApp, reactive } from 'https://unpkg.com/petite-vue?module' +type Puesto = { + puesto_id: number, + nombre: string, + facultad_id: number, +} + +type Carrera = { + carrera_id: number; + carrera_nombre: string; + clave_carrera: string; +} + +type Materia = { + carrera_id: number; + clave_materia: string; + materia_id: number; + materia_nombre: string; +} + +type Usuario = { + usuario_clave: string; + usuario_id: number; + usuario_nombre: string; +} + +const app = createApp({ + message: null, + puestos: [] as Puesto[], + carreras: [] as Carrera[], + materias: [] as Materia[], + usuarios: [] as Usuario[], + + async nuevoPuesto(nuevoPuesto: string) { + try { + const res = await fetch('action/puesto.php', { + method: 'POST', + body: JSON.stringify({ + puesto_nombre: nuevoPuesto + }) + }) + const data = await res.json() + this.puestos.push(data) + } catch (error) { + alert(`Error: ${error}`) + + } + }, + + async actualizarPuesto(puesto_id: number, materias: Materia[], usuario_id: number) { + try { + const res = await fetch('action/puesto.php', { + method: 'PUT', + body: JSON.stringify({ + puesto_id, + materias: materias.map(m => m.materia_id), + usuario_id + }) + }) + const data = await res.json() + this.message = data.msg; + + // after 3 seconds, remove the message + setTimeout(() => { + this.message = null + }, 3000) + } catch (error) { + alert(`Error: ${error}`) + } + }, + + async mounted() { + this.puestos = await fetch('action/puesto.php').then(res => res.json()) + this.carreras = await fetch('action/action_carreras.php').then(res => res.json()) + this.materias = await fetch('action/action_materias.php').then(res => res.json()) + this.usuarios = await fetch('action/usuarios.php').then(res => res.json()) + } +}).mount('#app') \ No newline at end of file