Beispiel #1
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();
        }
Beispiel #2
0
        //public ReservationController(IProductService productService)
        //{
        //    if (productService == null)
        //    {
        //        throw new ArgumentException("IProductService");
        //    }
        //    _productService = productService;
        //}

        //public HttpResponseMessage Post(ReserveProductRequest reserveProductRequest)
        //{
        //    ServiceResponseBase response = _productService.ReserveProduct(reserveProductRequest);
        //    return Request.BuildResponse(response);
        //}

        public HttpResponseMessage Post()
        {
            ReserveProductRequest reservationRequest = new ReserveProductRequest
            {
                ProductId       = "13a35876 - ccf1 - 468a - 88b1 - 0acc04422243",
                ProductQuantity = 10
            };

            ServiceResponseBase response = (ServiceResponseBase)_productService.ReserveProduct(reservationRequest);

            return(Request.BuildResponse(response));
        }
Beispiel #3
0
        private static ProductReservationResponse ReserveProduct(ReserveProductRequest request)
        {
            ProductReservationResponse response = new ProductReservationResponse();

            try
            {
                HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, _productReservationServiceUri);
                string             jsonArguments  = JsonConvert.SerializeObject(request);
                HttpClient         httpClient     = new HttpClient();

                requestMessage.Headers.ExpectContinue = false;
                requestMessage.Content = new StringContent(jsonArguments, Encoding.UTF8, "application/json");

                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 <ProductReservationResponse>(stringContents);
                }
                else
                {
                    response.Exception = new Exception(stringContents);
                }
            }
            catch (Exception ex)
            {
                response.Exception = ex;
            }

            return(response);
        }
Beispiel #4
0
        public ProductReservationResponse ReserveProduct(ReserveProductRequest productReservationRequest)
        {
            ProductReservationResponse reserveProductResponse = new ProductReservationResponse();

            try
            {
                Product product = _productRepository.FindBy(Guid.Parse(productReservationRequest.ProductId));
                if (product != null)
                {
                    ProductReservation productReservation = null;
                    if (product.CanReserveProduct(productReservationRequest.ProductQuantity))
                    {
                        productReservation = product.Reserve(productReservationRequest.ProductQuantity);
                        _productRepository.Save(product);
                        reserveProductResponse.ProductId       = productReservation.Product.ID.ToString();
                        reserveProductResponse.Expiration      = productReservation.Expiry;
                        reserveProductResponse.ProductName     = productReservation.Product.Name;
                        reserveProductResponse.ProductQuantity = productReservation.Quantity;
                        reserveProductResponse.ReservationId   = productReservation.Id.ToString();
                    }
                    else
                    {
                        int availableAllocation = product.Available();
                        reserveProductResponse.Exception = new LimitedAvailabilityException(string.Concat("There are only & quot;, availableAllocation, &quot; pieces of this product left."));
                    }
                }
                else
                {
                    throw new ResourceNotFoundException(string.Concat(" No product with id ", productReservationRequest.ProductId, ", was found."));
                }
            }
            catch (Exception ex)
            {
                reserveProductResponse.Exception = ex;
            }
            return(reserveProductResponse);
        }
        public HttpResponseMessage Post(ReserveProductRequest reserveProductRequest)
        {
            ServiceResponseBase response = _productService.ReserveProduct(reserveProductRequest);

            return(Request.BuildResponse(response));
        }