< Summary

Information
Class: CoWorkingApp.API.Infrastructure.Persistence.Repositories.ReservationRepository
Assembly: CoWorkingApp.API
File(s): H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.API\Infrastructure\Persistence\Repositories\ReservationRepository.cs
Line coverage
100%
Covered lines: 54
Uncovered lines: 0
Coverable lines: 54
Total lines: 129
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%
GetAllAsync()100%1100%
GetByIdAsync()100%1100%
GetByUserIdAsync()100%1100%
GetBySeatIdAsync()100%1100%
GetByDateAsync()100%1100%
GetByUserEmailAsync()100%1100%
GetBySeatNameAsync()100%1100%

File(s)

H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.API\Infrastructure\Persistence\Repositories\ReservationRepository.cs

#LineLine coverage
 1using CoWorkingApp.API.Infrastructure.UnitOfWorks;
 2using CoWorkingApp.Core.Application.Contracts.Repositories;
 3using CoWorkingApp.Core.Domain.Entities;
 4using Microsoft.EntityFrameworkCore;
 5
 6namespace CoWorkingApp.API.Infrastructure.Persistence.Repositories
 7{
 8    /// <summary>
 9    /// Implementación del repositorio para la entidad Reservation.
 10    /// </summary>
 11    public class ReservationRepository : RepositoryGeneric<Reservation>, IReservationRepository
 12    {
 13        /// <summary>
 14        /// Constructor de la clase ReservationRepository.
 15        /// </summary>
 16        /// <param name="unitOfWork">Unidad de trabajo que gestiona las transacciones de la base de datos.</param>
 7617        public ReservationRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { }
 18
 19        /// <summary>
 20        /// Obtiene todas las reservaciones de manera asincrónica, incluyendo información detallada del usuario y del as
 21        /// </summary>
 22        /// <returns>Una colección de todas las reservaciones con información detallada del usuario y del asiento asocia
 23        public override async Task<IEnumerable<Reservation>> GetAllAsync()
 224        {
 25            // Incluye información detallada del usuario y del asiento asociados a cada reserva
 226            return await _dbSet
 227                .Include(r => r.User) // Incluir información detallada del usuario asociado a la reserva
 228                .Include(r => r.Seat) // Incluir información detallada del asiento asociado a la reserva
 229                .AsNoTracking()
 230                .ToListAsync();
 231        }
 32
 33        /// <summary>
 34        /// Obtiene una reserva por su identificador de manera asincrónica, incluyendo información detallada del usuario
 35        /// </summary>
 36        /// <param name="id">El identificador único de la reserva.</param>
 37        /// <returns>La reserva con información detallada del usuario y del asiento asociados, o null si no se encuentra
 38        public override async Task<Reservation> GetByIdAsync(Guid id)
 239        {
 40            // Incluye información detallada del usuario y del asiento asociados a cada reserva
 241            return await _dbSet
 242                .Include(r => r.User) // Incluir información detallada del usuario asociado a la reserva
 243                .Include(r => r.Seat) // Incluir información detallada del asiento asociado a la reserva
 244                .FirstOrDefaultAsync(r => r.Id == id);
 245        }
 46
 47        /// <summary>
 48        /// Obtiene las reservas por ID de usuario de manera asincrónica.
 49        /// </summary>
 50        /// <param name="userId">ID del usuario.</param>
 51        /// <returns>Colección de reservas correspondientes al ID de usuario especificado.</returns>
 52        public async Task<IEnumerable<Reservation>> GetByUserIdAsync(Guid userId)
 253        {
 54            // Incluye información detallada del usuario y del asiento asociados a cada reserva
 255            return await _dbSet
 256                .Include(r => r.User) // Incluir información detallada del usuario asociado a la reserva
 257                .Include(r => r.Seat) // Incluir información detallada del asiento asociado a la reserva
 258                .Where(r => r.UserId == userId)
 259                .AsNoTracking()
 260                .ToListAsync();
 261        }
 62
 63        /// <summary>
 64        /// Obtiene las reservas por ID de plaza de manera asincrónica.
 65        /// </summary>
 66        /// <param name="seatId">ID de la plaza.</param>
 67        /// <returns>Colección de reservas correspondientes al ID de plaza especificado.</returns>
 68        public async Task<IEnumerable<Reservation>> GetBySeatIdAsync(Guid seatId)
 269        {
 70            // Incluye información detallada del usuario y del asiento asociados a cada reserva
 271            return await _dbSet
 272                .Include(r => r.User) // Incluir información detallada del usuario asociado a la reserva
 273                .Include(r => r.Seat) // Incluir información detallada del asiento asociado a la reserva
 274                .Where(r => r.SeatId == seatId)
 275                .AsNoTracking()
 276                .ToListAsync();
 277        }
 78
 79        /// <summary>
 80        /// Obtiene las reservas por fecha de manera asincrónica.
 81        /// </summary>
 82        /// <param name="date">Fecha de las reservas.</param>
 83        /// <returns>Colección de reservas correspondientes a la fecha especificada.</returns>
 84        public async Task<IEnumerable<Reservation>> GetByDateAsync(DateTime date)
 285        {
 86            // Incluye información detallada del usuario y del asiento asociados a cada reserva
 287            return await _dbSet
 288                .Include(r => r.User) // Incluir información detallada del usuario asociado a la reserva
 289                .Include(r => r.Seat) // Incluir información detallada del asiento asociado a la reserva
 290                .Where(r => r.Date == date)
 291                .AsNoTracking()
 292                .ToListAsync();
 293        }
 94
 95        /// <summary>
 96        /// Obtiene reservaciones por correo electrónico del usuario de manera asincrónica.
 97        /// </summary>
 98        /// <param name="email">Correo electrónico del usuario.</param>
 99        /// <returns>Una colección de reservaciones asociadas al usuario con el correo electrónico especificado.</return
 100        public async Task<IEnumerable<Reservation>> GetByUserEmailAsync(string email)
 2101        {
 102            // Incluye información detallada del usuario y del asiento asociados a cada reserva
 2103            return await _dbSet
 2104                .Include(r => r.User) // Incluir información detallada del usuario asociado a la reserva
 2105                .Include(r => r.Seat) // Incluir información detallada del asiento asociado a la reserva
 2106                .Where(r => r.User.Email.Equals(email))
 2107                .AsNoTracking()
 2108                .ToListAsync();
 2109        }
 110
 111        /// <summary>
 112        /// Obtiene una colección de reservaciones asociadas a un nombre de asiento específico de manera asincrónica, in
 113        /// </summary>
 114        /// <param name="seatName">El nombre del asiento del que se desean obtener las reservaciones.</param>
 115        /// <returns>Una colección de reservaciones asociadas al nombre de asiento especificado, incluyendo información 
 116        public async Task<IEnumerable<Reservation>> GetBySeatNameAsync(string seatName)
 2117        {
 118            // Incluye información detallada del usuario y del asiento asociados a cada reserva
 2119            return await _dbSet
 2120                .Include(r => r.User) // Incluir información detallada del usuario asociado a la reserva
 2121                .Include(r => r.Seat) // Incluir información detallada del asiento asociado a la reserva
 2122                .Where(r => r.Seat.Name.Equals(seatName))
 2123                .AsNoTracking()
 2124                .ToListAsync();
 2125        }
 126
 127        // Implementa otros métodos específicos para ReservationRepository
 128    }
 129}