← Volver a MesasCabeceraController

📋 Consultas de Cabeceras

Endpoints para consultar cabeceras de mesas del restaurante

Descripción General

Los endpoints de Consultas de Cabeceras proporcionan las operaciones de lectura para obtener información de las cabeceras de mesas del restaurante. Estos endpoints permiten consultar cabeceras por diferentes criterios, desde obtener todas las cabeceras hasta buscar una específica por salón, mesa y relación.

🎯 Características de las Consultas de Cabeceras

  • Múltiples criterios de búsqueda: Por salón, mesa, relación o todas
  • Identificación compuesta: Cada cabecera se identifica por salón, mesa y relación
  • Información completa: Datos de comanda, cliente, repartidor, etc.
  • Estados de mesa: Información sobre ocupación y división
  • Manejo de errores: Respuestas apropiadas para casos no encontrados
  • Logging estructurado: Registro de errores y eventos
  • Validación de datos: Verificación de parámetros de entrada
  • Respuestas tipadas: Uso de ServiceResult para manejo de resultados

Endpoints Disponibles

GET /WorkingData/MesasCabecera/GetAll

Obtiene todas las cabeceras de mesas del restaurante. Este endpoint devuelve una lista completa de todas las cabeceras de mesas registradas en la base de datos.
Parámetros de consulta:
  • initialCatalog (string, requerido): Nombre de la base de datos
  • userID (string, opcional): ID de usuario de la base de datos
  • password (string, opcional): Contraseña de la base de datos
200 OK
Cabeceras de mesas devueltas exitosamente
[ { "salon": 1, "mesa": 5, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T14:30:00", "dividida": "N", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 0, "valorComision": 0, "cliente": 0, "repartidor": 0, "horaReparto": "2024-01-15T14:30:00", "pedido": 0, "propina": "N", "porcentajePropina": 0 }, { "salon": 2, "mesa": 3, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T15:00:00", "dividida": "S", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 0, "valorComision": 0, "cliente": 0, "repartidor": 0, "horaReparto": "2024-01-15T15:00:00", "pedido": 0, "propina": "N", "porcentajePropina": 0 } ]
404 Not Found
No se encontraron cabeceras de mesas
{ "message": "No table headers found." }
400 Bad Request
Error en la solicitud
{ "isSuccess": false, "error": "Error al obtener cabeceras de mesas" }
500 Internal Server Error
Error interno del servidor
{ "message": "Internal server error", "error": "Error details..." }

GET /WorkingData/MesasCabecera/GetBySalonMesa/{salon}/{mesa}

Obtiene la cabecera activa de una mesa específica por salón y número de mesa. Este endpoint permite consultar la comanda activa de una mesa en particular.
Parámetros de ruta:
  • salon (double, requerido): ID del salón o área del restaurante
  • mesa (double, requerido): ID de la mesa específica
Parámetros de consulta:
  • initialCatalog (string, requerido): Nombre de la base de datos
  • userID (string, opcional): ID de usuario de la base de datos
  • password (string, opcional): Contraseña de la base de datos
