public decimal CalculateCharge(Order order)
        {
            decimal grandTotal = 0.0M;

            List <Discount> discountList = Discount.All;

            Dictionary <string, int> orderItems = new Dictionary <string, int>();

            orderItems.Clear();

            foreach (SKU sku in SKU.All)
            {
                if (order.LineItems.Any(x => x.ToString().Equals(sku.ID)))
                {
                    int count = order.LineItems.Where(x => x.ToString().Equals(sku.ID)).Count();
                    orderItems.Add(sku.ID, count);
                }
            }

            foreach (Discount discount in Discount.All)
            {
                decimal discountPrice;
                orderItems = ApplyDiscount(orderItems, discount, out discountPrice);
                grandTotal = grandTotal + discountPrice;
            }

            foreach (var item in orderItems)
            {
                grandTotal = grandTotal + (SKU.GetSKUPriceBasedOnId(item.Key) * item.Value);
            }

            return(grandTotal);
        }