// Helper method to simplify shopping cart calls
        //public static ShoppingCartActions GetCart(Controller controller)
        //{
        //    return GetCart(controller.HttpContext);
        //}
        public void MigrateCart(string userName)
        {
            CartApplicationService cartApplicationService = new CartApplicationService();

               cartApplicationService.MigrateCart(userName, ShoppingCartId);
               HttpContext.Current.Session[ShoppingCartItemsessionKey] = userName;
        }
        // GET: /Carts/Details/5
        public ActionResult AddNewProductCartDetailLineItem(FormCollection postedFormData)
        {
            // Retrieve the album from the database
              //  var addedAlbum = storeDB.Albums.Single(album => album.AlbumId == id);

            // Add it to the shopping cart
            CartApplicationService cartApplicationService = new CartApplicationService();
            CartViewModel cartViewModel = new CartViewModel();
            var Cart = ShoppingCartActions.GetCart();
            double subtotal = 99;
            cartViewModel.Cart.CartID = Cart.ShoppingCartId;

            cartViewModel.Cart.ProductID = Convert.ToInt32(postedFormData["ProductID"]);
            cartViewModel.Cart.ProductName = Convert.ToString(postedFormData["ProductName"]);

               // if (HiLToysBusinessServices.Utilities.IsNumeric((postedFormData["Quantity"])) == true)
                cartViewModel.Cart.Quantity = Convert.ToInt32(postedFormData["Quantity"]);

               // if (HiLToysBusinessServices.Utilities.ToDecimal((postedFormData["UnitPrice"])) == true)
                cartViewModel.Cart.UnitPrice = Convert.ToDouble(postedFormData["UnitPrice"]);
               // if (HiLToysBusinessServices.Utilities.ToDouble((postedFormData["SubTotal"])) == true)
                //cartViewModel.Cart.SubTotal = Convert.ToDouble(postedFormData["SubTotal"]);
                cartViewModel.Cart.SubTotal = subtotal;
            cartViewModel = cartApplicationService.AddCartDetailLineItem(cartViewModel);
            Session["payment_amt"] = cartViewModel.Cart.CartTotal;
            return Json(new
            {
                ReturnStatus = cartViewModel.ReturnStatus,
                viewModel = cartViewModel,
                //ValidationErrors = cartViewModel.ValidationErrors,
                //MessageBoxView = Helpers.MvcHelpers.RenderPartialView(this, "_MessageBox", cartViewModel),
            });
        }
        public ActionResult CartSummary()
        {
            List<HiLToysDataModel.Cart> products = new List<HiLToysDataModel.Cart>();
            CartApplicationService cartApplicationService = new CartApplicationService();
             CartViewModel cartViewModel = new CartViewModel();
             var Cart = ShoppingCartActions.GetCart();

             cartViewModel.Cart.CartID = Cart.ShoppingCartId;
             cartViewModel = cartApplicationService.GetCarts(Cart.ShoppingCartId);

            if (cartViewModel.Cart.CartTotal < 1)
             Session["payment_amt"] = null;
             else
             Session["payment_amt"] = cartViewModel.Cart.CartTotal;
            cartViewModel = cartApplicationService.GetCartCount(cartViewModel);
              ViewData["CartCount"] = cartViewModel.Cart.Count;

             return PartialView("CartSummary");
        }
    public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg)
    {
        if (bSandbox)
            {
                pEndPointURL = pEndPointURL_SB;
                host = host_SB;
            }

            string returnURL = "http://ethiohilecomvctoysapp2017.apphb.com/Checkout/CheckoutReview";
            string cancelURL = "http://ethiohilecomvctoysapp2017.apphb.com/Checkout/CheckoutCancel";

            NVPCodec encoder = new NVPCodec();
            encoder["METHOD"] = "SetExpressCheckout";
            encoder["RETURNURL"] = returnURL;
            encoder["CANCELURL"] = cancelURL;
            encoder["BRANDNAME"] = "HiLEco MVC Toys Sample Application 2015";
            encoder["PAYMENTREQUEST_0_AMT"] = amt;
            encoder["PAYMENTREQUEST_0_ITEMAMT"] = amt;
            encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";
            encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "USD";

            // Get the Shopping Cart Products
            CartApplicationService cartApplicationService = new CartApplicationService();

            var Cart = ShoppingCartActions.GetCart();
            // string CartID = Cart.GetCartId(this.HttpContext);
            string CartID = "";
            CartID = Cart.ShoppingCartId;

            CartViewModel cartViewModel = new CartViewModel();
            cartViewModel=cartApplicationService.GetCarts(CartID);
            int i = 0;
            foreach (var item in cartViewModel.Carts)
            {
                if (item.CartID != "")
                {

                    encoder["L_PAYMENTREQUEST_0_NAME" + i] = item.ProductName.ToString();
                    encoder["L_PAYMENTREQUEST_0_AMT" + i] = item.UnitPrice.ToString();
                    encoder["L_PAYMENTREQUEST_0_QTY" + i] = item.Quantity.ToString();

                }
                i++;
            }
            string pStrrequestforNvp = encoder.Encode();
            string pStresponsenvp = HttpCall(pStrrequestforNvp);

            NVPCodec decoder = new NVPCodec();
            decoder.Decode(pStresponsenvp);

            string strAck = decoder["ACK"].ToLower();
            if (strAck != null && (strAck == "success" || strAck == "successwithwarning"))
            {
                token = decoder["TOKEN"];
                string ECURL = "https://" + host + "/cgi-bin/webscr?cmd=_express-checkout" + "&token=" + token;
                retMsg = ECURL;
                return true;
            }
            else
            {
                retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" +
                    "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" +
                    "Desc2=" + decoder["L_LONGMESSAGE0"];
                return false;
            }
    }
        public ActionResult UpdateCartDetailLineItem(FormCollection postedFormData)
        {
            CartApplicationService cartApplicationService = new CartApplicationService();
              CartViewModel cartViewModel = new CartViewModel();

             var Cart = ShoppingCartActions.GetCart();
            cartViewModel.Cart.CartID = Cart.ShoppingCartId;
            cartViewModel.Cart.ProductID = Convert.ToInt32(postedFormData["ProductID"]);
            //if (HiLToysBusinessServices.Utilities.IsNumeric((postedFormData["Quantity"])) == true)
                cartViewModel.Cart.Quantity = Convert.ToInt32(postedFormData["Quantity"]);

              cartViewModel = cartApplicationService.UpdateCartDetailLineItem(cartViewModel);
               Session["payment_amt"]=cartViewModel.Cart.CartTotal;
              return Json(new
              {
                  ReturnStatus = cartViewModel.ReturnStatus,
                  viewModel = cartViewModel,
                  xtotal=cartViewModel.Cart.CartTotal,
                                   //ValidationErrors = cartViewModel.ValidationErrors,
              //                MessageBoxView = Helpers.MvcHelpers.RenderPartialView(this, "_MessageBox", cartViewModel),
              });
        }
        public ActionResult ResetCartSummary()
        {
            CartApplicationService cartApplicationService = new CartApplicationService();
             CartViewModel cartViewModel = new CartViewModel();
             var Cart = ShoppingCartActions.GetCart();
             cartViewModel.Cart.CartID = Cart.ShoppingCartId;
             cartViewModel = cartApplicationService.GetCartCount(cartViewModel);
             ViewData["CartCount"] = cartViewModel.Cart.Count;

             return PartialView("CartSummary");
        }
        //
        // GET: /Carts/
        public ActionResult Index()
        {
            CartApplicationService cartApplicationService = new CartApplicationService();

               var Cart = ShoppingCartActions.GetCart();
               string CartID = Cart.ShoppingCartId;

            CartViewModel cartViewModel = new CartViewModel();
               cartViewModel = cartApplicationService.GetCarts(CartID);
            if (cartViewModel.Cart.CartTotal < 1)
             Session["payment_amt"] = null;
             else
             Session["payment_amt"] = cartViewModel.Cart.CartTotal;

            return View("Index", cartViewModel);
        }
        //
        public ActionResult GetCartCount(FormCollection postedFormData)
        {
            CartApplicationService cartApplicationService = new CartApplicationService();
             CartViewModel cartViewModel = new CartViewModel();
             var Cart = ShoppingCartActions.GetCart();
             cartViewModel.Cart.CartID = Cart.ShoppingCartId;
             cartViewModel = cartApplicationService.GetCartCount(cartViewModel);
             return Json(new
             {
             TotalCatCount = cartViewModel.Cart.Count

             });
        }
        public ActionResult DeleteCartDetailLineItem(FormCollection postedFormData)
        {
            CartApplicationService cartApplicationService = new CartApplicationService();
            CartViewModel cartViewModel = new CartViewModel();
               var Cart = ShoppingCartActions.GetCart();
               cartViewModel.Cart.CartID = Cart.ShoppingCartId;
            cartViewModel.Cart.ProductID = Convert.ToInt32(postedFormData["ProductID"]);
            cartViewModel.Cart.ProductName=Convert.ToString(postedFormData["productName"]);
            string rowIndex = Convert.ToString(postedFormData["RowIndex"]);
            cartViewModel.Cart.RecordId = Convert.ToString(postedFormData["RecordId"]);

            cartViewModel = cartApplicationService.DeleteCartDetailLineItem(cartViewModel);
            Session["payment_amt"] = cartViewModel.Cart.CartTotal;

               return Json(new
            {
                ReturnStatus = cartViewModel.ReturnStatus,
                viewModel = cartViewModel,
                TotalCartCounts = cartViewModel.Cart.Count,
                xtotal = cartViewModel.Cart.CartTotal,
                RowIndex = rowIndex,
               // ValidationErrors = cartViewModel.ValidationErrors,
               // MessageBoxView = Helpers.MvcHelpers.RenderPartialView(this, "_MessageBox", cartViewModel),
            });

            //return RedirectToAction("Index");
        }