📱 WhatsApp

Disponibilidad de Salones

Consulta fechas disponibles para reservar el salón por día completo

¿Necesitas reservar un salón?

Completa la solicitud y el equipo SES te confirmará disponibilidad

⚠️

INFORMACIÓN IMPORTANTE

• Sala 2 Piso 10: Solo reuniones sin ruido. No se permiten festejos (políticas del edificio).
• Salón Rojo y Auditorio: Ideales para festejos y eventos grandes.
• Confirmación: Debes enviar el comprobante de pago al WhatsApp de recepción para confirmar tu reserva.
SES

Acceso Administrador

Panel de gestión de salones SES

Usuario o contraseña incorrectos
← Volver al sitio público
Panel de Administración
Gestión completa de reservas y salones SES
Próximas Reservas Confirmadas
Todas las Reservas

📊 Exportar Datos

El archivo incluye resumen estadístico, listado completo y metadatos del reporte.

📥 Importar Reservas

Formatos: .xlsx · .xls · .csv  ·  Fecha: YYYY-MM-DD o DD/MM/YYYY  ·  Reserva por día completo

🔍 Vista Previa de la Plantilla

Las columnas marcadas con son obligatorias. El resto es opcional pero recomendado.

Salón ★ Nombre ★ Fecha ★ Tipo Miembro Email Teléfono Inicio interno Fin interno Asistentes Tipo Evento Estado Notas

🏛 Salones válidos

📌 Tipos de evento

⚠️ Zona de Peligro

Esta acción es irreversible. Se eliminarán todos los registros. Exporta una copia antes de continuar.

👑 Panel Maestro — Control Total
Acceso completo al sistema SES · Solo visible para Super Usuario
📋 Todas las Reservas (Vista Maestra)

🔑 Cambiar Credenciales del Administrador

Modifica el usuario y contraseña del panel Admin (no afecta al Super Usuario).

ℹ️ Credenciales actuales del Admin

Usuario:

Contraseña: oculta por seguridad

📧 Proveedor de Notificaciones por Correo

Elige qué servicio se usa para enviar los correos de reservas. EmailJS funciona directo desde el navegador; SendPulse requiere un backend/proxy propio para evitar bloqueos de CORS (ver nota abajo).

📧 Configuración EmailJS

📌 Todos los valores los encuentras en dashboard.emailjs.com
· Public Key → Account → API Keys
· Service ID → Email Services → tu servicio
· Template ID → Email Templates → tu plantilla

🔥 Firebase — Base de Datos en la Nube

Gestiona la conexión con Firebase Firestore. Los datos se sincronizan en todos los dispositivos en tiempo real.

📊 Estado de conexión

Estado: ⏳ Verificando...
Reservas en BD:
Proyecto:

🔑 Cambiar credenciales Firebase

Encuéntralas en console.firebase.google.com → tu proyecto → ⚙️ Configuración del proyecto → Tus apps (Web)

📋 Colección requerida: reservations
Campos: client, tel, email, mtype, salon_id, date, start, end_time, attendees, type, notes, status, created (cada documento usa el ID de la reserva como ID del documento)

🛠️ Reglas de seguridad sugeridas (Firestore → Reglas)

Pégalas en Firebase Console → Firestore Database → Reglas para permitir lectura/escritura desde esta app:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    function isAdmin() {
      return request.auth != null
        && request.auth.token.email in ['admin@sindicatoses.org','suadmin@sindicatoses.org'];
    }

    function validPublicReservationCreate() {
      return request.resource.data.keys().hasOnly([
        'client','tel','email','mtype','salon_id','date','start','end_time',
        'attendees','type','notes','status','created',
        'checkin_time','checkin_obs','checkout_time','checkout_obs',
        'autorizador_nombre','autorizador_contacto','reminder24_sent',
        'acepto_reglamento','acepto_reglamento_at','autorizo_datos','autorizo_datos_at'
      ])
      && request.resource.data.keys().hasAll([
        'client','tel','email','mtype','salon_id','date','start','end_time',
        'status','acepto_reglamento','autorizo_datos'
      ])
      && request.resource.data.status == 'pending'
      && request.resource.data.acepto_reglamento == true
      && request.resource.data.autorizo_datos == true
      && request.resource.data.client is string
      && request.resource.data.tel is string
      && request.resource.data.email is string
      && request.resource.data.date is string
      && request.resource.data.salon_id is int;
    }

    function validPublicAvailabilityCreate() {
      return request.resource.data.keys().hasOnly(['salon_id','date','status','updatedAt'])
        && request.resource.data.salon_id is int
        && request.resource.data.date is string
        && request.resource.data.status == 'occupied';
    }

    match /reservations/{id} {
      allow create: if isAdmin() || validPublicReservationCreate();
      allow read, update, delete: if isAdmin();
    }

    match /settings/{id} {
      allow read: if true;
      allow write: if isAdmin();
    }

    match /availability/{id} {
      allow read: if true;
      allow create: if isAdmin() || validPublicAvailabilityCreate();
      allow update, delete: if isAdmin();
    }
  }
}

⚙️ Configuración Global del Sistema

⚠️ Zona de Peligro — Control Maestro

Estas acciones son irreversibles. El backup exporta reservas + configuración completa.