← Volver a SalonTablesController

🪑 Gestión de Mesas por Salón

Endpoints para la gestión CRUD completa de mesas específicas por salón

Descripción General

Los endpoints de Gestión de Mesas por Salón proporcionan las operaciones fundamentales para administrar la distribución y configuración de mesas específicas en cada salón del sistema RestMaster. Estos endpoints manejan la información detallada de cada mesa, incluyendo su posicionamiento, configuración visual, tarifas y características específicas.

🎯 Características de la Gestión de Mesas por Salón

  • Clave primaria compuesta: Salon + Mesa + Relacion identifican únicamente cada mesa
  • Configuración visual completa: Fuentes, colores, alineación y posicionamiento
  • Tarifas específicas: Recargos y tarifas configurables por mesa individual
  • Integración con planos: Relación con dibujos para visualización
  • Configuración de propinas: Control individual de propinas por mesa
  • Artículos específicos: Productos de apertura configurables por mesa
  • Validación de datos: Verificación de integridad de la información

Endpoints Disponibles

GET /Master/SalonTables/GetSalonTables/{salon}

Obtiene todas las mesas de un salón específico. Este endpoint devuelve una lista completa de todas las mesas configuradas en el salón especificado.
Parámetros de ruta:
  • salon (double, requerido): ID del salón
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
Lista de mesas del salón devuelta exitosamente
[ { "salon": 1.0, "mesa": 1.0, "relacion": 1.0, "dibujos": 1.0, "recargo": 0.0, "tarifa": 0.0, "articulosApertura": "N", "transparente": "N", "colorLetra": 0, "fuenteLetra": "Arial", "estiloLetra": "Normal", "tamanoLetra": 12.0, "alinearHorizontal": "Center", "alinearVertical": "Middle", "posicionX": 100.0, "posicionY": 100.0, "propina": "S", "porcentajePropina": 10.0 } ]
500 Internal Server Error
Error interno del servidor

GET /Master/SalonTables/GetSalonTable/{salon}/{mesa}/{relacion}

Obtiene una mesa específica por su salón, mesa y relación. Este endpoint permite recuperar la información detallada de una mesa en particular.
Parámetros de ruta:
  • salon (double, requerido): ID del salón
  • mesa (double, requerido): ID de la mesa
  • relacion (double, requerido): ID de relación
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
Mesa encontrada y devuelta
404 Not Found
Mesa no encontrada
{ "message": "Table 1 in salon 1 with relation 1 not found", "details": { "salon": 1.0, "mesa": 1.0, "relacion": 1.0 } }
500 Internal Server Error
Error interno del servidor

POST /Master/SalonTables/AddSalonTable

Crea una nueva mesa en un salón específico. Este endpoint permite agregar una nueva mesa con su configuración completa.
Body (JSON):
{ "salon": 1.0, "mesa": 2.0, "relacion": 1.0, "dibujos": 1.0, "recargo": 5.0, "tarifa": 0.0, "articulosApertura": "S", "transparente": "N", "colorLetra": 16711680, "fuenteLetra": "Arial", "estiloLetra": "Bold", "tamanoLetra": 14.0, "alinearHorizontal": "Center", "alinearVertical": "Middle", "posicionX": 200.0, "posicionY": 150.0, "propina": "S", "porcentajePropina": 15.0 }
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
201 Created
Mesa creada exitosamente
{ "salon": 1.0, "mesa": 2.0, "relacion": 1.0, "dibujos": 1.0, "recargo": 5.0, "tarifa": 0.0, "articulosApertura": "S", "transparente": "N", "colorLetra": 16711680, "fuenteLetra": "Arial", "estiloLetra": "Bold", "tamanoLetra": 14.0, "alinearHorizontal": "Center", "alinearVertical": "Middle", "posicionX": 200.0, "posicionY": 150.0, "propina": "S", "porcentajePropina": 15.0 }
500 Internal Server Error
Error interno del servidor

PUT /Master/SalonTables/UpdateSalonTable/{salon}/{mesa}/{relacion}

Actualiza una mesa existente en un salón específico. Este endpoint permite modificar la configuración de una mesa ya registrada.
Parámetros de ruta:
  • salon (double, requerido): ID del salón
  • mesa (double, requerido): ID de la mesa
  • relacion (double, requerido): ID de relación
