< Summary

Information
Class: CoWorkingApp.Core.Application.Services.ReservationService
Assembly: CoWorkingApp.Core
File(s): H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.Core\Application\Services\ReservationService.cs
Line coverage
100%
Covered lines: 38
Uncovered lines: 0
Coverable lines: 38
Total lines: 132
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%
GetByDateAsync()100%1100%
GetByUserIdAsync()100%1100%
GetBySeatIdAsync()100%1100%
UpdateProperties(...)100%1100%
IsValid(...)100%1100%

File(s)

H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.Core\Application\Services\ReservationService.cs

#LineLine coverage
 1using CoWorkingApp.Core.Application.Abstracts;
 2using CoWorkingApp.Core.Application.Contracts.Adapters;
 3using CoWorkingApp.Core.Application.Contracts.Repositories;
 4using CoWorkingApp.Core.Application.Contracts.Services;
 5using CoWorkingApp.Core.Domain.DTOs;
 6using CoWorkingApp.Core.Domain.Entities;
 7
 8namespace CoWorkingApp.Core.Application.Services
 9{
 10    /// <summary>
 11    /// Implementación concreta del servicio para la entidad Reservation.
 12    /// </summary>
 13    public class ReservationService : ServiceGeneric<IReservationRepository, Reservation, ReservationRequest, Reservatio
 14    {
 15        /// <summary>
 16        /// Constructor de la clase ReservationService.
 17        /// </summary>
 18        /// <param name="reservationRepository">El repositorio de reservas asociado al servicio.</param>
 15219        public ReservationService(IReservationRepository reservationRepository, IMapperAdapter mapper) : base(reservatio
 20
 21        // Implementación de métodos específicos de IReservationService
 22
 23        /// <summary>
 24        /// Obtiene las reservaciones realizadas en una fecha específica de manera asincrónica.
 25        /// </summary>
 26        /// <param name="date">La fecha para la cual se desean obtener las reservaciones.</param>
 27        /// <returns>Una colección de respuestas de reservación que incluyen información sobre las reservaciones realiza
 28        public async Task<IEnumerable<ReservationResponse>> GetByDateAsync(DateTime date)
 329        {
 30            try
 331            {
 32                // Obtiene las reservaciones por fecha del repositorio
 333                var reservations = await _repository.GetByDateAsync(date);
 34
 35                // Mapea las reservaciones a ReservationResponse y las convierte en una lista
 236                var response = _mapper.Map<IEnumerable<Reservation>, IEnumerable<ReservationResponse>>(reservations).ToL
 37
 38                // Marca todas las respuestas como exitosas
 339                response.ForEach(r => r.Success = true);
 40
 241                return response;
 42            }
 143            catch (Exception ex)
 144            {
 45                // Maneja cualquier excepción y devuelve una lista con una sola respuesta de error
 146                return new List<ReservationResponse> { HandleException(ex) };
 47            }
 348        }
 49
 50        /// <summary>
 51        /// Obtiene las reservaciones realizadas por un usuario específico de manera asincrónica.
 52        /// </summary>
 53        /// <param name="userId">El ID del usuario para el cual se desean obtener las reservaciones.</param>
 54        /// <returns>Una colección de respuestas de reservación que incluyen información sobre las reservaciones realiza
 55        public async Task<IEnumerable<ReservationResponse>> GetByUserIdAsync(Guid userId)
 356        {
 57            try
 358            {
 59                // Obtiene las reservaciones por ID de usuario del repositorio
 360                var reservations = await _repository.GetByUserIdAsync(userId);
 61
 62                // Mapea las reservaciones a ReservationResponse y las convierte en una lista
 263                var response = _mapper.Map<IEnumerable<Reservation>, IEnumerable<ReservationResponse>>(reservations).ToL
 64
 65                // Marca todas las respuestas como exitosas
 366                response.ForEach(r => r.Success = true);
 67
 268                return response;
 69            }
 170            catch (Exception ex)
 171            {
 72                // Maneja cualquier excepción y devuelve una lista con una sola respuesta de error
 173                return new List<ReservationResponse> { HandleException(ex) };
 74            }
 375        }
 76
 77        /// <summary>
 78        /// Obtiene las reservaciones asociadas a un asiento específico de manera asincrónica.
 79        /// </summary>
 80        /// <param name="seatId">El ID del asiento para el cual se desean obtener las reservaciones.</param>
 81        /// <returns>Una colección de respuestas de reservación que incluyen información sobre las reservaciones asociad
 82        public async Task<IEnumerable<ReservationResponse>> GetBySeatIdAsync(Guid seatId)
 383        {
 84            try
 385            {
 86                // Obtiene las reservaciones por ID de asiento del repositorio
 387                var reservations = await _repository.GetBySeatIdAsync(seatId);
 88
 89                // Mapea las reservaciones a ReservationResponse y las convierte en una lista
 290                var response = _mapper.Map<IEnumerable<Reservation>, IEnumerable<ReservationResponse>>(reservations).ToL
 91
 92                // Marca todas las respuestas como exitosas
 393                response.ForEach(r => r.Success = true);
 94
 295                return response;
 96            }
 197            catch (Exception ex)
 198            {
 99                // Maneja cualquier excepción y devuelve una lista con una sola respuesta de error
 1100                return new List<ReservationResponse> { HandleException(ex) };
 101            }
 3102        }
 103
 104        // Implementación de métodos abstractos de ServiceGeneric
 105
 106        /// <summary>
 107        /// ACTualiza las propiedades de una reserva existente con los valores de una nueva reserva.
 108        /// </summary>
 109        /// <param name="existingEntity">La reserva existente que se actualizará.</param>
 110        /// <param name="newEntity">La nueva reserva con los valores actualizados.</param>
 111        /// <returns>La reserva actualizada.</returns>
 112        protected override Reservation UpdateProperties(Reservation existingEntity, ReservationRequest newEntity)
 13113        {
 114            // ACTualizar las propiedades de la reserva existente con los valores de la nueva reserva
 13115            existingEntity.Date = newEntity.Date;
 13116            return existingEntity;
 13117        }
 118
 119        /// <summary>
 120        /// Verifica si una reserva es válida.
 121        /// </summary>
 122        /// <param name="entity">La reserva que se va a validar.</param>
 123        /// <returns>True si la reserva es válida, False en caso contrario.</returns>
 124        protected override bool IsValid(Reservation entity)
 21125        {
 126            // Verificar si la reserva es válida (la fecha debe ser igual o posterior a la fecha actual)
 21127            return entity.Date >= DateTime.Today;
 21128        }
 129
 130        // Implementa otros métodos específicos para ReservationService
 131    }
 132}