← Volver a Back.API

ArticulosController

Controlador completo para la gestión de artículos, productos y menús del restaurante

📊 Resumen del Controlador

8
Servicios Inyectados
41
Endpoints Totales
8
Categorías de Artículos
CRUD
Operaciones Completas

El ArticulosController es el controlador más complejo y completo del sistema RestMaster, encargado de gestionar todos los aspectos relacionados con los artículos y productos del restaurante. Proporciona una API RESTful completa con operaciones CRUD para múltiples entidades relacionadas con artículos.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de artículos principales (5 endpoints)
  • Gestión de fotos de artículos con múltiples imágenes (5 endpoints)
  • Gestión de códigos de barras para identificación rápida (5 endpoints)
  • Gestión de detalles específicos de cada artículo (5 endpoints)
  • Configuración de impresoras por artículo (5 endpoints)
  • Relaciones venta-compra para control de inventario (5 endpoints)
  • Gestión de apertura de artículos por comanda (5 endpoints)
  • Artículos de balanza para productos vendidos por peso (5 endpoints)
  • Método OPTIONS para información de métodos HTTP permitidos (1 endpoint)

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • IArticulosService - Servicio principal de artículos
  • IArticulosFotoService - Gestión de fotos de artículos
  • IArticulosBarraService - Gestión de códigos de barras
  • IArticulosDetalleService - Gestión de detalles de artículos
  • IArticulosImpresoraService - Configuración de impresoras
  • IArticuloRelacionVentaCompraService - Relaciones venta-compra
  • IArticulosAperturaService - Gestión de apertura de artículos
  • IArticulosBalanzaService - Gestión de artículos de balanza
  • ILogger<ArticulosController> - Logging 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): 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

📦 Artículos Principales

Gestión CRUD completa de artículos base del sistema
CRUD
Core

Endpoints: 5 métodos

  • GET /GetArticulos
  • GET /GetArticulo/{id}
  • POST /AddArticulo
  • PUT /UpdateArticulo/{id}
  • DELETE /DeleteArticulo/{id}
Ver detalles →

📸 Fotos de Artículos

Gestión de imágenes asociadas a los artículos
Media
CRUD

Endpoints: 5 métodos

  • GET /GetAllArticuloFoto
  • GET /GetArticuloFoto/{articulo}
  • POST /AddArticuloFoto
  • PUT /UpdateArticuloFoto/{articulo}
  • DELETE /DeleteArticuloFoto/{articulo}
Ver detalles →

📊 Códigos de Barras

Gestión de códigos de barras para identificación rápida
Inventory
CRUD

Endpoints: 5 métodos

  • GET /GetArticulosBarra
  • GET /GetArticuloBarra/{codigoBarra}
  • POST /AddArticuloBarra
  • PUT /UpdateArticuloBarra/{codigoBarra}
  • DELETE /DeleteArticuloBarra/{codigoBarra}
Ver detalles →

📝 Detalles de Artículos

Información detallada y específica de cada artículo
Details
CRUD

Endpoints: 5 métodos

  • GET /GetArticulosDetalle
  • GET /GetArticuloDetalle/{articulo}
  • POST /AddArticuloDetalle
  • PUT /UpdateArticuloDetalle/{articulo}
  • DELETE /DeleteArticuloDetalle/{articulo}
Ver detalles →

🖨️ Impresoras por Artículo

Configuración de impresoras específicas para cada artículo
Hardware
CRUD

Endpoints: 5 métodos

  • GET /GetArticulosImpresoras
  • GET /GetArticuloImpresora/{articulo}/{impresora}
  • POST /AddArticuloImpresora
  • PUT /UpdateArticuloImpresora/{articulo}/{impresora}
  • DELETE /DeleteArticuloImpresora/{articulo}/{impresora}
Ver detalles →

🔄 Relaciones Venta-Compra

Gestión de relaciones entre artículos de venta y compra
Relations
CRUD

Endpoints: 5 métodos

  • GET /GetArticuloRelaciones
  • GET /GetArticuloRelacion/{articulo}
  • POST /AddArticuloRelacion
  • PUT /UpdateArticuloRelacion/{articulo}
  • DELETE /DeleteArticuloRelacion/{articulo}
Ver detalles →

🚪 Apertura de Artículos

Gestión de apertura de artículos por comanda
Orders
CRUD

Endpoints: 5 métodos

  • GET /GetArticulosAperturas
  • GET /GetArticuloApertura/{articulosApertura}/{comanda}/{articulo}
  • POST /AddArticuloApertura
  • PUT /UpdateArticuloApertura/{articulosApertura}/{comanda}/{articulo}
  • DELETE /DeleteArticuloApertura/{articulosApertura}/{comanda}/{articulo}
Ver detalles →

⚖️ Artículos de Balanza

Gestión de artículos vendidos por peso
Scale
CRUD

Endpoints: 5 métodos

  • GET /GetArticulosBalanzas
  • GET /GetArticuloBalanza/{articulo}
  • POST /AddArticuloBalanza
  • PUT /UpdateArticuloBalanza/{articulo}
  • DELETE /DeleteArticuloBalanza/{articulo}
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /Master/Articulos

Todos los endpoints del controlador están bajo la ruta /Master/Articulos, lo que indica que maneja datos maestros 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

✅ 201 - Created

Recurso creado exitosamente

Usado en: POST exitosos

❌ 404 - Not Found

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 8 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
  • Logging: Logging estructurado de errores y eventos

⚠️ Consideraciones de Seguridad

  • Todos los endpoints requieren parámetros de conexión a la base de datos
  • Los errores internos se loguean pero no exponen información sensible
  • Se recomienda implementar autenticación y autorización adicional
  • Validación de entrada en todos los endpoints POST/PUT

📝 Patrones de Diseño Utilizados

  • 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
  • Error Handling Pattern: Manejo centralizado de errores
  • RESTful API Design: Diseño de API REST estándar

📈 Estadísticas Detalladas

1,440
Líneas de Código
8
Regiones de Código
41
Métodos Públicos
4
Verbos HTTP

Distribución de Métodos HTTP: