← Volver a Back.API

TarjetasController

Controlador para la gestión de tarjetas de fidelización y descuentos del restaurante

📊 Resumen del Controlador

3
Servicios Inyectados
10
Endpoints Totales
2
Categorías Principales
CRUD
Operaciones Completas

El TarjetasController es el controlador encargado de gestionar las tarjetas de fidelización y descuentos del sistema RestMaster. Proporciona una API RESTful completa para administrar tanto las tarjetas base como sus imágenes asociadas, permitiendo la gestión de programas de fidelización y descuentos para clientes.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de tarjetas de fidelización (5 endpoints)
  • Gestión de fotos de tarjetas con imágenes asociadas (5 endpoints)
  • Programas de fidelización para clientes frecuentes
  • Sistema de descuentos basado en tarjetas
  • Gestión de imágenes para identificación visual
  • Integración con facturación para aplicar descuentos
  • Validación de tarjetas en transacciones
  • Almacenamiento de imágenes en formato binario

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • ITarjetaService - Servicio principal de gestión de tarjetas
  • ITarjetasFotoService - Servicio de gestión de fotos de tarjetas
  • ILogger<TarjetasController> - 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 Tarjetas

Gestión CRUD completa de tarjetas de fidelización
CRUD
Loyalty

Endpoints: 5 métodos

  • GET /GetTarjetas
  • GET /GetTarjeta/{tarjeta}
  • POST /AddTarjeta
  • PUT /UpdateTarjeta/{tarjeta}
  • DELETE /DeleteTarjeta/{tarjeta}
Ver detalles →

📸 Gestión de Fotos de Tarjetas

Gestión CRUD completa de imágenes de tarjetas
Media
CRUD

Endpoints: 5 métodos

  • GET /GetTarjetaFoto/{tarjeta}
  • POST /AddTarjetaFoto
  • PUT /UpdateTarjetaFoto/{tarjeta}
  • DELETE /DeleteTarjetaFoto/{tarjeta}
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /Master/Tarjetas

Todos los endpoints del controlador están bajo la ruta /Master/Tarjetas, lo que indica que maneja datos maestros del sistema relacionados con tarjetas de fidelización.

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

Tarjeta o foto creada exitosamente

Usado en: POST exitosos

❌ 404 - Not Found

Tarjeta o foto no encontrada

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

  • Synchronous Operations: Todos los métodos son síncronos para operaciones de datos
  • 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
  • Binary Data Handling: Gestión de imágenes en formato binario
  • CreatedAtAction: Respuestas 201 con ubicación del recurso creado

⚠️ 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
  • Control de acceso a información de tarjetas de fidelización
  • Validación de permisos para modificar tarjetas
  • Protección de datos de imágenes de tarjetas

📝 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
  • Service Layer Pattern: Lógica de negocio en servicios
  • Binary Data Pattern: Manejo de datos binarios (imágenes)

📈 Estadísticas Detalladas

173
Líneas de Código
1
Región de Código
10
Métodos Públicos
4
Verbos HTTP

Distribución de Métodos HTTP:

📋 Modelos de Datos

Modelo Tarjeta:
  • Tarjeta1 (string): Identificador único de la tarjeta (clave primaria)
Modelo TarjetasFoto:
  • Tarjeta (string): ID de la tarjeta (clave primaria)
  • Imagen (byte[]): Imagen de la tarjeta en formato binario

🔑 Características de los Modelos

  • Clave primaria simple: Tarjeta1 para tarjetas, Tarjeta para fotos
  • Almacenamiento de imágenes: Formato byte[] para datos binarios
  • Relación 1:1: Una tarjeta puede tener una imagen asociada
  • Tablas: TARJETAS y TARJETAS_FOTO en la base de datos
  • Validación de longitud: Tarjeta limitada a 20 caracteres
  • Compatibilidad: Soporte para múltiples formatos de imagen

⚠️ Consideraciones de Configuración

  • Las imágenes se almacenan en formato binario en la base de datos
  • Se recomienda limitar el tamaño de las imágenes para optimizar rendimiento
  • Las tarjetas deben tener identificadores únicos
  • La relación entre tarjetas y fotos es opcional (1:0..1)
  • Se recomienda implementar compresión de imágenes