← Volver a WaitersController

👨‍💼 Gestión de Camareros

Endpoints para la gestión CRUD completa de camareros y personal de servicio

Descripción General

Los endpoints de Gestión de Camareros proporcionan las operaciones fundamentales para administrar el personal de servicio del restaurante. Estos endpoints permiten registrar, consultar, actualizar y eliminar la información de los camareros que atienden las mesas, toman pedidos y gestionan el servicio al cliente.

🎯 Características de los Camareros

  • Identificación única: Cada camarero tiene un ID único en el sistema
  • Información básica: Nombre completo del empleado
  • Asignación a mesas: Los camareros se asignan a mesas específicas
  • Gestión de comandas: Registro de pedidos por camarero
  • Control de propinas: Seguimiento de propinas y comisiones
  • Validación de datos: Verificación de integridad de la información

Endpoints Disponibles

GET /Master/Waiters/GetWaiters

Obtiene todos los camareros registrados en el sistema. Este endpoint devuelve una lista completa de todo el personal de servicio disponible 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 camareros devuelta exitosamente
[ { "camareroId": 1, "nombre": "Juan Pérez" }, { "camareroId": 2, "nombre": "María García" }, { "camareroId": 3, "nombre": "Carlos López" } ]
500 Internal Server Error
Error interno del servidor

Casos de Uso:

  • Consulta del personal de servicio disponible
  • Asignación de camareros a mesas
  • Gestión de turnos y horarios
  • Reportes de personal activo
  • Validación de camareros para apertura de mesas

GET /Master/Waiters/GetWaiter/{id}

Obtiene un camarero específico por su ID. Este endpoint permite recuperar la información detallada de un empleado de servicio en particular.
Parámetros de ruta:
  • id (double, requerido): ID único del camarero
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
Camarero encontrado y devuelto
{ "camareroId": 1, "nombre": "Juan Pérez" }
404 Not Found
Camarero no encontrado
500 Internal Server Error
Error interno del servidor

Casos de Uso:

  • Verificación de datos de un camarero específico
  • Validación antes de asignar a una mesa
  • Consulta de información para reportes
  • Verificación de existencia antes de operaciones
  • Gestión de perfiles de empleados

POST /Master/Waiters/AddWaiter

Crea un nuevo camarero en el sistema. Este endpoint permite agregar un nuevo empleado de servicio al restaurante.
Body (JSON):
{ "camareroId": 4, "nombre": "Ana Rodríguez" }
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
Camarero creado exitosamente
{ "camareroId": 4, "nombre": "Ana Rodríguez" }
500 Internal Server Error
Error interno del servidor

Casos de Uso:

  • Contratación de nuevo personal
  • Registro de empleados temporales
  • Expansión del equipo de servicio
  • Configuración inicial del personal
  • Registro de personal de eventos especiales

PUT /Master/Waiters/UpdateWaiter/{id}

Actualiza un camarero existente en el sistema. Este endpoint permite modificar la información de un empleado de servicio ya registrado.
Parámetros de ruta:
  • id (double, requerido): ID del camarero a actualizar
Body (JSON):
{ "camareroId": 1, "nombre": "Juan Carlos Pérez" }
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
Camarero actualizado exitosamente
404 Not Found
Camarero no encontrado
500 Internal Server Error
Error interno del servidor

Casos de Uso:

  • Actualización de datos personales
  • Corrección de nombres mal escritos
  • Cambio de información por matrimonio
  • Actualización de datos por cambio de identidad
  • Corrección de errores de registro

DELETE /Master/Waiters/DeleteWaiter/{id}

Elimina un camarero del sistema. Este endpoint permite remover un empleado de servicio del restaurante.
Parámetros de ruta:
  • id (double, requerido): ID del camarero 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
Camarero eliminado exitosamente
{ "message": "Waiter deleted successfully", "waiter": { "camareroId": 3, "nombre": "Carlos López" } }
404 Not Found
Camarero no encontrado
500 Internal Server Error
Error interno del servidor

Casos de Uso:

  • Baja de empleados
  • Eliminación de registros duplicados
  • Limpieza de datos obsoletos
  • Eliminación de personal temporal
  • Corrección de registros erróneos

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)

🔑 Restricciones del Modelo

  • Clave primaria: CamareroId es único y no puede ser nulo
  • 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
  • Validación: El nombre debe ser único en el sistema

Servicio Utilizado

IWaitersService - Servicio principal para la gestión de camareros
  • GetWaiters(): Obtiene todos los camareros
  • GetWaiter(): Obtiene un camarero por ID
  • AddWaiter(): Crea un nuevo camarero
  • UpdateWaiter(): Actualiza un camarero existente
  • DeleteWaiter(): Elimina un camarero

👨‍💼 Ejemplos de Gestión de Personal

🎯 Configuraciones Típicas de Restaurantes

Restaurante Pequeño (5-10 mesas):
[ { "camareroId": 1, "nombre": "Juan Pérez" }, { "camareroId": 2, "nombre": "María García" } ]
Restaurante Mediano (15-25 mesas):
[ { "camareroId": 1, "nombre": "Juan Pérez" }, { "camareroId": 2, "nombre": "María García" }, { "camareroId": 3, "nombre": "Carlos López" }, { "camareroId": 4, "nombre": "Ana Rodríguez" } ]
Restaurante Grande (30+ mesas):
[ { "camareroId": 1, "nombre": "Juan Pérez" }, { "camareroId": 2, "nombre": "María García" }, { "camareroId": 3, "nombre": "Carlos López" }, { "camareroId": 4, "nombre": "Ana Rodríguez" }, { "camareroId": 5, "nombre": "Luis Martínez" }, { "camareroId": 6, "nombre": "Carmen Sánchez" }, { "camareroId": 7, "nombre": "Roberto Jiménez" } ]

🔗 Integración con Otros Sistemas

🎯 Relaciones con Otros Controladores

  • TableManagerController: Asignación de camareros a mesas
  • MesasCabeceraController: Gestión de comandas por camarero
  • MesasLineaController: Líneas de pedido con camarero
  • InvoiceController: Facturas asociadas a camareros
  • EmployeesController: Información general de empleados
  • CajerosController: Relación cajero-camarero

📊 Campos de Relación en Otras Tablas

  • MesasCabecera.Camarero: Camarero asignado a la mesa
  • MesasLinea.Camarero: Camarero que tomó el pedido
  • Factura.Camarero: Camarero asociado a la factura
  • CajeroCamarero.Camarero: Relación con cajeros
  • Reposicione.Camarero: Reposiciones por camarero