← Volver a Back.API

👨‍💼 CajerosController

Controlador para la gestión completa de cajeros (cashiers) en el sistema RestMaster

📊 Resumen del Controlador

2
Servicios Inyectados
12
Endpoints Totales
6
Categorías de Operaciones
2
Tipos de Autenticación

El CajerosController gestiona todas las operaciones CRUD sobre cajeros, soportando autenticación tradicional y JWT. Cada operación tiene dos versiones: una con parámetros explícitos y otra usando JWT.

🎯 Funcionalidades Principales

  • Listado de cajeros (tradicional/JWT)
  • Consulta de cajero por ID (tradicional/JWT)
  • Alta de cajero (tradicional/JWT)
  • Modificación de cajero (tradicional/JWT)
  • Borrado de cajero (tradicional/JWT)
  • Búsqueda avanzada con filtros y paginación (tradicional/JWT)

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • ICajeroService - Servicio principal de gestión de cajeros
  • ILogger<CajerosController> - Logging de errores y eventos

🔐 Tipos de Autenticación

El controlador soporta dos tipos de autenticación para cada operación:

  • Autenticación Tradicional: Mediante parámetros de consulta (initialCatalog, userID, password)
  • Autenticación JWT: Mediante token Bearer en el header Authorization

⚠️ Parámetros de Conexión

Los endpoints con autenticación tradicional requieren los siguientes parámetros:

  • 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

👥 Listado de Cajeros

Obtención de la lista completa de cajeros en el sistema
CRUD
GET

Endpoints: 2 métodos

  • GET /GetCajeros (Tradicional)
  • GET /GetCajerosJwt (JWT)
Ver detalles →

🔎 Consulta por ID

Obtención de información detallada de un cajero específico
CRUD
GET

Endpoints: 2 métodos

  • GET /GetCajero/{id} (Tradicional)
  • GET /GetCajeroJwt/{id} (JWT)
Ver detalles →

➕ Alta de Cajero

Creación de un nuevo cajero en el sistema
CRUD
POST

Endpoints: 2 métodos

  • POST /AddCajero (Tradicional)
  • POST /AddCajeroJwt (JWT)
Ver detalles →

✏️ Modificación de Cajero

Actualización de información de un cajero existente
CRUD
PUT

Endpoints: 2 métodos

  • PUT /UpdateCajero/{id} (Tradicional)
  • PUT /UpdateCajeroJwt/{id} (JWT)
Ver detalles →

🗑️ Borrado de Cajero

Eliminación permanente de un cajero del sistema
CRUD
DELETE

Endpoints: 2 métodos

  • DELETE /DeleteCajero/{id} (Tradicional)
  • DELETE /DeleteCajeroJwt/{id} (JWT)
Ver detalles →

🔍 Búsqueda Avanzada

Búsqueda de cajeros con filtros y paginación
Search
GET

Endpoints: 2 métodos

  • GET /SearchCajeros (Tradicional)
  • GET /SearchCajerosJwt (JWT)
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /Master/Cajeros

Todos los endpoints del controlador están bajo la ruta /Master/Cajeros, 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

❌ 400 - Bad Request

Datos de entrada inválidos

Usado en: Errores de validación en POST/PUT

❌ 401 - Unauthorized

Token JWT inválido o expirado

Usado en: Endpoints JWT con autenticación fallida

❌ 403 - Forbidden

Sin permisos para la operación

Usado en: Usuario sin permisos suficientes

❌ 404 - Not Found

Recurso no encontrado

Usado en: GET, PUT, DELETE cuando el recurso no existe

❌ 409 - Conflict

Conflicto con el estado actual

Usado en: Eliminación con operaciones activas

❌ 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 servicios por constructor
  • RESTful Design: Diseño REST completo con verbos HTTP apropiados
  • Type Safety: Uso de tipos fuertemente tipados para respuestas
  • JWT Validation: Validación automática de tokens JWT
  • Logging: Logging estructurado de errores y eventos

⚠️ Consideraciones de Seguridad

  • Validación de JWT tokens en todos los endpoints protegidos
  • Validación de datos antes de operaciones críticas
  • Verificación de operaciones activas antes de eliminación
  • Los errores internos se loguean pero no exponen información sensible
  • Se recomienda usar HTTPS en producción

📝 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
  • Dual Authentication Pattern: Soporte para múltiples métodos de autenticación

📈 Estadísticas Detalladas

648
Líneas de Código
12
Métodos Públicos
4
Verbos HTTP
6
Categorías Funcionales

Distribución de Métodos HTTP:

Distribución por Tipo de Autenticación:

📋 Modelos de Datos

Entidades Principales

  • Cajero: Entidad principal con información básica del cajero
  • CajeroResponse: Respuesta estándar para operaciones de cajeros
  • SearchCajeroRequest: Parámetros para búsqueda avanzada

⚠️ Validaciones Importantes

  • Validación de campos obligatorios (nombre, apellidos, estado)
  • Validación de formato de fechas (ISO 8601)
  • Validación de longitud de campos (nombre: 50 chars, apellidos: 100 chars)
  • Validación de estado (A=Activo, B=Baja)
  • Validación de tokens JWT
  • Verificación de operaciones activas antes de eliminación

📚 Documentación de Endpoints

Documentación detallada de cada endpoint del controlador:

Listado de Cajeros

GET GET JWT

Obtiene la lista completa de cajeros en el sistema

Consulta por ID

GET GET JWT

Obtiene la información detallada de un cajero específico

Alta de Cajero

POST POST JWT

Crea un nuevo cajero en el sistema

Actualizar Cajero

PUT PUT JWT

Actualiza la información de un cajero existente

Eliminar Cajero

DELETE DELETE JWT

Elimina permanentemente un cajero del sistema

Búsqueda Avanzada

GET GET JWT

Busca cajeros con filtros avanzados y paginación