← Volver a Back.API

TramosHorarioController

Controlador para la gestión de tramos horarios y horarios de servicio del restaurante

📊 Resumen del Controlador

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

El TramosHorarioController es el controlador encargado de gestionar los tramos horarios y horarios de servicio del sistema RestMaster. Proporciona una API RESTful completa para administrar los diferentes períodos de tiempo en los que el restaurante ofrece sus servicios, permitiendo la configuración de horarios de apertura, cierre y períodos de servicio especiales.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de tramos horarios (5 endpoints)
  • Configuración de horarios de apertura y cierre
  • Gestión de períodos de servicio especiales
  • Validación de horarios para reservas y pedidos
  • Integración con reservas y gestión de mesas
  • Configuración de horarios por día de la semana
  • Gestión de horarios para eventos especiales
  • Método OPTIONS para información de métodos HTTP permitidos (1 endpoint)

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • ITramosHorarioService - Servicio principal de gestión de tramos horarios
  • ILogger<TramosHorarioController> - 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 Tramos Horarios

Gestión CRUD completa de tramos horarios y períodos de servicio
CRUD
Schedule

Endpoints: 5 métodos

  • GET /GetTramosHorarios
  • GET /GetTramoHorario/{tramoHorario}
  • POST /AddTramoHorario
  • PUT /UpdateTramoHorario/{tramoHorario}
  • DELETE /DeleteTramoHorario/{tramoHorario}
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/TramosHorario

Todos los endpoints del controlador están bajo la ruta /Master/TramosHorario, lo que indica que maneja datos maestros del sistema relacionados con tramos horarios.

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

Tramo horario creado exitosamente

Usado en: POST exitosos

❌ 404 - Not Found

Tramo horario 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

  • Synchronous Operations: Todos los métodos son síncronos para operaciones de datos
  • 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 configuración de horarios
  • Validación de permisos para modificar tramos horarios
  • Auditoría de cambios en configuración de horarios

📝 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
  • Documentation Pattern: Documentación XML y Swagger

📈 Estadísticas Detalladas

184
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 - TramosHorario

Propiedades del modelo TramosHorario:
  • TramoHorario (string): Identificador único del tramo horario (clave primaria)
  • HoraInicio (DateTime): Hora de inicio del tramo horario
  • HoraFinal (DateTime): Hora de finalización del tramo horario

🔑 Características del Modelo

  • Clave primaria: TramoHorario es la clave primaria de la tabla TRAMOS_HORARIOS
  • Longitud máxima: 50 caracteres para el ID del tramo horario
  • Tipo de datos: String no Unicode para optimización
  • Horarios: Tipo DateTime para precisión en fechas y horas
  • Restricciones: No permite valores nulos en la clave
  • Índice: Clave primaria con índice I_TRAMOS_HORARIO
  • Validación: HoraFinal debe ser posterior a HoraInicio

⚠️ Consideraciones de Configuración

  • Los tramos horarios deben tener identificadores únicos
  • La hora de finalización debe ser posterior a la hora de inicio
  • Se recomienda evitar solapamientos entre tramos horarios
  • Los cambios en tramos horarios pueden afectar reservas existentes
  • Considerar zonas horarias en la configuración

🕒 Notas sobre el uso de HoraInicio y HoraFinal

Importante: La fecha de los campos HoraInicio y HoraFinal se ignora completamente. El sistema siempre almacena la hora con la fecha 1899-12-30. Puedes enviar cualquier fecha, pero solo se usará la hora, minuto y segundo.
Ejemplo de request válido:

{
  "TramoHorario": "A 09-10",
  "HoraInicio": "2024-01-01T09:00:00",
  "HoraFinal": "2024-01-01T10:00:00"
}

También puedes enviar solo la hora (por ejemplo, "0001-01-01T09:00:00") y se normalizará automáticamente.
Advertencia: Si envías una hora vacía o inválida (por ejemplo, "0001-01-01T00:00:00"), la petición será rechazada.

🕐 Tipos de Tramos Horarios

🎯 Configuración Típica de Restaurantes

  • Desayuno: 07:00 - 11:00 (4 horas)
  • Almuerzo: 12:00 - 16:00 (4 horas)
  • Cena: 19:00 - 23:00 (4 horas)
  • Servicio Continuo: 12:00 - 00:00 (12 horas)
  • Horario Reducido: 18:00 - 22:00 (4 horas)
  • Eventos Especiales: Horarios personalizados

🔗 Integración con Otros Sistemas

  • Reservas: Validación de disponibilidad por tramo
  • Pedidos: Restricción de pedidos por horario
  • Personal: Asignación de turnos por tramo
  • Facturación: Aplicación de tarifas por horario
  • Reportes: Análisis de ventas por tramo