Example #1
0
        public async Task <GetBasketResponse> GetContents(Guid sessionId)
        {
            var policy = _pollyPolicyProvider.BasketStorePolicy();

            var result = await policy.ExecuteAndCaptureAsync(async() =>
            {
                var items = await _basketStore.GetAll(sessionId);
                return(items.Select(model => new BasketItem {
                    ProductId = model.ProductId.ToString(), Quantity = model.Quantity
                }).ToList());
            });

            if (result.Outcome == OutcomeType.Failure)
            {
                //LOG
                var response = new GetBasketResponse();
                response.AddError(result.FinalException.Message);
                return(response);
            }
            return(new GetBasketResponse {
                Items = result.Result
            });
        }