← Volver a Back.API

TableManagerController

Controlador para la gestión completa de mesas, estados y operaciones del restaurante

📊 Resumen del Controlador

1
Servicios Inyectados
7
Endpoints Totales
3
Categorías Principales
CRUD
Operaciones Completas

El TableManagerController es el controlador central para la gestión de mesas del sistema RestMaster. Proporciona una API RESTful completa para administrar el ciclo de vida completo de las mesas, desde su apertura hasta su cierre, incluyendo la gestión de líneas de pedidos y la sincronización de estados.

🎯 Funcionalidades Principales

  • Gestión de apertura de mesas con validación de camareros y clientes (1 endpoint)
  • Gestión de líneas de mesa - agregar, actualizar y eliminar pedidos (3 endpoints)
  • Cancelación de mesas con limpieza completa de datos (1 endpoint)
  • Sincronización de estados entre cabeceras y estados de mesas (1 endpoint)
  • Validación completa de artículos, camareros, clientes y repartidores
  • Gestión de propinas y configuraciones específicas por mesa
  • Control de estados (Disponible, En Servicio, Facturada, Refacturada)
  • Integración con facturación y gestión de documentos

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • ITableManagerService - Servicio principal de gestión de mesas

🔗 Servicios Internos del TableManagerService:

  • IMesasCabeceraService - Gestión de cabeceras de mesas
  • IMesasEstadoService - Gestión de estados de mesas
  • IWaitersService - Validación de camareros
  • IClienteService - Validación de clientes
  • IRepartidoresService - Validación de repartidores
  • IMesasLineaService - Gestión de líneas de mesa
  • IArticulosService - Validación de artículos
  • ITipoIvaService - Gestión de tipos de IVA
  • IInvoiceHeadService - Integración con facturación

⚠️ Parámetros de Conexión

Todos los endpoints requieren los siguientes parámetros de conexión a la base de datos:

  • initialCatalog (string): 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

📋 Categorías de Endpoints

🚪 Gestión de Apertura y Cierre

Operaciones de apertura y cancelación de mesas
Lifecycle
Core

Endpoints: 2 métodos

  • POST /open
  • DELETE /{salon}/{mesa}
Ver detalles →

📝 Gestión de Líneas de Mesa

Operaciones CRUD para líneas de pedidos
Orders
CRUD

Endpoints: 3 métodos

  • POST /line
  • PUT /line
  • DELETE /line/{salon}/{mesa}/{relacion}
Ver detalles →

🔄 Sincronización de Estados

Sincronización entre cabeceras y estados de mesas
System
Sync

Endpoints: 1 método

  • POST /sync-table-states
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /api/TableManager

Todos los endpoints del controlador están bajo la ruta /api/TableManager, lo que indica que maneja operaciones de gestión de mesas del sistema.

Patrones de URL por Categoría:

📊 Códigos de Respuesta

✅ 200 - OK

Operación exitosa, datos devueltos correctamente

Usado en: GET, PUT, DELETE exitosos

❌ 400 - Bad Request

Datos de entrada inválidos o validación fallida

Usado en: Errores de validación y operaciones no permitidas

❌ 404 - Not Found

Mesa, línea o recurso no encontrado

Usado en: GET, PUT, DELETE cuando el recurso no existe

❌ 500 - Internal Server Error

Error interno del servidor

Usado en: Errores de excepción no controlados

🔍 Características Técnicas

🎯 Características del Controlador

  • Async/Await: Todos los métodos son asíncronos para mejor rendimiento
  • Swagger Documentation: Documentación completa con Swagger/OpenAPI
  • Error Handling: Manejo centralizado de excepciones con logging
  • Dependency Injection: Inyección de servicios + logger
  • RESTful Design: Diseño REST completo con verbos HTTP apropiados
  • Type Safety: Uso de tipos fuertemente tipados para respuestas
  • Constructor Injection: Inyección de dependencias por constructor
  • Validation: Validación completa de parámetros de entrada
  • ServiceResult Pattern: Manejo consistente de resultados y errores
  • Header Parameters: Uso de headers para parámetros de conexión

⚠️ Consideraciones de Seguridad

  • Todos los endpoints requieren parámetros de conexión a la base de datos
  • Validación completa de permisos y existencia de recursos
  • Control de estados de mesa para evitar operaciones inválidas
  • Validación de artículos, camareros y clientes antes de operaciones
  • Manejo seguro de transacciones de base de datos
  • Logging de operaciones críticas para auditoría

📝 Patrones de Diseño Utilizados

  • Service Layer Pattern: Lógica de negocio en servicios
  • Dependency Injection: Inversión de control para servicios
  • Async/Await Pattern: Programación asíncrona
  • Error Handling Pattern: Manejo centralizado de errores
  • RESTful API Design: Diseño de API REST estándar
  • Validation Pattern: Validación de entrada consistente
  • ServiceResult Pattern: Resultados tipados con errores

📈 Estadísticas Detalladas

361
Líneas de Código
1
Región de Código
7
Métodos Públicos
4
Verbos HTTP

Distribución de Métodos HTTP:

📋 Modelos de Datos

DTOs de Entrada:
  • TableOpenRequest - Datos para apertura de mesa
  • TableLineRequest - Datos para agregar línea de mesa
  • TableLineUpdateRequest - Datos para actualizar línea de mesa
DTOs de Salida:
  • TableDto - Información completa de mesa (cabecera, estado, líneas)
  • MesasCabecera - Cabecera de mesa con información de comanda
  • MesasEstado - Estado actual de la mesa
  • MesasLinea - Líneas de pedidos de la mesa

🔑 Características de los Modelos

  • Validación completa: Todos los DTOs incluyen validación de entrada
  • Tipos seguros: Uso de tipos nullable para campos opcionales
  • Integración con entidades: Mapeo directo con modelos de base de datos
  • Propiedades calculadas: Totales e IVA calculados automáticamente
  • Estados de mesa: Control de estados (D=Disponible, E=En Servicio, F=Facturada)
  • Configuración de propinas: Gestión de propinas por mesa

⚠️ Consideraciones de Validación

  • Validación de existencia de artículos antes de agregar líneas
  • Validación de camareros, clientes y repartidores
  • Control de estados de mesa para operaciones permitidas
  • Validación de tarifas y tipos de IVA
  • Verificación de permisos para operaciones críticas