public async Task <Result <GameDetailsResponse> > GetGameDetails(int gameId) { if (gameId <= 0) { return(Result.Failure <GameDetailsResponse>($"{nameof(gameId)} is invalid.")); } var detailsResult = await _apiClient.SendGameDetailsRequest(new List <int> { gameId }); if (detailsResult.IsFailure) { return(Result.Failure <GameDetailsResponse>($"Unable to retrieve game details - {detailsResult.Error}")); } var details = detailsResult.Value.Item.FirstOrDefault(); var response = new GameDetailsResponse { Id = details.Id, Developer = string.Join(", ", details.Links.Where(l => l.Type.ToLower() == _configuration.DeveloperLinkType.ToLower()).Select(l => l.Value)), GameCategory = GameCategoryReference.BoardGame, Genre = string.Join(", ", details.Links.Where(l => l.Type.ToLower() == _configuration.GenreLinkType.ToLower()).Select(l => l.Value)), ImageUrl = details.Image, Publisher = string.Join(", ", details.Links.Where(l => l.Type.ToLower() == _configuration.PublisherLinkType.ToLower()).Select(l => l.Value)), Title = details.Name.Value, YearReleasedOn = details.YearPublished.Value }; return(Result.Success(response)); }
public async Task <Result <GameDetailsResponse> > GetGameDetails(int gameId) { if (gameId <= 0) { return(Result.Failure <GameDetailsResponse>($"{nameof(gameId)} is invalid.")); } var detailsResult = await _apiClient.SendGameDetailsRequest(gameId); if (detailsResult.IsFailure) { return(Result.Failure <GameDetailsResponse>($"Unable to retrieve game details - {detailsResult.Error}")); } var details = detailsResult.Value; var hasReleaseDate = DateTimeOffset.TryParse(details.Results.OriginalReleaseDate, out var releaseDate); var response = new GameDetailsResponse { Id = details.Results.Id, Developer = string.Join(", ", details.Results.Developers.Select(g => g.Name)), GameCategory = GameCategoryReference.VideoGame, Genre = string.Join(", ", details.Results.Genres.Select(g => g.Name)), ImageUrl = details.Results.Image.OriginalUrl, Title = details.Results.Name, YearReleasedOn = hasReleaseDate ? releaseDate.Year : details.Results.ExpectedReleaseYear ?? DateTimeOffset.UtcNow.Year }; return(Result.Success(response)); }