Ejemplo n.º 1
0
 /// <inheritdoc />
 public bool IsValid(BanlistBrowserQueryParams queryParams)
 {
     return(_isValidPageNumber(queryParams) &&
            _isValidNumberOfResults(queryParams) &&
            _isValidMinNumberOfGames(queryParams) &&
            _isValidStatisticsDateFrom(queryParams) &&
            _isValisStatisticsToDate(queryParams) &&
            _isValidFormatOrName(queryParams));
 }
        public async Task <IActionResult> FindAll([FromQuery] BanlistBrowserQueryParams queryParams)
        {
            if (!_validator.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 banlists = await _banlistService
                           .FindAllQuery(
                minNumberOfGames : queryParams.MinNumberOfGames,
                formatOrName : queryParams.FormatOrName,
                statisticsFromDate : statisticsFrom,
                statisticsToDate : statisticsTo
                );

            int numberOfResultsPerPage = _numberOfResultsHelper.GetNumberOfResultsPerPage(queryParams.NumberOfResults);
            var numberOfPages          = Convert.ToInt32(
                Math.Ceiling(
                    ((double)(banlists.Count()) / (double)(numberOfResultsPerPage))
                    )
                );

            var banlistsToActualPage = banlists
                                       .Skip(numberOfResultsPerPage * (queryParams.PageNumber - 1))
                                       .Take(numberOfResultsPerPage)
                                       .ToList();

            var dtos = _banlistToDtoConverter
                       .Convert(banlistsToActualPage, statisticsFrom, statisticsTo);

            return(Ok(new BanlistBrowserResultsDTO(numberOfPages, dtos)));
        }
Ejemplo n.º 3
0
        public void IsValid_InvaldParams_ReturnsFalse(int pageNumber, int minNumberOfGames, int numberOfResults,
                                                      string statisticsFromDate, string statisticsToDate, string formatOrName)
        {
            _dateValidatorMock
            .Setup(x => x.IsValidFormat(It.IsAny <string>(), DateFormat.yyyy_MM_dd))
            .Returns(false);
            var dto = new BanlistBrowserQueryParams()
            {
                PageNumber         = pageNumber,
                MinNumberOfGames   = minNumberOfGames,
                NumberOfResults    = numberOfResults,
                StatisticsFromDate = statisticsFromDate,
                StatisticsToDate   = statisticsToDate,
                FormatOrName       = formatOrName
            };

            Assert.IsFalse(_validator.IsValid(dto));
        }
Ejemplo n.º 4
0
 private bool _isValidMinNumberOfGames(BanlistBrowserQueryParams queryParams)
 {
     return(queryParams.MinNumberOfGames > 0);
 }
Ejemplo n.º 5
0
 private bool _isValidNumberOfResults(BanlistBrowserQueryParams queryParams)
 {
     return(queryParams.NumberOfResults > 0 || queryParams.NumberOfResults == -1);
 }
Ejemplo n.º 6
0
 private bool _isValidPageNumber(BanlistBrowserQueryParams queryParams)
 {
     return(queryParams.PageNumber > 0);
 }
Ejemplo n.º 7
0
 private bool _isValidStatisticsDateFrom(BanlistBrowserQueryParams queryParams)
 {
     return(queryParams.StatisticsFromDate == "" ||
            _dateValidator.IsValidFormat(queryParams.StatisticsFromDate, DateFormat.yyyy_MM_dd));
 }
Ejemplo n.º 8
0
 private bool _isValidFormatOrName(BanlistBrowserQueryParams queryParams)
 {
     return(queryParams.FormatOrName != null);
 }