Exemple #1
0
        public async Task <IActionResult> Stats([FromBody] GetStatsQuery query)
        {
            var request = Utility.Utility.GetStatsRequestFromQuery(query);

            if (request == null || !request.Dates.Any())
            {
                return(BadRequest(new ErrorResponse(new ErrorModel
                {
                    Message = "Invalid request parameters"
                })));
            }

            Statistics stats = await _currExService.GetStatsAsync(request);

            string verdict = "No exchange rate information available for the given dates.";

            if (stats == null)
            {
                return(BadRequest(new ErrorResponse(new ErrorModel {
                    Message = "Sorry, unable to process your request at the moment." +
                              "Please contact your administrator."
                })));
            }
            else if (stats.Min == 0 && stats.Max == 0)
            {
                return(Ok(verdict));
            }

            verdict = $"A min rate of {stats.Min} on {stats.MinDate.ToShortDateString()} \n" +
                      $"A max rate of {stats.Max} on {stats.MaxDate.ToShortDateString()} \n" +
                      $"An average rate of {stats.Avg}";

            return(Ok(verdict));
        }
Exemple #2
0
 public async Task <List <StatsDto> > Handle(GetStatsQuery request, CancellationToken cancellationToken)
 => await(from v in _context.Visits
              where v.VisitDate > DateTime.UtcNow.AddDays(-request.Days)
          join p in _context.Places on v.PlaceId equals p.PlaceId into place
          from pp in place.DefaultIfEmpty()
          group v by new { pp.PlaceId, pp.Name, pp.Address, pp.Description }  into visits
          select new StatsDto(visits.Key.PlaceId, visits.Count(), visits.Key.Name, visits.Key.Address, visits.Key.Description))
 .ToListAsync();
        public async void Stats(int mutants, int humans, decimal expectedRatio)
        {
            GetStatsQuery StatsQuery = new GetStatsQuery();

            Stats statMocked = new Stats()
            {
                count_mutant_dna = mutants, count_human_dna = humans
            };

            _repository.Setup(x => x.GetStatsAsync()).ReturnsAsync(statMocked).Verifiable();

            var result = await _sut.Handle(StatsQuery, new System.Threading.CancellationToken());

            Assert.Equal(expectedRatio, result.ratio);
            _repository.VerifyAll();
        }
Exemple #4
0
        public async void CheckStatsException()
        {
            string        expected  = "500";
            GetStatsQuery getquery  = new GetStatsQuery();
            StatsView     statitics = new StatsView(1, 1);

            _mediator
            .Setup(m => m.Send(It.IsAny <GetStatsQuery>(), It.IsAny <CancellationToken>()))
            .Throws(new Exception()).Verifiable();

            var result = await _sut.GetStats();

            IStatusCodeActionResult statusCodeResult = result.Result as IStatusCodeActionResult;

            Assert.Equal(expected, statusCodeResult.StatusCode.ToString());
            _mediator.VerifyAll();
        }
Exemple #5
0
        public async void CheckStats()
        {
            string        expected  = "200";
            GetStatsQuery getquery  = new GetStatsQuery();
            StatsView     statitics = new StatsView(1, 1);

            _mediator
            .Setup(m => m.Send(It.IsAny <GetStatsQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(statitics).Verifiable();

            ActionResult <StatsView> actionResult = await _sut.GetStats();

            var result = actionResult.Result as OkObjectResult;

            Assert.Equal(expected, result.StatusCode.ToString());
            _mediator.VerifyAll();
        }
        /// <summary>
        /// Convert the statistics query into a statistics request object.
        /// Validate the parts of the query.
        /// </summary>
        /// <param name="query"></param>
        /// <returns>A valid statistics request object</returns>
        public static GetStatsRequest GetStatsRequestFromQuery(GetStatsQuery query)
        {
            GetStatsRequest result = null;

            var currencyLength = query.CurrencyTypes.Trim().Length;

            if (query != null && (currencyLength == 8) && (query.CurrencyTypes.Contains("->")))
            {
                if (query.Dates != null && query.Dates.Length >= 8)
                {
                    var allValidDates = ValidateDates(query.Dates.Split(',').ToList());

                    result = new GetStatsRequest();
                    result.CurrencyConversion = query.CurrencyTypes.ToUpperInvariant();
                    result.Dates = allValidDates;
                }
            }

            return(result);
        }