Exemplo n.º 1
0
        private static PurchaseProductResponse PurchaseProduct(PurchaseProductRequest request)
        {
            PurchaseProductResponse response = new PurchaseProductResponse();

            try
            {
                HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, _productPurchaseServiceUri);
                requestMessage.Headers.ExpectContinue = false;
                String jsonArguments = JsonConvert.SerializeObject(request);
                requestMessage.Content = new StringContent(jsonArguments, Encoding.UTF8, "application/json");
                HttpClient httpClient = new HttpClient();
                httpClient.Timeout = new TimeSpan(0, 10, 0);
                Task <HttpResponseMessage> httpRequest = httpClient.SendAsync(requestMessage,
                                                                              HttpCompletionOption.ResponseContentRead, CancellationToken.None);
                HttpResponseMessage httpResponse       = httpRequest.Result;
                HttpStatusCode      statusCode         = httpResponse.StatusCode;
                HttpContent         responseContent    = httpResponse.Content;
                Task <String>       stringContentsTask = responseContent.ReadAsStringAsync();
                String stringContents = stringContentsTask.Result;
                if (statusCode == HttpStatusCode.OK && responseContent != null)
                {
                    response = JsonConvert.DeserializeObject <PurchaseProductResponse>(stringContents);
                }
                else
                {
                    response.Exception = new Exception(stringContents);
                }
            }
            catch (Exception ex)
            {
                response.Exception = ex;
            }
            return(response);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            ReserveProductRequest reservationRequest = new ReserveProductRequest();

            reservationRequest.ProductId       = "13a35876-ccf1-468a-88b1-0acc04422243";
            reservationRequest.ProductQuantity = 10;
            ProductReservationResponse reservationResponse = ReserveProduct(reservationRequest);

            Console.WriteLine("Reservation response received.");
            Console.WriteLine(string.Concat("Reservation success: ", (reservationResponse.Exception == null)));
            if (reservationResponse.Exception == null)
            {
                Console.WriteLine("Reservation id: " + reservationResponse.ReservationId);

                PurchaseProductRequest purchaseRequest = new PurchaseProductRequest();
                purchaseRequest.ProductId     = reservationResponse.ProductId;
                purchaseRequest.ReservationId = reservationResponse.ReservationId;
                PurchaseProductResponse purchaseResponse = PurchaseProduct(purchaseRequest);
                if (purchaseResponse.Exception == null)
                {
                    Console.WriteLine("Purchase confirmation id: " + purchaseResponse.PurchaseId);
                }
                else
                {
                    Console.WriteLine(purchaseResponse.Exception.Message);
                }
            }
            else
            {
                Console.WriteLine(reservationResponse.Exception.Message);
            }

            Console.ReadKey();
        }
Exemplo n.º 3
0
        public PurchaseProductResponse PurchaseProduct(PurchaseProductRequest productPurchaseRequest)
        {
            PurchaseProductResponse purchaseProductResponse = new PurchaseProductResponse();

            try
            {
                if (_messageRepository.IsUniqueRequest(productPurchaseRequest.CorrelationId))
                {
                    Product product = _productRepository.FindBy(Guid.Parse(productPurchaseRequest.ProductId));
                    if (product != null)
                    {
                        ProductPurchase productPurchase = null;
                        if (product.ReservationIdValid(Guid.Parse(productPurchaseRequest.ReservationId)))
                        {
                            productPurchase = product.ConfirmPurchaseWith(Guid.Parse(productPurchaseRequest.ReservationId));
                            _productRepository.Save(product);
                            purchaseProductResponse.ProductId       = productPurchase.Product.ID.ToString();
                            purchaseProductResponse.PurchaseId      = productPurchase.Id.ToString();
                            purchaseProductResponse.ProductQuantity = productPurchase.ProductQuantity;
                            purchaseProductResponse.ProductName     = productPurchase.Product.Name;
                        }
                        else
                        {
                            throw new ResourceNotFoundException(string.Concat("Invalid or expired reservation id: ", productPurchaseRequest.ReservationId));
                        }
                        _messageRepository.SaveResponse <PurchaseProductResponse>(productPurchaseRequest.CorrelationId, purchaseProductResponse);
                    }
                    else
                    {
                        throw new ResourceNotFoundException(string.Concat("No product with id ", productPurchaseRequest.ProductId, " was found."));
                    }
                }
                else
                {
                    purchaseProductResponse = _messageRepository.RetrieveResponseFor <PurchaseProductResponse>(productPurchaseRequest.CorrelationId);
                }
            }
            catch (Exception ex)
            {
                purchaseProductResponse.Exception = ex;
            }
            return(purchaseProductResponse);
        }