// GET: Proceed

        public ActionResult Proceed()
        {
            #region Wish list
            HttpCookie cookie = Request.Cookies["WishList"];
            if (cookie != null)
            {
                List <string> WishList = cookie.Value.Split(',').ToList();

                WishList.RemoveAt(WishList.Count - 1);

                ViewBag.WishList      = WishList;
                ViewBag.WishListCount = WishList.Count;
            }
            else
            {
                ViewBag.WishListCount = 0;
            }
            #endregion

            #region Cart list

            HttpCookie    cookieCart = Request.Cookies["Cart"];
            List <string> CartList   = new List <string>();
            if (cookieCart != null)
            {
                CartList = cookieCart.Value.Split(',').ToList();
                CartList.RemoveAt(CartList.Count - 1);

                ViewBag.CartList      = CartList;
                ViewBag.CartListCount = CartList.Count;
            }
            else
            {
                ViewBag.CartListCount = 0;
            }
            #endregion

            VmProceed model = new VmProceed();

            List <Product> products = new List <Product>();

            foreach (var item in CartList)
            {
                foreach (var prd in db.Products.Include("ProductImages").ToList())
                {
                    if (Convert.ToInt32(item.Split('-')[0]) == prd.Id)
                    {
                        prd.Count = Convert.ToDecimal(item.Split('-')[1]);
                        products.Add(prd);
                    }
                }
            }
            model.Products    = products;
            model.HeaderImage = db.HeaderImages.FirstOrDefault(i => i.Page == "Proceed");

            ViewBag.HomeSetting = db.HomeSettings
                                  .Include("HomeSocials")
                                  .Include("HomeSocials.SocialType").FirstOrDefault();
            return(View(model));
        }
        public ActionResult Proceed(VmProceed proceed)
        {
            //Get money - Sent data to API
            //Call API
            string APIResponse = "OK";


            //Next Steps
            if (APIResponse == "OK")
            {
                //Add Client
                int?ClientId = null;
                if (Session["LoginnedUser"] == null)
                {
                    if (ModelState.IsValid)
                    {
                        User client = new User();
                        client.Name         = proceed.Name;
                        client.Surname      = proceed.Surname;
                        client.Email        = proceed.Email;
                        client.Phone        = proceed.Phone;
                        client.Address      = proceed.Address;
                        client.City         = proceed.City;
                        client.PostCode     = proceed.PostCode;
                        client.Notes        = proceed.Notes;
                        client.CreatedDate  = DateTime.Now;
                        client.IsRegistered = false;

                        db.Users.Add(client);
                        db.SaveChanges();
                        ClientId = client.Id;
                    }
                }
                else
                {
                    ClientId = (int)Session["LoginnedUserId"];
                }


                //Sell product
                foreach (var item in proceed.ProductId)
                {
                    Product product = db.Products.Find(item);
                    int     index   = proceed.ProductId.ToList().IndexOf(item);
                    if (product.Quantity < proceed.ProductCount[index])
                    {
                        Session["PrdIsNotEnough"] = true;
                        goto Get;
                    }
                    Sale sale = new Sale();
                    sale.ProductId   = item;
                    sale.Quantity    = proceed.ProductCount[index];
                    sale.UserId      = (int)ClientId;
                    sale.CreatedDate = DateTime.Now;
                    sale.Price       = product.Price;

                    db.Sales.Add(sale);

                    product.Quantity       -= proceed.ProductCount[index];
                    db.Entry(product).State = System.Data.Entity.EntityState.Modified;
                }

                db.SaveChanges();
                Session["Success"] = true;

                HttpCookie cookieCartMe = new HttpCookie("Cart");
                cookieCartMe.Value   = "";
                cookieCartMe.Expires = DateTime.Now.AddDays(-1);

                HttpCookie cookieWishMe = new HttpCookie("WishList");
                cookieWishMe.Value   = "";
                cookieWishMe.Expires = DateTime.Now.AddDays(-1);

                Response.Cookies.Add(cookieCartMe);
                Response.Cookies.Add(cookieWishMe);

                return(RedirectToAction("Checkout"));
            }
            else
            {
                Session["MoneyIsNotEnough"] = true;
                goto Get;
            }

Get:
            #region Wish list
            HttpCookie cookie = Request.Cookies["WishList"];
            if (cookie != null)
            {
                List <string> WishList = cookie.Value.Split(',').ToList();

                WishList.RemoveAt(WishList.Count - 1);

                ViewBag.WishList      = WishList;
                ViewBag.WishListCount = WishList.Count;
            }
            else
            {
                ViewBag.WishListCount = 0;
            }
            #endregion

            #region Cart list

            HttpCookie    cookieCart = Request.Cookies["Cart"];
            List <string> CartList   = new List <string>();
            if (cookieCart != null)
            {
                CartList = cookieCart.Value.Split(',').ToList();
                CartList.RemoveAt(CartList.Count - 1);

                ViewBag.CartList      = CartList;
                ViewBag.CartListCount = CartList.Count;
            }
            else
            {
                ViewBag.CartListCount = 0;
            }
            #endregion

            VmProceed model = new VmProceed();

            List <Product> products = new List <Product>();

            foreach (var item in CartList)
            {
                foreach (var prd in db.Products.Include("ProductImages").ToList())
                {
                    if (Convert.ToInt32(item.Split('-')[0]) == prd.Id)
                    {
                        prd.Count = Convert.ToDecimal(item.Split('-')[1]);
                        products.Add(prd);
                    }
                }
            }
            model.Products    = products;
            model.HeaderImage = db.HeaderImages.FirstOrDefault(i => i.Page == "Checkout");

            ViewBag.HomeSetting = db.HomeSettings
                                  .Include("HomeSocials")
                                  .Include("HomeSocials.SocialType").FirstOrDefault();
            return(View(model));
        }