< Summary

Information
Class: CoWorkingApp.API.Infrastructure.Presentation.Controllers.ReservationController
Assembly: CoWorkingApp.API
File(s): H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.API\Infrastructure\Presentation\Controllers\ReservationController.cs
Line coverage
100%
Covered lines: 58
Uncovered lines: 0
Coverable lines: 58
Total lines: 135
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.ctor(...)100%1100%
GetByDate()100%2100%
GetByUserId()100%2100%
GetBySeatId()100%2100%

File(s)

H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.API\Infrastructure\Presentation\Controllers\ReservationController.cs

#LineLine coverage
 1using CoWorkingApp.Core.Application.Contracts.Services;
 2using CoWorkingApp.Core.Domain.DTOs;
 3using Microsoft.AspNetCore.Mvc;
 4
 5namespace CoWorkingApp.API.Infrastructure.Presentation.Controllers
 6{
 7    /// <summary>
 8    /// Controlador para las operaciones relacionadas con la entidad Reservation.
 9    /// </summary>
 10    [ApiController]
 11    [Route("api/[controller]s")] // Se utiliza el plural "reservations" en la ruta para seguir convenciones RESTful
 12    public class ReservationController : ControllerGeneric<IReservationService, ReservationRequest, ReservationResponse>
 13    {
 14        /// <summary>
 15        /// Constructor de la clase ReservationController.
 16        /// </summary>
 17        /// <param name="service">Instancia del servicio de reservaciones.</param>
 18        /// <param name="logger">Instancia del logger.</param>
 8619        public ReservationController(IReservationService service, ILogger<ControllerGeneric<IReservationService, Reserva
 20
 21        /// <summary>
 22        /// Obtiene reservaciones por fecha.
 23        /// </summary>
 24        /// <param name="date">Fecha de las reservaciones a obtener.</param>
 25        /// <returns>ActionResult con la colección de reservaciones correspondientes a la fecha o un error interno.</ret
 26        [HttpGet("bydate")]
 27        public virtual async Task<ActionResult<IEnumerable<ReservationResponse>>> GetByDate([FromQuery] DateTime date)
 328        {
 29            try
 330            {
 331                var reservations = await _service.GetByDateAsync(date);
 32
 833                if (reservations.Any(e => !e.Success))
 134                {
 35                    // Si hay respuestas no exitosas, se construye una lista de respuestas de error
 536                    var errorResponse = reservations.Where(e => !e.Success).ToList();
 37                    // Se actualiza el mensaje de cada respuesta de error y se agregan los mensajes de error a la lista 
 138                    errorResponse.ForEach(response =>
 139                    {
 140                        response.Message = "Error occurred while retrieving reservations";
 141                        response.Errors.Add(response.Message);
 242                    });
 43
 44                    // Se devuelve un estado de error con las respuestas de error
 145                    return NotFound(errorResponse);
 46                }
 47
 148                return Ok(reservations);
 49            }
 150            catch (Exception)
 151            {
 52                // Maneja cualquier excepción inesperada
 153                var exception = new Exception("An unexpected error occurred while getting reservations.");
 154                _logger.LogError(exception, exception.Message);
 155                return StatusCode(500, HandleException(exception));
 56            }
 357        }
 58
 59        /// <summary>
 60        /// Obtiene reservaciones por ID de usuario.
 61        /// </summary>
 62        /// <param name="userId">ID del usuario para el cual se obtendrán las reservaciones.</param>
 63        /// <returns>ActionResult con la colección de reservaciones correspondientes al usuario o un error interno.</ret
 64        [HttpGet("byuser/{userId}")]
 65        public virtual async Task<ActionResult<IEnumerable<ReservationResponse>>> GetByUserId(Guid userId)
 366        {
 67            try
 368            {
 369                var reservations = await _service.GetByUserIdAsync(userId);
 70
 871                if (reservations.Any(e => !e.Success))
 172                {
 73                    // Si hay respuestas no exitosas, se construye una lista de respuestas de error
 574                    var errorResponse = reservations.Where(e => !e.Success).ToList();
 75                    // Se actualiza el mensaje de cada respuesta de error y se agregan los mensajes de error a la lista 
 176                    errorResponse.ForEach(response =>
 177                    {
 178                        response.Message = "Error occurred while retrieving reservation";
 179                        response.Errors.Add(response.Message);
 280                    });
 81
 82                    // Se devuelve un estado de error con las respuestas de error
 183                    return NotFound(errorResponse);
 84                }
 85
 186                return Ok(reservations);
 87            }
 188            catch (Exception)
 189            {
 90                // Maneja cualquier excepción inesperada
 191                var exception = new Exception("An unexpected error occurred while getting reservations.");
 192                _logger.LogError(exception, exception.Message);
 193                return StatusCode(500, HandleException(exception));
 94            }
 395        }
 96
 97        /// <summary>
 98        /// Obtiene reservaciones por ID de asiento.
 99        /// </summary>
 100        /// <param name="seatId">ID del asiento para el cual se obtendrán las reservaciones.</param>
 101        /// <returns>ActionResult con la colección de reservaciones correspondientes al asiento o un error interno.</ret
 102        [HttpGet("byseat/{seatId}")]
 103        public virtual async Task<ActionResult<IEnumerable<ReservationResponse>>> GetBySeatId(Guid seatId)
 3104        {
 105            try
 3106            {
 3107                var reservations = await _service.GetBySeatIdAsync(seatId);
 108
 8109                if (reservations.Any(e => !e.Success))
 1110                {
 111                    // Si hay respuestas no exitosas, se construye una lista de respuestas de error
 5112                    var errorResponse = reservations.Where(e => !e.Success).ToList();
 113                    // Se actualiza el mensaje de cada respuesta de error y se agregan los mensajes de error a la lista 
 1114                    errorResponse.ForEach(response =>
 1115                    {
 1116                        response.Message = "Error occurred while retrieving reservation";
 1117                        response.Errors.Add(response.Message);
 2118                    });
 119
 120                    // Se devuelve un estado de error con las respuestas de error
 1121                    return NotFound(errorResponse);
 122                }
 123
 1124                return Ok(reservations);
 125            }
 1126            catch (Exception)
 1127            {
 128                // Maneja cualquier excepción inesperada
 1129                var exception = new Exception("An unexpected error occurred while getting reservations.");
 1130                _logger.LogError(exception, exception.Message);
 1131                return StatusCode(500, HandleException(exception));
 132            }
 3133        }
 134    }
 135}