Salta el contingut

Backend

Fitxers principals

Fitxer Línies aprox. Responsabilitat
Codigo.gs 2242 Nucli: CRUD reserves, auth, cache, doGet(), email
AdminFunctions.gs 2164 Funcions admin: CRUD recursos/tramos/usuaris, estadístiques
ReservasRecurrentes.gs 1945 Reserves recurrents (UI desactivada, no tocar)
Incidencias.gs 431 Incidències: creació, actualització, resolució
Setup.gs 239 Wizard d'instal·lació

Funcions exposades al client

El client crida les funcions GAS via google.script.run. Han de ser funcions de primer nivell als fitxers .gs.

Lectura

Funció Fitxer Descripció
getStaticData() Codigo.gs Recursos, tramos, usuaris, cursos (cachejat 1h)
getDisponibilidadRecurso(recursoId) Codigo.gs Disponibilitat setmanal d'un recurs
getMyActiveReservationsData(email) Codigo.gs Reserves actives de l'usuari
getAdminData() AdminFunctions.gs Totes les dades pel panel admin (rol Admin)
getAdminDataGestor() AdminFunctions.gs Subconjunt de dades (rol Gestor)
getEstadistiques(filtre) AdminFunctions.gs Dades del dashboard

Escriptura

Funció Fitxer Descripció
crearNuevaReserva(reservaData) Codigo.gs Crea reserva amb totes les validacions
cancelarReservaCliente(reservaId) Codigo.gs Cancel·la reserva pròpia
adminCancelarReserva(idReserva) AdminFunctions.gs Cancel·la qualsevol reserva (admin/gestor)
saveBatchRecursos(data) AdminFunctions.gs Desa canvis massius de recursos
saveBatchTramos(data) AdminFunctions.gs Desa canvis massius de tramos
saveBatchUsuaris(data) AdminFunctions.gs Desa canvis massius d'usuaris
saveBatchConfig(data) AdminFunctions.gs Desa canvis de configuració

Validacions a crearNuevaReserva()

Per ordre d'execució:

  1. Usuari actiu i autoritzat
  2. Mode manteniment (validarModoMantenimiento)
  3. Antelació mínima (validarAntelacionMinima)
  4. Finestra de dies vista (validarDiasVista)
  5. Disponibilitat del recurs per dia i tram (checkAvailability)
  6. Límit de reserves simultànies (validarLimiteReservas)
  7. Restriccions multi-tram (validarPermisMultitram)

Cache

CacheService.getScriptCache() amb dues capes:

Clau Contingut TTL
STATIC_DATA_V5 Recursos, Tramos, Usuarios, Cursos, Dispositivos 3600s
DISP_{recursoId} Disponibilitat per recurs 1800s
configuracion_v1 Config sheet sencera 3600s

Les escriptures admin invaliden les caches afectades explícitament.


Auth

checkUserAuthorization() (Codigo.gs:273): 1. Obté l'email via Session.getActiveUser().getEmail() 2. Busca l'email al full Usuarios 3. Comprova Activo=TRUE 4. Determina el rol: isAdmin (columna D) → isGestor (columna F) → usuari

Retorna: { isAdmin, isGestor, userName, userEmail, isAuthorized }