Пример #1
0
        public async Task <IActionResult> GetAlbumDetails(string albumId)
        {
            if (!int.TryParse(albumId, out var validAlbumId))
            {
                return(UnprocessableEntity());
            }

            var albumDetailsOption = await _albumsRepository.GetAlbumDetails(validAlbumId);

            if (!albumDetailsOption.TryUnwrap(out var albumDetails))
            {
                _logger.Warning($"Cannot find album details with album id: {albumId}.");
                return(NotFound());
            }

            var links = HypermediaLinkBuilder.ForAlbumDetailsDiscovery(Url, validAlbumId, albumDetails.UserId);

            return(Ok(
                       new AlbumResponse(
                           links,
                           new Dictionary <string, string> {
                { "id", albumDetails.Id.ToString() },
                { "userId", albumDetails.UserId.ToString() },
                { "title", albumDetails.Title }
            }
                           )
                       ));
        }