public IActionResult GetItemPrice(List <Item> itemList = null)
        {
            try
            {
                double finalPrice            = 0;
                PriceStrategyContext context = null;

                if (itemList != null && itemList.Count > 0)
                {
                    context    = new PriceStrategyContext(itemList);
                    finalPrice = context.GetCheckoutPrice();
                    return(Ok(finalPrice));
                }
                else
                {
                    _logger.LogError($"Invalid ItemList : {itemList} while Fetching PriceAmount");
                    return(BadRequest($"Invalid ItemList : {itemList} while Fetching PriceAmount"));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Internal Server Error in Fetching PriceAmount : {ex}");
                return(StatusCode(StatusCodes.Status500InternalServerError, "Internal server Error"));
            }
        }
        public IActionResult Index()
        {
            double finalPrice            = 0;
            PriceStrategyContext context = null;
            List <Item>          items   = new List <Item>();

            //<! Inline Block Testing!>
            ////Incase you want to run the code inline and please do uncomment the specific scenario to check the
            ////Result for different Scenario's
            ////Uncomment Scenarios to test the inline logic for Specific scenarios

            //Scenaria A
            items = new List <Item>();
            items.Add(new Item()
            {
                ItemID = "A", UnitPrice = 50, OrderItems = 1
            });
            items.Add(new Item()
            {
                ItemID = "B", UnitPrice = 30, OrderItems = 1
            });
            items.Add(new Item()
            {
                ItemID = "C", UnitPrice = 20, OrderItems = 1
            });
            context           = new PriceStrategyContext(items);
            finalPrice        = context.GetCheckoutPrice();
            ViewBag.ScenariaA = finalPrice;
            //// finalprice = Total = 100


            //Scenaria B
            items = new List <Item>();
            items.Add(new Item()
            {
                ItemID = "A", UnitPrice = 50, OrderItems = 5
            });
            items.Add(new Item()
            {
                ItemID = "B", UnitPrice = 30, OrderItems = 5
            });
            items.Add(new Item()
            {
                ItemID = "C", UnitPrice = 20, OrderItems = 1
            });
            context           = new PriceStrategyContext(items);
            finalPrice        = context.GetCheckoutPrice();
            ViewBag.ScenariaB = finalPrice;
            //// finalprice = Total = 370


            //Scenaria C
            items = new List <Item>();
            items.Add(new Item()
            {
                ItemID = "A", UnitPrice = 50, OrderItems = 3
            });
            items.Add(new Item()
            {
                ItemID = "B", UnitPrice = 30, OrderItems = 5
            });
            items.Add(new Item()
            {
                ItemID = "C", UnitPrice = 20, OrderItems = 1
            });
            items.Add(new Item()
            {
                ItemID = "D", UnitPrice = 15, OrderItems = 1
            });
            context           = new PriceStrategyContext(items);
            finalPrice        = context.GetCheckoutPrice();
            ViewBag.ScenariaC = finalPrice;
            // finalprice = Total = 280


            ////Custom Use Case -  All in one Use Case
            items = new List <Item>();
            items.Add(new Item()
            {
                ItemID = "A", UnitPrice = 50, OrderItems = 3
            });
            items.Add(new Item()
            {
                ItemID = "B", UnitPrice = 30, OrderItems = 2
            });
            items.Add(new Item()
            {
                ItemID = "C", UnitPrice = 20, OrderItems = 1
            });
            items.Add(new Item()
            {
                ItemID = "D", UnitPrice = 15, OrderItems = 1
            });
            context            = new PriceStrategyContext(items);
            finalPrice         = context.GetCheckoutPrice();
            ViewBag.Customcase = finalPrice;
            //// finalprice = Total = 205


            ////Calling the Business logic for the Price Strategy
            //context = new PriceStrategyContext(items);
            //finalPrice = context.GetCheckoutPrice();

            return(View(ViewBag));
            //<! End - Inline Block Testing!>
        }