200 OK
Cabecera de mesa encontrada
{ "salon": 1, "mesa": 5, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T14:30:00", "dividida": "N", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 0, "valorComision": 0, "cliente": 0, "repartidor": 0, "horaReparto": "2024-01-15T14:30:00", "pedido": 0, "propina": "N", "porcentajePropina": 0 }
404 Not Found
No se encontró cabecera activa para la mesa
{ "message": "No active table header found for table 5 in room 1" }
400 Bad Request
Error en la solicitud
500 Internal Server Error
Error interno del servidor

GET /WorkingData/MesasCabecera/Get/{salon}/{mesa}/{relacion}

Obtiene una cabecera específica por salón, mesa y relación. Este endpoint permite consultar una comanda específica cuando una mesa tiene múltiples comandas (mesa dividida).
Parámetros de ruta:
  • salon (double, requerido): ID del salón o área del restaurante
  • mesa (double, requerido): ID de la mesa específica
  • relacion (double, requerido): ID de relación de la comanda
Parámetros de consulta:
  • initialCatalog (string, requerido): Nombre de la base de datos
  • userID (string, opcional): ID de usuario de la base de datos
  • password (string, opcional): Contraseña de la base de datos
200 OK
Cabecera específica encontrada
{ "salon": 2, "mesa": 3, "relacion": 2, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T15:00:00", "dividida": "S", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 0, "valorComision": 0, "cliente": 0, "repartidor": 0, "horaReparto": "2024-01-15T15:00:00", "pedido": 0, "propina": "N", "porcentajePropina": 0 }
404 Not Found
No se encontró la cabecera específica
{ "message": "Table header not found for table 3 in room 2 with relation 2", "details": { "salon": 2, "mesa": 3, "relacion": 2 } }
400 Bad Request
Error en la solicitud
500 Internal Server Error
Error interno del servidor

Modelo de Datos - MesasCabecera

Propiedades del modelo MesasCabecera:
  • Salon (double): ID del salón o área del restaurante
  • Mesa (double): ID de la mesa específica
  • Relacion (double): ID de relación (para múltiples comandas)
  • Fecha (DateTime): Fecha de la comanda
  • Hora (DateTime): Hora de apertura de la comanda
  • Dividida (string): Indica si la mesa está dividida (S/N)
  • TipoDocumento (string): Tipo de documento (F=Factura, T=Ticket)
  • Serie (string): Serie del documento
  • Factura (double): Número de factura
  • Comisionista (double): ID del comisionista
  • ValorComision (decimal): Valor de la comisión
  • Cliente (double): ID del cliente
  • Repartidor (double): ID del repartidor
  • HoraReparto (DateTime): Hora de reparto
  • Pedido (double): Número de pedido
  • Propina (string): Indica si hay propina (S/N)
  • PorcentajePropina (decimal): Porcentaje de propina

📝 Estados de Mesa

  • Libre: Mesa disponible para nuevos clientes
  • Ocupada: Mesa con comanda activa
  • Dividida: Mesa con múltiples comandas
  • Cerrada: Mesa con comanda finalizada
  • Reservada: Mesa reservada para cliente específico

Servicio Utilizado

IMesasCabeceraService - Servicio principal para la gestión de cabeceras de mesas
  • GetAll(): Obtiene todas las cabeceras de mesas
  • GetBySalonMesa(): Obtiene la cabecera activa por salón y mesa
  • GetById(): Obtiene una cabecera específica por salón, mesa y relación

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Vista general del restaurante: Ver todas las mesas y su estado
  • Consulta de mesa específica: Ver estado de una mesa en particular
  • Gestión de mesas divididas: Consultar múltiples comandas por mesa
  • Control de ocupación: Monitorear qué mesas están ocupadas
  • Asignación de camareros: Ver qué mesas necesitan atención
  • Auditoría de servicio: Revisar comandas para reportes
  • Integración con POS: Obtener información para sistemas de punto de venta
  • Gestión de reservas: Verificar disponibilidad de mesas
  • Reportes de ocupación: Generar estadísticas de uso de mesas
  • Control de turnos: Ver comandas por período de tiempo

🔒 Consideraciones de Seguridad

⚠️ Protección de Datos de Negocio

  • Auditoría de consultas: Registrar quién consulta qué mesas
  • Validación de permisos: Solo usuarios autorizados pueden consultar
  • Filtrado de datos sensibles: No exponer información de clientes sin autorización
  • Control de acceso: Restringir acceso según roles de usuario
  • Logs de consultas: Mantener registro de consultas realizadas
  • Validación de parámetros: Verificar que los IDs sean válidos
  • Rate limiting: Limitar frecuencia de consultas
  • Sanitización de datos: Limpiar parámetros de entrada