示例#1
0
        public GetAllBeersResponse GetAllBeers(GetAllBeersRequest getAllBeersRequest)
        {
            _logger.Debug("Entering Get All Beers");

            var response = new GetAllBeersResponse()
            {
                BaseResponse = CreateBaseResponse(getAllBeersRequest.BaseRequest)
            };

            _logger.Debug("Base Response created");

            response.BaseResponse = VerifyBaseRequest(getAllBeersRequest.BaseRequest, response.BaseResponse);

            if (response.BaseResponse.ResponseStatus == ResponseStatus.Failure)
            {
                response.Beers = null;
                return(response);
            }

            var beers = _beerRepository.GetAllBeers();

            response.Beers = beers;

            return(response);
        }
示例#2
0
        public BeersResponse GetBeers()
        {
            var client = new BeerWithSoapServiceClient();

            var getAllBeersRequest = new GetAllBeersRequest
            {
                BaseRequest = new BaseRequest
                {
                    APIKey     = "ILoveBeer",
                    ClientCode = "TonyaZen",
                    RequestId  = Guid.NewGuid().ToString(),
                    Version    = "V1"
                }
            };

            try
            {
                var response = client.GetAllBeers(getAllBeersRequest);

                if (response.BaseResponse.ResponseStatus == ResponseStatus.Success)
                {
                    client.Close();

                    return(new BeersResponse
                    {
                        Success = true,
                        Beers = _mapper.MapBeers(response.Beers)
                    });
                }

                Logger.ErrorFormat("Get Beers failed for " +
                                   $"client: {getAllBeersRequest.BaseRequest.ClientCode}. " +
                                   $"RequestID: {getAllBeersRequest.BaseRequest.RequestId}. " +
                                   $"Error from Service: {response.BaseResponse.TechnicalErrorMessage}.");

                return(new BeersResponse
                {
                    Success = false,
                    Message = response.BaseResponse.DisplayErrorMessage,
                    Beers = new List <Beer>()
                });
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Get Beers failed for " +
                                   $"client: {getAllBeersRequest.BaseRequest.ClientCode}. " +
                                   $"RequestID: {getAllBeersRequest.BaseRequest.RequestId}. " +
                                   $"Exception: {ex}.");
                client.Abort();

                return(new BeersResponse
                {
                    Success = false,
                    Message = "We're sorry, there was a problem getting your beers. :(",
                    Beers = new List <Beer>()
                });
            }
        }
示例#3
0
        public ActionResult <ApiGetAllBeersViewModel> GetAllBeers([FromQuery] GetAllBeersRequest request)
        {
            var useCase = new GetAllBeersUseCase(_catalog);

            var presenter = new ApiGetAllBeersPresenters();

            useCase.Execute(request, presenter);

            var vm = presenter.ViewModel;

            return(vm.HttpCode == 204 ? NoContent() : (ActionResult)Ok(vm));
        }
示例#4
0
        public void ItShouldReturnAllTheBeers(int?page, int?perPage)
        {
            var request = new GetAllBeersRequest
            {
                Page    = page,
                PerPage = perPage
            };

            var getAllBeersUseCase = new GetAllBeers(_catalog);

            getAllBeersUseCase.Execute(request, this);

            Assert.Equal(2, Response.Beers.Count);
        }
        public void Execute(GetAllBeersRequest request, IGetAllBeersPresenter presenter)
        {
            var beers = _catalog.GetAllBeers();

            FilterService <BeerModel> .ApplyPaginationFilter(ref beers, request.Page ?? 1, request.PerPage ?? 50);

            if (request.CreatedAt != null)
            {
                FilterService <BeerModel> .ApplyDateFilters(ref beers, request.CreatedAt, nameof(BeerModel.CreatedAt));
            }
            if (request.LastUpdate != null)
            {
                FilterService <BeerModel> .ApplyDateFilters(ref beers, request.LastUpdate, nameof(BeerModel.LastUpdate));
            }
            if (request.Label != null)
            {
                FilterService <BeerModel> .ApplyStringFilters(ref beers, request.Label, nameof(BeerModel.Label));
            }
            if (request.Description != null)
            {
                FilterService <BeerModel> .ApplyStringFilters(ref beers, request.Description,
                                                              nameof(BeerModel.Description));
            }
            if (request.Stock != null)
            {
                FilterService <BeerModel> .ApplyNumberFilters(ref beers, request.Stock, nameof(BeerModel.Stock));
            }
            if (request.Sorts != null)
            {
                // FilterService<BeerModel>.ApplySortFilters(ref beers, request.Sorts);
                beers = beers;
            }
            else
            {
                beers = beers.OrderByDescending(b => b.CreatedAt.Value);
            }

            var count = beers.Count();
            var data  = beers.ToList();

            presenter.Present(new GetAllBeersResponse
            {
                Data    = data,
                Page    = request.Page ?? 1,
                PerPage = request.PerPage ?? 50,
                Total   = count
            });
        }
示例#6
0
        public ActionResult GetAllBeers([FromQuery] GetAllBeersRequest request)
        {
            var useCase = new GetAllBeers(_catalog);

            var presenter = new ApiGetAllBeersPresenter();

            useCase.Execute(request, presenter);

            var viewModel = presenter.ViewModel;

            if (viewModel.HttpCode == 200)
            {
                return(Ok(viewModel));
            }
            return(NoContent());
        }