public async Task <IActionResult> FindAll([FromQuery] DecklistBrowserQueryParametersDTO queryParams) { if (!_decklistBrowserQueryParamsValidator.IsValid(queryParams)) { return(BadRequest("Invalid params. Please report it to administrator.")); } DateTime?statisticsFrom = null; DateTime?statisticsTo = null; if (!string.IsNullOrEmpty(queryParams.StatisticsFromDate)) { statisticsFrom = DateTime .ParseExact( queryParams.StatisticsFromDate, DateFormat.yyyy_MM_dd, CultureInfo.InvariantCulture); } if (!string.IsNullOrEmpty(queryParams.StatisticsToDate)) { statisticsTo = DateTime .ParseExact( queryParams.StatisticsToDate, DateFormat.yyyy_MM_dd, CultureInfo.InvariantCulture); } var decklists = await _decklistService.FindAll( minNumberOfGames : queryParams.MinNumberOfGames, banlistId : queryParams.BanlistId, archetypeName : queryParams.ArchetypeName, statisticsFrom : statisticsFrom, statisticsTo : statisticsTo, orderByDescendingByNumberOfGames : queryParams.OrderByDescendingByNumberOfGames, wantedCardsInDeck : queryParams.WantedCardsInDeck); int numberOfResultsPerPage = _numberOfResultsHelper.GetNumberOfResultsPerPage(queryParams.NumberOfResults); var numberOfPages = Convert.ToInt32( Math.Ceiling( ((double)(decklists.Count()) / (double)(numberOfResultsPerPage)) ) ); var decklistsToActualPage = decklists .Skip(numberOfResultsPerPage * (queryParams.PageNumber - 1)) .Take(numberOfResultsPerPage) .ToList(); var decklistDtos = _decklistToDtoConverter.Convert( decklistsToActualPage, statisticsFrom, statisticsTo); return(new JsonResult(new DecklistBrowserResultsDTO(numberOfPages, decklistDtos))); }
public void IsValid_InvalidParamOrParams_ReturnsFalse( string archetypeName, int banlistId, int minNumberOfGames, int pageNumber, string statisticsFromDate, string statisticsToDate, int numberOfResults = -1) { var dto = new DecklistBrowserQueryParametersDTO() { ArchetypeName = archetypeName, BanlistId = banlistId, MinNumberOfGames = minNumberOfGames, PageNumber = pageNumber, StatisticsFromDate = statisticsFromDate, StatisticsToDate = statisticsToDate }; Assert.IsFalse(_validator.IsValid(dto)); }