예제 #1
0
        public async Task RunsApiTests_InvalidParams()
        {
            var options = new RunsOptions();

            var ex = Assert.ThrowsAsync <Exception>(async() =>
            {
                var result = await InvokeApi <RunsResult>(BuildUrl(ApiMethod), "POST", Serialize(options));
            });

            Assert.AreEqual("Request parameters missing or have incorrect format", ex.Message);
        }
예제 #2
0
        public async Task RunsApiTests_GetAllRuns()
        {
            var options = new RunsOptions
            {
                DepartureCityId   = 1,
                DestinationCityId = 12,
                DepartureDate     = new DateTime(2019, 10, 24)
            };
            var result = await InvokeApi <RunsResult>(BuildUrl(ApiMethod), "POST", Serialize(options));

            Assert.IsNotEmpty(result.Runs);
        }
예제 #3
0
        public async Task <Result <RunsResult> > Handle(RunsOptions options)
        {
            try
            {
                var runs = await _runsService.GetAvailableRuns(options.DepartureDate, options.DepartureCityId, options.DestinationCityId);

                var result = new RunsResult {
                    Runs = runs.Select(x => _mapper.Map <RunDto>(x))
                };
                return(Result.Ok(result));
            }
            catch (Exception ex)
            {
                return(Result.Fail <RunsResult>(HttpStatusCode.InternalServerError,
                                                $"Something went wrong. Please repeat the operation. {ex.Message}"));
            }
        }
예제 #4
0
        public async Task <IActionResult> GetAvailableRuns([FromBody] RunsOptions runsOptions)
        {
            if (runsOptions == null)
            {
                return(ErrorResult(HttpStatusCode.BadRequest, "Options can not be null."));
            }

            if (runsOptions.DestinationCityId == 0 || runsOptions.DepartureCityId == 0 ||
                runsOptions.DepartureDate < DateTime.Today)
            {
                return(ErrorResult(HttpStatusCode.BadRequest, "Request parameters missing or have incorrect format"));
            }

            var handler = new RunsHandler(_runsService, _mapper);
            var result  = await handler.Handle(runsOptions);

            if (result.IsFailure)
            {
                return(FromResult(result));
            }

            return(Ok(result.Value));
        }