← Volver a Back.API

WaitersController

Controlador para la gestión de camareros y personal de servicio del restaurante

📊 Resumen del Controlador

2
Servicios Inyectados
6
Endpoints Totales
1
Categoría Principal
CRUD
Operaciones Completas

El WaitersController es el controlador encargado de gestionar los camareros y personal de servicio del sistema RestMaster. Proporciona una API RESTful completa para administrar la información de los empleados que atienden las mesas, toman pedidos y gestionan el servicio al cliente en el restaurante.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de camareros (5 endpoints)
  • Registro de personal de servicio y atención
  • Asignación de camareros a mesas y comandas
  • Gestión de turnos y horarios de servicio
  • Integración con mesas y gestión de comandas
  • Control de propinas y comisiones por camarero
  • Validación de personal para apertura de mesas
  • Método OPTIONS para información de métodos HTTP permitidos (1 endpoint)

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • IWaitersService - Servicio principal de gestión de camareros
  • ILogger<WaitersController> - 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 Camareros

Gestión CRUD completa de camareros y personal de servicio
CRUD
Staff

Endpoints: 5 métodos

  • GET /GetWaiters
  • GET /GetWaiter/{id}
  • POST /AddWaiter
  • PUT /UpdateWaiter/{id}
  • DELETE /DeleteWaiter/{id}
Ver detalles →

🔧 Información del Sistema

Información sobre métodos HTTP permitidos
System
Info

Endpoints: 1 método

  • OPTIONS /
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /Master/Waiters

Todos los endpoints del controlador están bajo la ruta /Master/Waiters, lo que indica que maneja datos maestros del sistema relacionados con el personal de servicio.

Patrones de URL por Categoría:

📊 Códigos de Respuesta

✅ 200 - OK

Operación exitosa, datos devueltos correctamente

Usado en: GET, PUT, DELETE, OPTIONS exitosos

✅ 201 - Created

Camarero creado exitosamente

Usado en: POST exitosos

❌ 404 - Not Found

Camarero 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 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
  • CreatedAtAction: Respuestas 201 con ubicación del recurso creado
  • XML Documentation: Documentación XML completa en todos los métodos

⚠️ 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 personal
  • Validación de permisos para modificar datos de empleados
  • Auditoría de cambios en información de camareros

📝 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
  • Service Layer Pattern: Lógica de negocio en servicios
  • Documentation Pattern: Documentación XML y Swagger

📈 Estadísticas Detalladas

193
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 - Camarero

Propiedades del modelo Camarero:
  • CamareroId (double): Identificador único del camarero (clave primaria)
  • Nombre (string): Nombre completo del camarero (requerido, máximo 50 caracteres)

🔑 Características del Modelo

  • Clave primaria: CamareroId es la clave primaria de la tabla CAMARERO
  • Campo requerido: Nombre es obligatorio y no puede ser nulo
  • Longitud máxima: 50 caracteres para el nombre
  • Tipo de datos: String no Unicode para optimización
  • Índice: Índice I_CAMARERO_NOMBRE para búsquedas por nombre
  • Relaciones: Se relaciona con mesas, comandas y facturas
  • Validación: El nombre debe ser único en el sistema

⚠️ Consideraciones de Gestión

  • Los camareros deben tener nombres únicos en el sistema
  • No se puede eliminar un camarero que tenga comandas activas
  • Los cambios en camareros pueden afectar mesas asignadas
  • Se recomienda mantener un historial de camareros
  • Considerar la integración con sistemas de nómina

👨‍💼 Roles y Responsabilidades

🎯 Funciones Típicas de Camareros

  • Atención al Cliente: Recepción y atención de clientes
  • Toma de Pedidos: Registro de comandas y preferencias
  • Gestión de Mesas: Asignación y control de mesas
  • Servicio de Alimentos: Entrega de pedidos y bebidas
  • Cobro y Facturación: Gestión de pagos y facturas
  • Limpieza y Mantenimiento: Preparación de mesas
  • Comunicación con Cocina: Coordinación con el personal de cocina
  • Gestión de Propinas: Control de propinas y comisiones

🔗 Integración con Otros Sistemas

  • Mesas: Asignación de camareros a mesas específicas
  • Comandas: Registro de pedidos por camarero
  • Facturación: Asociación de facturas con camareros
  • Propinas: Cálculo y distribución de propinas
  • Reportes: Análisis de rendimiento por camarero
  • Turnos: Gestión de horarios y turnos

📊 Modelos Relacionados

🔗 Entidades Relacionadas

  • CamareroFoto: Fotos de los camareros (tabla CAMARERO_FOTO)
  • CajeroCamarero: Relación entre cajeros y camareros (tabla CAJERO_CAMARERO)
  • TemporalCamarero: Datos temporales de camareros (tabla TEMPORAL_CAMARERO)
  • MesasCabecera: Cabeceras de mesas con camarero asignado
  • MesasLinea: Líneas de comanda con camarero que tomó el pedido
  • Factura: Facturas asociadas a camareros
  • Reposicione: Reposiciones de inventario por camarero

📋 Campos de Relación

  • Camarero: Campo común en múltiples tablas para identificar al camarero
  • CamareroId: Clave primaria en la tabla principal CAMARERO
  • Relaciones: Claves foráneas en tablas de trabajo y almacén
  • Validaciones: Verificación de existencia antes de asignar