← Volver a Back.API

MesasLineaController

Controlador para la gestión completa de líneas de mesas y pedidos del restaurante

📊 Resumen del Controlador

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

El MesasLineaController es el controlador encargado de gestionar todos los aspectos relacionados con las líneas de mesas del restaurante. Proporciona una API RESTful completa con operaciones CRUD para la entidad MesasLinea, incluyendo gestión de pedidos, artículos, precios, impuestos y cálculos automáticos.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de líneas de mesas (5 endpoints)
  • Consulta de líneas por diferentes criterios (3 endpoints)
  • Creación de pedidos con validación de datos
  • Creación simplificada con cálculos automáticos
  • Actualización de líneas con control de cambios
  • Eliminación de líneas con validación
  • Cálculos automáticos de precios, IVA y totales
  • Validación de artículos y tipos de IVA
  • Gestión de invitaciones y descuentos
  • Integración con cabeceras de mesas
  • 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:

  • IArticulosService - Servicio de gestión de artículos y productos
  • IMesasLineaService - Servicio principal de gestión de líneas de mesas
  • IMesasCabeceraService - Servicio de gestión de cabeceras de mesas
  • ILogger<MesasLineaController> - Logger para registro de errores y eventos
  • ITipoIvaService - Servicio de gestión de tipos de IVA

⚠️ 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 Líneas

Operaciones de consulta para obtener líneas de mesas
Query
Read

Endpoints: 3 métodos

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

➕ Gestión de Líneas

Operaciones CRUD completas para la gestión de líneas
CRUD
Core

Endpoints: 4 métodos

  • POST /Add
  • POST /AddSimplified
  • PUT /Update/{salon}/{mesa}/{comanda}/{relacion}/{relacionSubarticulo}
  • DELETE /Delete/{salon}/{mesa}/{comanda}/{relacion}/{relacionSubarticulo}
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: /Working/MesasLinea

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

Patrones de URL por Categoría:

⚠️ Identificación de Líneas

Las líneas de mesa se identifican mediante cinco parámetros:

  • salon (double): ID del salón o área del restaurante
  • mesa (double): ID de la mesa específica
  • comanda (double): ID de la comanda
  • relacion (double): ID de relación de la línea
  • relacionSubarticulo (double): ID de relación del subartículo

📊 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 línea

❌ 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 5 servicios diferentes + 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
  • Cálculos Automáticos: Cálculo automático de precios, IVA y totales
  • Validación de Integridad: Verificación de cabeceras y artículos

⚠️ 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 líneas de mesa son datos críticos del negocio, requiere auditoría
  • Verificación de integridad referencial con cabeceras y artículos
  • Validación de precios y cálculos para prevenir fraudes
  • Control de acceso según roles de usuario
  • Validación de invitaciones y descuentos
  • Logging de todas las operaciones de pedidos

📝 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
  • Validation Pattern: Validación de datos de entrada
  • Calculation Pattern: Cálculos automáticos de precios
  • RESTful API Design: Diseño de API REST estándar

📈 Estadísticas Detalladas

375
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 - MesasLinea

Propiedades principales del modelo MesasLinea:
  • Salon (double): ID del salón o área del restaurante
  • Mesa (double): ID de la mesa específica
  • Comanda (double): ID de la comanda
  • Relacion (double): ID de relación de la línea
  • RelacionSubarticulo (double): ID de relación del subartículo
  • Camarero (double): ID del camarero que tomó el pedido
  • Articulo (string): Código del artículo
  • Orden (double): Orden de la línea en la comanda
  • Descripcion (string): Descripción del artículo
  • Cantidad (double): Cantidad del artículo
  • Precio (double): Precio unitario sin IVA
  • PrecioIva (double): Precio unitario con IVA
  • Iva (double): Porcentaje de IVA aplicado
  • Total (double): Total sin IVA (cantidad * precio)
  • TotalIva (double): Total con IVA (cantidad * precioIva)
  • Familia (string): Familia del artículo
  • Gramos (double): Peso en gramos del artículo
  • Invitacion (string): Indica si es invitación (S/N)
  • CantidadComanda (double): Cantidad en comanda
  • ImpresoraComanda (string): Impresora para comanda
  • Anulada (string): Indica si está anulada (S/N)
  • Pedido (double): Número de pedido
  • Agrupar (string): Indica si se agrupa (S/N)
  • Subarticulo (string): Código del subartículo

📝 Cálculos Automáticos

  • PrecioIva: Precio * (1 + IVA / 100)
  • Total: Cantidad * Precio
  • TotalIva: Cantidad * PrecioIva
  • Invitación: Si invitacion = "S", Total = 0 y TotalIva = 0
  • Relación: Máximo relación + 1 (autogenerado)

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Tomar pedido: Crear nueva línea de pedido
  • Pedido simplificado: Crear pedido con cálculos automáticos
  • Modificar pedido: Actualizar cantidad o artículo
  • Cancelar línea: Eliminar línea de pedido
  • Consulta de pedidos: Ver líneas por mesa
  • Gestión de invitaciones: Aplicar descuentos por invitación
  • Cálculo de totales: Calcular totales automáticamente
  • Validación de artículos: Verificar que el artículo existe
  • Aplicación de IVA: Calcular impuestos automáticamente
  • Integración con cabeceras: Verificar que existe cabecera
  • Asignación de camareros: Asignar camarero al pedido
  • Control de impresoras: Configurar impresora por artículo
  • Auditoría de pedidos: Revisar pedidos para reportes
  • Integración con POS: Conectar con sistemas de punto de venta