Body (JSON):
{ "salon": 1.0, "mesa": 1.0, "relacion": 1.0, "dibujos": 2.0, "recargo": 10.0, "tarifa": 5.0, "articulosApertura": "S", "transparente": "S", "colorLetra": 255, "fuenteLetra": "Times New Roman", "estiloLetra": "Italic", "tamanoLetra": 16.0, "alinearHorizontal": "Left", "alinearVertical": "Top", "posicionX": 300.0, "posicionY": 200.0, "propina": "N", "porcentajePropina": 0.0 }
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
Mesa actualizada exitosamente
404 Not Found
Mesa no encontrada
{ "message": "Cannot update: Table 1 in salon 1 with relation 1 does not exist", "details": { "salon": 1.0, "mesa": 1.0, "relacion": 1.0 } }
500 Internal Server Error
Error interno del servidor

DELETE /Master/SalonTables/DeleteSalonTable/{salon}/{mesa}/{relacion}

Elimina una mesa de un salón específico. Este endpoint permite remover una mesa de la configuración del salón.
Parámetros de ruta:
  • salon (double, requerido): ID del salón
  • mesa (double, requerido): ID de la mesa
  • relacion (double, requerido): ID de relación
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
Mesa eliminada exitosamente
{ "message": "Salon table deleted successfully", "salonTable": { "salon": 1.0, "mesa": 1.0, "relacion": 1.0, "dibujos": 1.0, "recargo": 0.0, "tarifa": 0.0, "articulosApertura": "N", "transparente": "N", "colorLetra": 0, "fuenteLetra": "Arial", "estiloLetra": "Normal", "tamanoLetra": 12.0, "alinearHorizontal": "Center", "alinearVertical": "Middle", "posicionX": 100.0, "posicionY": 100.0, "propina": "S", "porcentajePropina": 10.0 } }
404 Not Found
Mesa no encontrada
{ "message": "Cannot delete: Table 1 in salon 1 with relation 1 does not exist", "details": { "salon": 1.0, "mesa": 1.0, "relacion": 1.0 } }
500 Internal Server Error
Error interno del servidor

Modelo de Datos - SalonesMesa

Propiedades del modelo SalonesMesa:
  • Salon (double): ID del salón (parte de clave primaria)
  • Mesa (double): ID de la mesa (parte de clave primaria)
  • Relacion (double): ID de relación (parte de clave primaria)
  • Dibujos (double): ID del dibujo asociado
  • Recargo (double?): Recargo aplicable a la mesa
  • Tarifa (double?): Tarifa específica de la mesa
  • ArticulosApertura (string): Artículos de apertura específicos
  • Transparente (string): Indica si es transparente (S/N)
  • ColorLetra (double?): Color de la letra
  • FuenteLetra (string): Fuente de la letra
  • EstiloLetra (string): Estilo de la letra
  • TamanoLetra (double?): Tamaño de la letra
  • AlinearHorizontal (string): Alineación horizontal
  • AlinearVertical (string): Alineación vertical
  • PosicionX (double?): Posición X en el plano
  • PosicionY (double?): Posición Y en el plano
  • Propina (string): Indica si aplica propina (S/N)
  • PorcentajePropina (double?): Porcentaje de propina

Servicio Utilizado

ISalonTablesService - Servicio para la gestión de mesas por salón
  • GetSalonTables(): Obtiene todas las mesas de un salón
  • GetSalonTable(): Obtiene una mesa específica por clave compuesta
  • AddSalonTable(): Crea una nueva mesa en un salón
  • UpdateSalonTable(): Actualiza una mesa existente
  • DeleteSalonTable(): Elimina una mesa de un salón

Casos de Uso Comunes

🎯 Escenarios de Aplicación

  • Configuración de distribución: Crear y configurar mesas en diferentes salones
  • Gestión de tarifas: Aplicar recargos específicos por mesa
  • Configuración visual: Personalizar apariencia de mesas en la interfaz
  • Planificación de eventos: Configurar mesas especiales para eventos
  • Gestión de propinas: Configurar porcentajes de propina por mesa
  • Integración con planos: Relacionar mesas con dibujos del restaurante

⚠️ Consideraciones de Seguridad

  • Las mesas pueden contener información sensible de configuración
  • Se recomienda implementar control de acceso a la gestión de mesas
  • Validar permisos para modificar distribución de mesas
  • Considerar el impacto de cambios en tarifas y configuraciones
  • Implementar auditoría de cambios en configuración de mesas
  • Verificar que el usuario tenga permisos para gestionar mesas

📝 Consideraciones Técnicas

  • Clave compuesta: Salon + Mesa + Relacion identifican únicamente cada mesa
  • Campos booleanos: Transparente, ArticulosApertura y Propina usan S/N
  • Posicionamiento: PosicionX y PosicionY se usan para planos
  • Configuración visual: Fuentes, colores y alineación para interfaz
  • Relaciones: Dibujos se relacionan con planos del restaurante
  • Validaciones: Verificar que los porcentajes estén en rangos válidos