← Volver a Back.API

FamiliasController

Controlador para la gestión completa de familias de productos del restaurante

📊 Resumen del Controlador

2
Servicios Inyectados
6
Endpoints Totales
1
Entidad Principal
CRUD
Operaciones Completas

El FamiliasController es el controlador encargado de gestionar todos los aspectos relacionados con las familias de productos del restaurante. Proporciona una API RESTful completa con operaciones CRUD para la entidad Familia, permitiendo la organización jerárquica y categorización de los productos del menú.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de familias de productos (5 endpoints)
  • Consulta de todas las familias registradas en el sistema
  • Búsqueda de familia específica por ID único
  • Registro de nuevas familias con validación de datos
  • Actualización de información de familias existentes
  • Eliminación de familias del sistema
  • Organización jerárquica de productos del menú
  • Método OPTIONS para información de métodos HTTP permitidos (1 endpoint)

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • IFamiliasService - Servicio principal de gestión de familias
  • ILogger<FamiliasController> - 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

🏷️ Gestión de Familias

Operaciones CRUD completas para la gestión de familias de productos
CRUD
Core

Endpoints: 5 métodos

  • GET /GetFamilias
  • GET /GetFamilia/{id}
  • POST /AddFamilia
  • PUT /UpdateFamilia/{id}
  • DELETE /DeleteFamilia/{id}
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /Master/Familias

Todos los endpoints del controlador están bajo la ruta /Master/Familias, lo que indica que maneja datos maestros del sistema.

Patrones de URL:

📊 Códigos de Respuesta

✅ 200 - OK

Operación exitosa, datos devueltos correctamente

Usado en: GET, PUT, DELETE exitosos

✅ 201 - Created

Familia creada exitosamente

Usado en: POST exitosos

❌ 404 - Not Found

Familia no encontrada

Usado en: GET, PUT, DELETE cuando la familia 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

  • Synchronous Operations: Los métodos son síncronos para operaciones de familias
  • 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
  • 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
  • Las familias pueden tener productos asociados, considerar integridad referencial

📝 Patrones de Diseño Utilizados

  • Repository Pattern: Acceso a datos a través de servicios
  • Dependency Injection: Inversión de control para servicios
  • Error Handling Pattern: Manejo centralizado de errores
  • RESTful API Design: Diseño de API REST estándar

📈 Estadísticas Detalladas

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

Distribución de Métodos HTTP:

📋 Modelo de Datos - Familia

Propiedades del modelo Familium:
  • Familia (string): Identificador único de la familia
  • Descripcion (string): Descripción o nombre de la familia
  • Activo (bool): Estado de actividad de la familia
  • FechaCreacion (DateTime): Fecha de creación del registro
  • FechaModificacion (DateTime): Fecha de última modificación

📝 Notas sobre el Modelo

  • Familia: Es el campo de identificación principal (string)
  • Descripcion: Nombre descriptivo de la categoría de productos
  • Activo: Permite desactivar familias sin eliminarlas físicamente
  • Auditoría: Se mantienen fechas de creación y modificación
  • Relaciones: Las familias pueden tener múltiples artículos asociados

🏷️ Ejemplos de Familias Comunes

  • BEBIDAS: Refrescos, zumos, agua, café, té
  • ENTRANTES: Ensaladas, sopas, aperitivos
  • PLATOS_PRINCIPALES: Carnes, pescados, pasta
  • POSTRES: Dulces, helados, frutas
  • VINOS: Vinos tintos, blancos, rosados
  • CERVEZAS: Cervezas nacionales e importadas