public string AddToCart(string paramList)
        {
            //"CartError"
            //"LoginPrompt"
            //cartItem
            JavaScriptSerializer jsonObj = new JavaScriptSerializer();
            string[] parameters = paramList.Split(',');
            int itemId = -1;
            var category = "";
            var userID = -1;
            var status = false;
            CartItem cartItem = new CartItem();

            if (Session["UserID"] != null) //already logged in
            {
                if (Session["Role"].Equals("admin") || Session["Role"].Equals("member"))
                {
                    userID = (int)Session["UserID"];
                }
            }
            else
            {
                return jsonObj.Serialize(new CartItem { ItemCategory = "LoginPrompt" });
            }
            if (parameters.Length > 0 && parameters[0].Length > 0)
            {
                itemId = Convert.ToInt32(parameters[0]);
            }
            if (parameters.Length > 1)
            {
                category = parameters[1];
            }
            try
            {
                var cartDAL = new UserCartDAL(userID);
                cartItem.ItemID = itemId;
                cartItem.ItemCategory = category;
                status = cartDAL.AddToCart(cartItem);
                if (false == status)
                {
                    return jsonObj.Serialize(new CartItem { ItemCategory = "CartError" });
                }
            }
            catch (Exception)
            {

            }
            return (jsonObj.Serialize(cartItem));
        }
        public string AddToPayment(CartItem paymentItem)
        {
            //"CartError"
            //"LoginPrompt"
            //cartItem
            JavaScriptSerializer jsonObj = new JavaScriptSerializer();
            //string[] parameters = paramList.Split(',');
            //int itemId = -1;
            //var category = "";

            if (Session["UserID"] != null) //already logged in
            {
                if (Session["Role"].Equals("admin") || Session["Role"].Equals("member"))
                {
                    UserID = (int)Session["UserID"];
                }
            }
            else
            {
                return jsonObj.Serialize(new CartItem { ItemCategory = "LoginPrompt" });
            }
            //if (parameters.Length > 0 && parameters[0].Length > 0)
            //{
            //    itemId = Convert.ToInt32(parameters[0]);
            //}
            //if (parameters.Length > 1)
            //{
            //    category = parameters[1];
            //}
            try
            {
                var cartDAL = new UserCartDAL(UserID);
                //cartItem.ItemID = itemId;
                //cartItem.ItemCategory = category;
                var status = cartDAL.AddToPayment(paymentItem);
                if (false == status)
                {
                    // return jsonObj.Serialize(new CartItem { ItemCategory = "CartError" });
                }
            }
            catch (Exception)
            {

            }
            return (jsonObj.Serialize(paymentItem));
        }
        public string Update(string paramList)
        {
            string[] parameters = paramList.Split(',');
            int itemId = -1;
            var category = "";
            var noOfCopies = -1;
            var userID = -1;
            var status = false;
            JavaScriptSerializer jsonObj = new JavaScriptSerializer();
            var cartItem = new CartItem();
            //only assign item id, and category field

            if (Session["UserID"] != null) //already logged in
            {
                if (Session["Role"].Equals("admin") || Session["Role"].Equals("member"))
                {
                    userID = (int)Session["UserID"];
                }
            }
            else
            {
                return jsonObj.Serialize(new CartItem { ItemCategory = "LoginPrompt" });
            }
            if (parameters.Length > 0 && parameters[0].Length > 0)
            {
                itemId = Convert.ToInt32(parameters[0]);
            }
            //do not use if-else
            if (parameters.Length > 1)
            {
                category = parameters[1];
            }
            if (parameters.Length > 2)
            {
                noOfCopies = Convert.ToInt32(parameters[2]);
            }

            try
            {
                var cartDAL = new UserCartDAL(userID);
                cartItem.ItemID = itemId;
                cartItem.ItemCategory = category;
                cartItem.NoOfCopies = noOfCopies;
                status = cartDAL.UpdateCart(cartItem);
                if (false == status)
                {
                    return jsonObj.Serialize(new CartItem { ItemCategory = "CartError" });
                }
            }
            catch (Exception)
            {

            }
            return (jsonObj.Serialize(cartItem));
        }
        public string ProceedPayment(string paramList)
        {
            List<CartItem> cartItemList = new List<CartItem>();
            List<CartItem> userPaymentPool = new List<CartItem>();
            JavaScriptSerializer jsonObj = new JavaScriptSerializer();
            int TotalAmount = 0, DiscountAmount = 0, NetAmount = 0;

            if (null == UserID) UserID = -1;
            try
            {
                if (Session["UserID"] != null) //already logged in
                {
                    if (Session["Role"].Equals("admin") || Session["Role"].Equals("member"))
                    {
                        UserID = (int)Session["UserID"];
                    }
                }
                else
                {

                    return jsonObj.Serialize(userPaymentPool);
                    //return RedirectToAction("Login", "Account", new { ReturnToUrl = "/ProceedPayment/" });//RedirectToAction("Login","Account");
                }
                var userCartDAL = new UserCartDAL(UserID);
                string[] parameters = paramList.Split(',');
                int itemId = -1;
                for (var i = 0; i + 2 <= parameters.Length; i += 2)
                {
                    string category;
                    if (parameters[i].Length > 0)
                    {
                        itemId = Convert.ToInt32(parameters[i]);
                        if (itemId <= 0)
                        {
                            return jsonObj.Serialize(userPaymentPool);
                        }
                    }
                    else
                    {
                        return jsonObj.Serialize(userPaymentPool);
                    }
                    if (parameters[i + 1].Length > 1)
                    {
                        category = parameters[i + 1];
                    }
                    else
                    {
                        return jsonObj.Serialize(userPaymentPool);
                    }
                    //var bestPossibleCartItem = userCartDAL.getCartItemNoOfCopiesPossibleAndCostDiscountPossible(category, itemId);

                    var proceedCartItem = userCartDAL.GetCartItem(itemId, category);
                    if (proceedCartItem == null)
                    {
                        continue; //skip this item, cannot be added to purchase.
                    }
                    var noOfCopies = proceedCartItem.NoOfCopies;
                    var cost = proceedCartItem.Cost;
                    var paymentItem = new CartItem
                    {
                        UserID = proceedCartItem.UserID,
                        ItemID = itemId,
                        ItemCategory = category,
                        NoOfCopies = noOfCopies, //quantity required
                        Cost = noOfCopies * cost,//Total amount
                        Discount = proceedCartItem.Discount
                    };
                    TotalAmount += paymentItem.Cost;
                    DiscountAmount = (int)(TotalAmount * paymentItem.Discount / 100.0);
                    userPaymentPool.Add(paymentItem);
                    //cartItemList = userCartDAL.ProceedPayment(cartItem);

                }
                userCartDAL.ClearPaymentPool();
                foreach (CartItem paymentItem in userPaymentPool)
                {
                    AddToPayment(paymentItem);
                }
            }
            catch (Exception)
            {
                //return RedirectToAction("Index", "Home");
            }
            NetAmount = TotalAmount - DiscountAmount;

            Session["TotalAmount"] = TotalAmount;
            Session["NetAmount"] = NetAmount;
            Session["Discount"] = DiscountAmount;

            return jsonObj.Serialize(userPaymentPool);
        }
 public ActionResult Index()
 {
     if (null == UserID) UserID = -1;
     List<CartItem> cartItemList = new List<CartItem>();
     try
     {
         if (Session["UserID"] != null) //already logged in
         {
             if (Session["Role"].Equals("admin") || Session["Role"].Equals("member"))
             {
                 UserID = (int)Session["UserID"];
             }
         }
         else
         {
             //return
             return RedirectToAction("Login", "Account", new { ReturnToUrl = "/Cart/" });//RedirectToAction("Login","Account");
         }
         var userCartDAL = new UserCartDAL(UserID);
         cartItemList = userCartDAL.getCartItems();
     }
     catch (Exception)
     {
         return RedirectToAction("Index", "Home");
     }
     return View(new BankCart());
 }
        public string GetCart()
        {
            List<CartItem> cartItemList = new List<CartItem>();
            JavaScriptSerializer jsonObj = new JavaScriptSerializer();
            if (null == UserID) UserID = -1;
            try
            {
                if (Session["UserID"] != null) //already logged in
                {
                    if (Session["Role"].Equals("admin") || Session["Role"].Equals("member"))
                    {
                        UserID = (int)Session["UserID"];
                    }
                }

                else
                {
                    return jsonObj.Serialize(new CartItem { ItemCategory = "LoginPrompt" });
                }
                //else
                //{
                //    //return
                //    return jsonObj.Serialize(cartItemList);//RedirectToAction("Login","Account");
                //}
                var userCartDAL = new UserCartDAL(UserID);
                cartItemList = userCartDAL.getCartItems();
            }
            catch (Exception)
            {
                return jsonObj.Serialize(new CartItem { ItemCategory = "CartError" });
            }
            return jsonObj.Serialize(cartItemList);
        }
        public string BankPayment(string paramList)
        {
            string[] parameters = paramList.Split(',');
            JavaScriptSerializer jsonObj = new JavaScriptSerializer();
            try
            {
                if (Session["UserID"] != null) //already logged in
                {
                    if (Session["Role"].Equals("admin") || Session["Role"].Equals("member"))
                    {
                        UserID = (int)Session["UserID"];
                    }
                }
                else
                {
                    return jsonObj.Serialize("LoginPrompt");//RedirectToAction("Login","Account");
                }
                var userCartDAL = new UserCartDAL(UserID);

                var validateTrans = UserDAL.AuthenticateTransaction(UserID, parameters[0], parameters[1], parameters[2]);

                if (validateTrans)
                {
                    if (userCartDAL.SaveTransaction(parameters[1]))
                    {
                        return jsonObj.Serialize("success");
                    }
                }
            }
            catch (Exception)
            {
            }
            return jsonObj.Serialize("failure");
        }
        public ActionResult Index(BankCart model)
        {
            if (null == UserID) UserID = -1;
            List<CartItem> cartItemList = new List<CartItem>();
            try
            {
                if (Session["UserID"] != null) //already logged in
                {
                    if (Session["Role"].Equals("admin") || Session["Role"].Equals("member"))
                    {
                        UserID = (int)Session["UserID"];
                    }
                }
                else
                {
                    //return
                    return RedirectToAction("Login", "Account", new { ReturnToUrl = "/Cart/" });//RedirectToAction("Login","Account");
                }
                var userCartDAL = new UserCartDAL(UserID);

                var validateTrans = true;// UserDAL.AuthenticateTransaction(UserID, model.BankName, model.AccountNo, model.TransactionPassword);

                if (validateTrans)
                {
                    if (userCartDAL.SaveTransaction(model.AccountNo))
                    {
                        return RedirectToAction("Member", "Transaction");
                    }
                }
            }
            catch (Exception)
            {

            }
            ModelState.AddModelError("", "Incorrect bank details are entered.");
            return View(model);
        }