Example #1
0
        public void GetPriceWithOffer()
        {
            var itemOne = new Item {
                BarCodeId = 111
            };                                         //Apple barcode
            var itemTwo = new Item {
                BarCodeId = 222
            };                                         //Orange barcode
            var items = new List <Item> {
                itemOne, itemTwo
            };
            var priceCalculationResource = new PriceCalculationResource {
                Items = items
            };
            var content = JsonConvert.SerializeObject(priceCalculationResource);

            byte[] byteArray = Encoding.UTF8.GetBytes(content);

            HttpWebResponse response = null;

            var theRequest = (HttpWebRequest)WebRequest.Create("http://localhost:27387/api/getprice/Offer");

            theRequest.ContentType   = "application/Json";
            theRequest.Method        = WebRequestMethods.Http.Post;
            theRequest.ContentLength = content.Length;

            var requestStream = theRequest.GetRequestStream();

            requestStream.Write(byteArray, 0, byteArray.Length);
            requestStream.Close();

            response = (HttpWebResponse)theRequest.GetResponse();

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
        }
        /// <summary>
        /// CalculatePrice method will call the mappers to get the total price includes in the status data contract
        /// </summary>
        /// <param name="priceCalculationResource"> contains the list of items</param>
        /// <param name="calculateOffer">default to calculate the price depends on the offer</param>
        /// <example>[ 111, 111, 222, 111 ] </example> 111 represnt apple barcode, 222 represent orange barcode for example
        /// <returns>PriceCalculationStatusResource</returns>
        public PriceCalculationStatusResource CalculatePrice(PriceCalculationResource priceCalculationResource, bool calculateOffer = false)
        {
            var priceCalculationStatusResource = new PriceCalculationStatusResource();

            //Validate resource
            if (!ValidateResource(priceCalculationResource))
            {
                return(priceCalculationStatusResource);
            }
            try
            {
                //Call mapper to get total price
                var priceCalculationMapper = new PriceCalculationMapper();
                if (calculateOffer)
                {
                    priceCalculationStatusResource = priceCalculationMapper.GetPriceWithOffer(priceCalculationResource.Items);
                }
                else
                {
                    priceCalculationStatusResource = priceCalculationMapper.GetPrice(priceCalculationResource.Items);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("Error in calculating price in PriceCalculationManager.CalculatePrice method : {0}", ex.Message));
            }

            return(priceCalculationStatusResource);
        }
        public void GetPricewithOffer()
        {
            var itemApple1 = new Item {
                BarCodeId = 111
            };                                             //Apple barcode
            var itemApple2 = new Item {
                BarCodeId = 111
            };                                             //Apple barcode
            var itemApple3 = new Item {
                BarCodeId = 111
            };                                             //Apple barcode
            var itemApple4 = new Item {
                BarCodeId = 111
            };                                             //Apple barcode
            var itemApple5 = new Item {
                BarCodeId = 111
            };                                             //Apple barcode
            var itemOrange1 = new Item {
                BarCodeId = 222
            };                                              //Orange barcode
            var itemOrange2 = new Item {
                BarCodeId = 222
            };                                              //Orange barcode
            var itemOrange3 = new Item {
                BarCodeId = 222
            };                                              //Orange barcode
            var itemOrange4 = new Item {
                BarCodeId = 222
            };                                              //Orange barcode

            var items = new List <Item> {
                itemApple1, itemApple2, itemApple3, itemApple4, itemApple5, itemOrange1, itemOrange2,
                itemOrange3, itemOrange4
            };
            var priceCalculationResource = new PriceCalculationResource {
                Items = items
            };

            var manager = new PriceCalculationManager();
            var result  = manager.CalculatePrice(priceCalculationResource);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.TotalPrice.ToString() == "2.3");
        }
Example #4
0
        public Task <HttpResponseMessage> GetPriceOffer(PriceCalculationResource priceCalculationResource)
        {
            return(this.TryWork(async() =>
            {
                try
                {
                    //call PriceCalculationManager to calculate price of the passed data contract
                    var priceCalculationManager = new PriceCalculationManager();
                    var priceCalculationStatusResource = priceCalculationManager.CalculatePrice(priceCalculationResource, true);

                    return Request.CreateResponse(HttpStatusCode.OK, priceCalculationStatusResource);
                }
                catch (Exception ex)
                {
                    return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, ex);
                }
            }
                                ));
        }
        public void GetPrice()
        {
            var itemOne = new Item {
                BarCodeId = 111
            };                                          //Apple barcode
            var itemTwo = new Item {
                BarCodeId = 222
            };                                          //Orange barcode
            var items = new List <Item> {
                itemOne, itemTwo
            };
            var priceCalculationResource = new PriceCalculationResource {
                Items = items
            };

            var manager = new PriceCalculationManager();
            var result  = manager.CalculatePrice(priceCalculationResource);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.TotalPrice == "0.85");
        }
        /// <summary>
        /// ValidateResource to validate the request body object
        /// </summary>
        /// <param name="priceCalculationResource"></param>
        /// <returns>bool</returns>
        private static bool ValidateResource(PriceCalculationResource priceCalculationResource)
        {
            var valid = priceCalculationResource != null && priceCalculationResource.Items != null;

            return(valid);
        }