// Check if item exists in cart
 private bool CartItemExists(ProductDetail product, WinkelwagenItem item)
 {
     if (item.product.Find(p => p.product.ProductId == product.product.ProductId) != null)
         return true;
     else
         return false;
 }
        // Add an item to the cart of the user
        public ActionResult AddToCart(int id)
        {
            if (Request.Cookies[CartKey] == null)
            {
                // Create cookie
                HttpCookie myCookie = new HttpCookie(CartKey);
                myCookie.Expires = DateTime.Now.AddDays(31d);
                Response.Cookies.Add(myCookie);
            }

            // Check if Cookie value exists
            // else continue
            if(Response.Cookies[CartKey].Value == null)
            {
                WinkelwagenItem wItem = new WinkelwagenItem();
                wItem.product = new List<ProductDetail>();
                wItem.hoeveelheid = new List<int>();
                Response.Cookies[CartKey].Value = JsonConvert.SerializeObject(wItem);
            }
            // Attach id to model by retrieving data from DB
            ProductDetail product = productDBController.GetProductAndDetail(id);

            // TODO: Check if Cookie value is WinkelwagenItem class
            
            // Check if item exists, if so, increment quantity.
            // else add item and quantity
            WinkelwagenItem item = JsonConvert.DeserializeObject<WinkelwagenItem>(Request.Cookies[CartKey].Value);

            if(CartItemExists(product, item))
            {
                // Get index value
                int index = item.product.FindIndex(p => p.product.ProductId == product.product.ProductId); // Can use method immediatly, instead of assigning variable
                item.hoeveelheid[index] += 1;

                // Modify response 
                Response.Cookies[CartKey].Value = JsonConvert.SerializeObject(item);
            }
            else
            {
                // Add Product
                item.product.Add(product);
                item.hoeveelheid.Add(1);
                
                // Modify Response
                Response.Cookies[CartKey].Value = JsonConvert.SerializeObject(item);
            }

            return RedirectToAction("Winkelwagen", "Winkelwagen");
        }
        public bool InsertBestelling(WinkelwagenItem item, string datum, int gebruikerId, int adresId, string bestelKeuze, int aanbiedingId)
        {
            MySqlTransaction trans = null;
            try
            {
                conn.Open();

                trans = conn.BeginTransaction();

                // Insert BestelBase & Retrieve last inserted Id
                int bestellingId = InsertBestelBase(datum, bestelKeuze, gebruikerId, adresId);
                
                // Doorloop alle winkelwagen items
                for (int i = 0; i < item.product.Count; i++)
                    InsertBestelRegel(item.product[i].detailId, datum, item.hoeveelheid[i],bestellingId, aanbiedingId);
                    

                trans.Commit();
            }
            catch (Exception e)
            {
                Console.WriteLine("Exceptie in Insert Bestelling en BestellingRegel, Transactie mislukt");
                trans.Rollback();
                return false;
            }

            return true;
        }
        private bool bestellingAfronden(WinkelwagenItem winkelwagenItemModel, string bestelKeuze, int adres)
        {
            // Retrieve User Data
            KlantBase klant = klantDBController.GetKlantInformatie(User.Identity.Name);
            int adresId = klantDBController.GetAdresId(klant.Id);
            if (adresId == 0)
                RedirectToAction("Winkelwagen", "Winkelwagen"); // Temp Data over Adres niet ingevult

            int aanbiedingId = 0; // TODO: Get aanbieding

            // Gold member = 10% korting
            if (klantDBController.CheckGebruikerGoldMember(klant.Id))
            {
                for(int i = 0; i < winkelwagenItemModel.product.Count; i++)
                {
                    // 10% korting
                    winkelwagenItemModel.product[i].verkoopprijs = winkelwagenItemModel.product[i].verkoopprijs * 0.9;
                }
            }

            // Insert Bestelling
            if(bestellingDBController.InsertBestelling(winkelwagenItemModel, DateTime.Today.ToString("yyyy/M/%d"), klant.Id, adres, bestelKeuze, aanbiedingId))
            {
                // Succesful Insert
                if (Request.Cookies[CartKey] != null)
                {
                    // Empty Winkelwagen
                    Response.Cookies[CartKey].Expires = DateTime.Now.AddDays(-1);
                }
                RedirectToAction("Profiel", "Account"); // Temp data meegeven
            }
            else
            {
                // Unsuccesful Insert
                RedirectToAction("Winkelwagen", "Winkelwagen"); // Temp Data meegeven
            }

            return true;
        }