Пример #1
0
        public async Task <Rental> GetRentalAsync(Guid rentalId, CancellationToken cancellationToken = default)
        {
            if (rentalId == Guid.Empty)
            {
                throw new ArgumentNullException(nameof(rentalId));
            }

            var dtoRental = await rentalRepository.GetAsync(rentalId, cancellationToken);

            var dtoItemRentalDetails = await itemRentalDetailsRepository.GetAsync(dtoRental.ItemRentalDetailsId, cancellationToken);

            var dtoItem = itemRepository.GetAsync(dtoItemRentalDetails.ItemId, cancellationToken);
            var dtoUser = userRepository.GetAsync(dtoRental.UserId, cancellationToken);

            if (dtoRental == null)
            {
                throw new NullReferenceException(nameof(dtoRental));
            }

            var rental            = dtoRental.ConvertDtoRentalToRental();
            var user              = UserMapping.ConvertDtoUser(await dtoUser);
            var itemRentalDetails = ItemMapping.ConvertItemRentalDetails(dtoItemRentalDetails, await dtoItem);

            rental.User = user;
            rental.ItemRentalDetails = itemRentalDetails;

            return(rental);
        }