← Volver a Back.API

MesasCabeceraController

Controlador para la gestión completa de cabeceras de mesas del restaurante

📊 Resumen del Controlador

2
Servicios Inyectados
8
Endpoints Totales
3
Categorías de Funcionalidad
CRUD
Operaciones Completas

El MesasCabeceraController es el controlador encargado de gestionar todos los aspectos relacionados con las cabeceras de mesas del restaurante. Proporciona una API RESTful completa con operaciones CRUD para la entidad MesasCabecera, incluyendo gestión de comandas, estados de mesas y relaciones de servicio.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de cabeceras de mesas (5 endpoints)
  • Consulta de cabeceras por diferentes criterios (3 endpoints)
  • Creación de comandas con validación de datos
  • Creación simplificada con valores por defecto
  • Actualización de cabeceras con control de cambios
  • Eliminación de cabeceras con validación
  • Manejo de relaciones entre salón, mesa y relación
  • Gestión de estados de mesas y comandas
  • Logging estructurado de errores y eventos
  • Manejo de excepciones con respuestas apropiadas
  • Información de métodos HTTP con endpoint OPTIONS

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • IMesasCabeceraService - Servicio principal de gestión de cabeceras de mesas
  • ILogger<MesasCabeceraController> - Logger para registro de errores y eventos

⚠️ Parámetros de Conexión

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

  • 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

📋 Categorías de Endpoints

📋 Consultas de Cabeceras

Operaciones de consulta para obtener cabeceras de mesas
Query
Read

Endpoints: 3 métodos

  • GET /GetAll
  • GET /GetBySalonMesa/{salon}/{mesa}
  • GET /Get/{salon}/{mesa}/{relacion}
Ver detalles →

➕ Gestión de Cabeceras

Operaciones CRUD completas para la gestión de cabeceras
CRUD
Core

Endpoints: 4 métodos

  • POST /Add
  • POST /AddSimplified
  • PUT /Update/{salon}/{mesa}/{relacion}
  • DELETE /Delete/{salon}/{mesa}/{relacion}
Ver detalles →

ℹ️ Información del Sistema

Información sobre métodos HTTP permitidos
System
Info

Endpoints: 1 método

  • OPTIONS /
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /WorkingData/MesasCabecera

Todos los endpoints del controlador están bajo la ruta /WorkingData/MesasCabecera, lo que indica que maneja datos de trabajo del sistema.

Patrones de URL por Categoría:

⚠️ Identificación de Cabeceras

Las cabeceras de mesa se identifican mediante tres parámetros:

  • 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 por mesa)

📊 Códigos de Respuesta

✅ 200 - OK

Operación exitosa, datos devueltos correctamente

Usado en: GET, PUT, DELETE exitosos

✅ 201 - Created

Recurso creado exitosamente

Usado en: POST exitosos

❌ 400 - Bad Request

Error en la solicitud o validación

Usado en: Errores de validación o lógica de negocio

❌ 404 - Not Found

Recurso no encontrado

Usado en: GET cuando no se encuentra la cabecera

❌ 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
  • ServiceResult Pattern: Manejo estructurado de resultados y errores
  • 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
  • Exception Handling: Manejo centralizado de excepciones con logging
  • CreatedAtAction: Respuestas 201 con ubicación del recurso creado
  • Logging: Logging estructurado de errores y eventos
  • OPTIONS Support: Información de métodos HTTP permitidos

⚠️ Consideraciones de Seguridad

  • Todos los endpoints requieren parámetros de conexión a la base de datos
  • Los errores se manejan a través de ServiceResult sin exponer información sensible
  • Se recomienda implementar autenticación y autorización adicional
  • Validación de entrada en todos los endpoints POST/PUT
  • Las cabeceras de mesa son datos críticos del negocio, requiere auditoría
  • Verificación de integridad referencial con mesas y salones
  • Validación de estados de mesa antes de operaciones
  • Control de acceso según roles de usuario

📝 Patrones de Diseño Utilizados

  • ServiceResult Pattern: Manejo estructurado de resultados
  • Repository Pattern: Acceso a datos a través de servicios
  • Dependency Injection: Inversión de control para servicios
  • Async/Await Pattern: Programación asíncrona
  • Exception Handling Pattern: Manejo centralizado de errores
  • Logging Pattern: Registro estructurado de eventos
  • CreatedAtAction Pattern: Respuestas con ubicación de recursos
  • RESTful API Design: Diseño de API REST estándar

📈 Estadísticas Detalladas

329
Líneas de Código
1
Región de Código
8
Métodos Públicos
5
Verbos HTTP

Distribución de Métodos HTTP:

📋 Modelo de Datos - MesasCabecera

Propiedades principales 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

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Apertura de comanda: Crear nueva cabecera al sentar clientes
  • División de mesa: Crear múltiples comandas en una mesa
  • Consulta de estado: Ver estado actual de mesas
  • Modificación de comanda: Actualizar datos de la cabecera
  • Cierre de comanda: Finalizar comanda y liberar mesa
  • Gestión de reservas: Manejar mesas reservadas
  • Asignación de camareros: Asignar personal a mesas
  • Control de ocupación: Monitorear ocupación del restaurante
  • Auditoría de servicio: Revisar comandas para reportes
  • Integración con POS: Conectar con sistemas de punto de venta