← Volver a FamiliasController

🏷️ Gestión de Familias

Endpoints para la gestión CRUD completa de familias de productos del restaurante

Descripción General

Los endpoints de Gestión de Familias proporcionan las operaciones fundamentales para administrar las categorías y familias de productos del restaurante. Estos endpoints manejan el registro, consulta, actualización y eliminación de familias, que sirven como organización jerárquica para clasificar los artículos del menú.

🎯 Características de la Gestión de Familias

  • Identificación única: Cada familia tiene un ID único en el sistema
  • Organización jerárquica: Categorización de productos del menú
  • Descripción clara: Nombre descriptivo de la categoría
  • Estado activo/inactivo: Control de disponibilidad de la familia
  • Auditoría temporal: Fechas de creación y modificación
  • Relaciones con artículos: Una familia puede tener múltiples productos
  • Validación de datos: Verificación de integridad de la información

Endpoints Disponibles

GET /Master/Familias/GetFamilias

Obtiene todas las familias registradas en el sistema. Este endpoint devuelve una lista completa de todas las familias activas e inactivas en la base de datos.
Parámetros de consulta:
  • 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
200 OK
Lista de familias devuelta exitosamente
{ "familia": "BEBIDAS", "descripcion": "Bebidas y refrescos", "activo": true, "fechaCreacion": "2024-01-15T10:30:00Z", "fechaModificacion": "2024-01-15T10:30:00Z" }
500 Internal Server Error
Error interno del servidor

GET /Master/Familias/GetFamilia/{id}

Obtiene una familia específica por su ID. Este endpoint permite recuperar la información detallada de una familia en particular.
Parámetros de ruta:
  • id (string, requerido): ID único de la familia
Parámetros de consulta:
  • 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
200 OK
Familia encontrada y devuelta
404 Not Found
Familia no encontrada
500 Internal Server Error
Error interno del servidor

POST /Master/Familias/AddFamilia

Crea una nueva familia en el sistema. Este endpoint permite registrar una nueva categoría de productos en la base de datos del restaurante.
Body (JSON):
{ "familia": "POSTRES", "descripcion": "Postres y dulces", "activo": true }
Parámetros de consulta:
  • 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
201 Created
Familia creada exitosamente
{ "familia": "POSTRES", "descripcion": "Postres y dulces", "fechaCreacion": "2024-01-15T14:20:00Z", "fechaModificacion": "2024-01-15T14:20:00Z", "activo": true }
500 Internal Server Error
Error interno del servidor

PUT /Master/Familias/UpdateFamilia/{id}

Actualiza una familia existente en el sistema. Este endpoint permite modificar la información de una familia ya registrada.
Parámetros de ruta:
  • id (string, requerido): ID de la familia a actualizar
Body (JSON):
{ "descripcion": "Bebidas, refrescos y zumos naturales", "activo": true }
Parámetros de consulta:
  • 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
200 OK
Familia actualizada exitosamente
404 Not Found
Familia no encontrada
500 Internal Server Error
Error interno del servidor

DELETE /Master/Familias/DeleteFamilia/{id}

Elimina una familia del sistema. Este endpoint permite remover una familia de la base de datos del restaurante.
Parámetros de ruta:
  • id (string, requerido): ID de la familia a eliminar
Parámetros de consulta:
  • 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
200 OK
Familia eliminada exitosamente
{ "message": "Familia deleted successfully", "familia": { "familia": "POSTRES", "descripcion": "Postres y dulces", "fechaCreacion": "2024-01-15T14:20:00Z", "fechaModificacion": "2024-01-15T14:20:00Z", "activo": false } }
404 Not Found
Familia no encontrada
500 Internal Server Error
Error interno del servidor

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

📝 Convenciones de Nomenclatura

  • Familia: Usar mayúsculas y guiones bajos (ej: "BEBIDAS", "PLATOS_PRINCIPALES")
  • Descripcion: Texto descriptivo en español (ej: "Bebidas y refrescos")
  • Consistencia: Mantener un estándar en toda la aplicación

Servicio Utilizado

IFamiliasService - Servicio principal para la gestión de familias
  • GetAllFamilias(): Obtiene todas las familias
  • GetFamiliaById(): Obtiene una familia por ID
  • AddFamilia(): Crea una nueva familia
  • UpdateFamilia(): Actualiza una familia existente
  • DeleteFamilia(): Elimina una familia

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Configuración inicial del menú: Crear familias básicas al configurar el restaurante
  • Organización de productos: Agrupar artículos por categorías lógicas
  • Filtrado en aplicaciones: Permitir a usuarios filtrar por categorías
  • Reportes por familia: Generar estadísticas de ventas por categoría
  • Gestión de menús: Organizar productos para diferentes tipos de menú
  • Desactivación temporal: Desactivar familias sin eliminarlas

🔗 Relaciones con Otros Controladores

🔄 Integración con ArticulosController

  • Referencia cruzada: Los artículos tienen un campo FamiliaId que referencia a Familias
  • Consulta por familia: Filtrar artículos por familia específica
  • Integridad referencial: No eliminar familias que tengan artículos asociados
  • Menús organizados: Mostrar productos agrupados por familia

⚠️ Consideraciones de Integridad

  • Verificar dependencias: Antes de eliminar una familia, verificar que no tenga artículos
  • Actualización en cascada: Considerar el impacto en artículos al modificar familias
  • Validación de datos: Asegurar que los IDs de familia sean válidos