public void OnGet()
        {
            if (User.Identity.IsAuthenticated)
            {
                string id     = _userManager.GetUserId(User);
                var    query2 = from shop in _context.Shopping_card
                                where shop.User_ID == id
                                select shop;
                YourCart = query2.FirstOrDefault();

                if (YourCart == null)
                {
                    YourCart = new Shopping_card()
                    {
                        User_ID = id
                    };
                    _context.Add(YourCart);
                    _context.SaveChanges();
                }

                var query = from shopping in _context.Shopping_card
                            where shopping.User_ID == id
                            let shoppingProducts = (
                    from shoppingProdutstable in _context.Shopping_Card_Products
                    from Products in _context.Product
                    where shoppingProdutstable.Shopping_card_ID == shopping.ID &&
                    shoppingProdutstable.Product_ID == Products.ID
                    select new ResponseShopingCart()
                {
                    product = Products, quantity = shoppingProdutstable.quantity + 1
                }
                    ).ToList()
                                                   select shoppingProducts;
                _Products = query.FirstOrDefault();
            }
            else
            {
                string cookieshoping = Request.Cookies["ShoppingCart"];
                List <shoppingCart_cookie> shoppingcartlist = Cookie.Cookiereader_shoppingcart(cookieshoping);
                _Products = new List <ResponseShopingCart>();

                foreach (shoppingCart_cookie item in shoppingcartlist)
                {
                    var query = from product in _context.Product
                                where product.ID == item.ProductID
                                select product;

                    _Products.Add(new ResponseShopingCart()
                    {
                        product = query.FirstOrDefault(), quantity = item.Quantity
                    });
                }
            }
        }
Beispiel #2
0
        public void OnGet(string FirstName, string LastName, string Email)
        {
            //Store FirstName, LastName and Email in an class
            EmailKey = new FirstnameLastnameEmail()
            {
                Email = Email, Firstname = FirstName, Lastname = LastName
            };

            if (User.Identity.IsAuthenticated)
            {
                id    = _userManager.GetUserId(User);
                _User = _userManager.GetUserAsync(User).Result;
                var query2 = from shop in _context.Shopping_card
                             where shop.User_ID == id
                             select shop;
                YourCart = query2.FirstOrDefault();

                var query = from shopping in _context.Shopping_card
                            where shopping.User_ID == id
                            let shoppingProducts = (
                    from shoppingProdutstable in _context.Shopping_Card_Products
                    from Products in _context.Product
                    where shoppingProdutstable.Shopping_card_ID == shopping.ID &&
                    shoppingProdutstable.Product_ID == Products.ID
                    select new ResponseShopingCart()
                {
                    product = Products, quantity = shoppingProdutstable.quantity + 1
                }
                    ).ToList()
                                                   select shoppingProducts;
                _Products = query.FirstOrDefault();
            }
            else
            {
                string cookieshoping = Request.Cookies["ShoppingCart"];
                List <shoppingCart_cookie> shoppingcartlist = Cookie.Cookiereader_shoppingcart(cookieshoping);
                _Products = new List <ResponseShopingCart>();

                foreach (shoppingCart_cookie item in shoppingcartlist)
                {
                    var query = from product in _context.Product
                                where product.ID == item.ProductID
                                select product;

                    _Products.Add(new ResponseShopingCart()
                    {
                        product = query.FirstOrDefault(), quantity = item.Quantity
                    });
                }
            }
        }
        public async Task <IActionResult> OnPostDeleteitemAsync(int id1, int?cartid1)
        {
            if (User.Identity.IsAuthenticated) // Wordt uitgevoerd als de gebuiker is ingelogd.
            {
                if (cartid1 == null)
                {
                    return(NotFound());
                }


                Shopping_card_Product = await _context.Shopping_Card_Products.FindAsync(cartid1, id1);

                _context.Shopping_Card_Products.Remove(Shopping_card_Product);
                await _context.SaveChangesAsync();
            }
            else
            {
                // Cookie instellingen.
                CookieOptions cookieOptions = new CookieOptions
                {
                    Expires  = DateTime.Now.AddDays(14),
                    HttpOnly = true
                };

                // Split characters:
                // - between productID and quantity
                // + between Produts in shopping card.
                // Tuple<ProductID, Quantity

                string cookieshoping = Request.Cookies["ShoppingCart"];
                List <shoppingCart_cookie> shoppingcartlist     = Cookie.Cookiereader_shoppingcart(cookieshoping);
                List <shoppingCart_cookie> shoppingcartlist_new = new List <shoppingCart_cookie>();

                foreach (var item in shoppingcartlist)
                {
                    if (item.ProductID != id1)
                    {
                        shoppingcartlist_new.Add(new shoppingCart_cookie()
                        {
                            ProductID = item.ProductID, Quantity = item.Quantity
                        });
                    }
                }
                Response.Cookies.Append("ShoppingCart", Cookie.CookieCreater_shoppingcart(shoppingcartlist_new), cookieOptions);
            }

            return(RedirectToPage("./ShoppingCart"));
        }
        public void OnPost(/*[FromBody]*/ int productid, string WichPage = "True")
        {
            // Controlleert of de gebruiker is ingelogd.
            if (User.Identity.IsAuthenticated) // Wordt uitgevoerd als de gebruiker is ingelogd.
            {
                string id = _userManager.GetUserId(User);

                var query = from shop in _context.Shopping_card
                            where shop.User_ID == id
                            select shop;

                Shopping_card shoping_check = query.FirstOrDefault();

                // Controlleert of de gebruiker al een shopping cart heeft.
                if (shoping_check == null) // Wordt uitgevoerd als de gebruiker nog geen shopping cart heeft.
                {
                    Console.WriteLine("");
                    Shopping_card shoppingCard = new Shopping_card()
                    {
                        User_ID = id.ToString(),
                        ShoppingCardProducts = new List <Shopping_card_Product>()
                        {
                            new Shopping_card_Product()
                            {
                                Product_ID = productid
                            }
                        }
                    };
                    _context.Shopping_card.Add(shoppingCard);
                    _context.SaveChanges();
                }
                else // Wordt uitgevoerd als gebruiker uit de shoppingcard al bestaat
                {
                    var query3 = (from shoping in _context.Shopping_card
                                  from shopingProduct in _context.Shopping_Card_Products
                                  where shopingProduct.Shopping_card_ID == shoping.ID && shoping.User_ID == id
                                  select shopingProduct).ToList();

                    List <Shopping_card_Product> shoppingCardProducts = query3;
                    bool checkProductExists = false;

                    foreach (var item in shoppingCardProducts)
                    {
                        if (item.Product_ID == productid)
                        {
                            checkProductExists = true;
                        }
                    }

                    var query2 = from shopingCard in _context.Shopping_card
                                 where shopingCard.User_ID == id
                                 select shopingCard;

                    Shopping_card shoppingCard = query2.FirstOrDefault();

                    if (!checkProductExists) // Wordt uitgevoerd als het product nog niet in de shopping cart zit.
                    {
                        Shopping_card_Product shoppingCardProduct = new Shopping_card_Product()
                        {
                            Shopping_card_ID = shoppingCard.ID,
                            Product_ID       = productid
                        };
                        _context.Shopping_Card_Products.Add(shoppingCardProduct);
                        _context.SaveChanges();
                    }
                    else // Wordt uitgevoerd als het product al wel in de shopping cart zit.
                    {
                        var queryShoppingCardId = (from shoppingCard_I in _context.Shopping_card
                                                   where shoppingCard_I.User_ID == id
                                                   select shoppingCard).FirstOrDefault();
                        Shopping_card_Product shoppingCardProduct = _context.Shopping_Card_Products.SingleOrDefault(b => b.Product_ID == productid && b.Shopping_card_ID == queryShoppingCardId.ID);
                        if (shoppingCardProduct != null)
                        {
                            shoppingCardProduct.quantity = shoppingCardProduct.quantity + 1;
                            _context.SaveChanges();
                        }
                    }
                }
            }
            else // Wordt uitgevoerd als de gebruiker niet is ingelogd. (Wordt dus gebruikt voor de cookies).
            {
                //
                CookieOptions cookieOptions = new CookieOptions
                {
                    Expires  = DateTime.Now.AddDays(14),
                    HttpOnly = true
                };

                // Split characters:
                // - between productID and quantity
                // + between Produts in shopping card.
                // Tuple<ProductID, Quantity

                string cookieshoping = Request.Cookies["ShoppingCart"];
                List <shoppingCart_cookie> shoppingcartlist = Cookie.Cookiereader_shoppingcart(cookieshoping);

                if (shoppingcartlist.Count == 0)
                {
                    Response.Cookies.Append("ShoppingCart", productid + "-" + 1, cookieOptions);
                }
                else
                {
                    // Controlleer of product al bestaat en zo je increase the count bij 1.
                    bool Productexists = false;
                    int  count         = 0;
                    foreach (shoppingCart_cookie item in shoppingcartlist)
                    {
                        if (item.ProductID == productid) // Wordt uigevoerd als item al in shoppingcard zit en verhoogd quantity met 1
                        {
                            Productexists = true;
                            shoppingcartlist[count].Quantity = shoppingcartlist[count].Quantity + 1;
                        }

                        count++;
                    }

                    if (!Productexists) // Als product nog niet bestaat wordt deze toegevoegd.
                    {
                        Response.Cookies.Append("ShoppingCart", cookieshoping + "_" + productid + "-" + 1, cookieOptions);
                    }
                    else // Als product all wel bestaat moet de cookie geupdate worden met een verhoogde quantity.
                    {
                        string cookieshoping_update = shoppingcartlist[0].ProductID + "-" + shoppingcartlist[0].Quantity;

                        for (int i = 1; i < shoppingcartlist.Count; i++)
                        {
                            cookieshoping_update = cookieshoping_update + "_" + shoppingcartlist[i].ProductID + "-" +
                                                   shoppingcartlist[i].Quantity;
                        }
                        Response.Cookies.Append("ShoppingCart", cookieshoping_update, cookieOptions);
                    }
                }
            }

            if (WichPage == "True")
            {
                // Redirect back to Product info
                Response.Redirect("ProductInfo?id=" + productid + "&ProductAdded=ShoppingCard");
            }
            // Redirect to shoppingcard
            Response.Redirect("ShoppingCart");
        }
        public async Task <IActionResult> OnPostAsync(string email, string firstname, string lastname, int?PointsSpend)
        {
            var             id        = _userManager.GetUserId(User);
            ApplicationUser gebruiker = await _userManager.GetUserAsync(User);

            // Select an new highest TMPID.
            int    currentTMPID   = 0;
            bool   UniqueTMPCheck = true;
            Random rnd            = new Random();

            while (UniqueTMPCheck)
            {
                currentTMPID   = rnd.Next(1, 2000000000);
                UniqueTMPCheck = _context.Key.Any(item => item.TMPID == currentTMPID);
            }

            mehdiid = id;
            if (User.Identity.IsAuthenticated)
            {
                var fullcart = (from cartprd in _context.Shopping_Card_Products
                                from cartid in _context.Shopping_card
                                where cartprd.Shopping_card_ID == cartid.ID && cartid.User_ID == id
                                select cartprd);
                //proptabtab = fullcart.ToList();

                var query = from shopping in _context.Shopping_card
                            where shopping.User_ID == id
                            let shoppingProducts = (
                    from shoppingProdutstable in _context.Shopping_Card_Products
                    from Products in _context.Product
                    where shoppingProdutstable.Shopping_card_ID == shopping.ID &&
                    shoppingProdutstable.Product_ID == Products.ID
                    select new ResponseShopingCart()
                {
                    product = Products, quantity = shoppingProdutstable.quantity + 1
                }
                    ).ToList()
                                                   select shoppingProducts;
                proptabtab = query.FirstOrDefault();

                if (PointsSpend > gebruiker.TPunten || PointsSpend == null)
                {
                    PointsSpend = 0;
                }

                Order Order = new Order()
                {
                    User_ID     = id,
                    PointsGain  = 0,
                    Paid        = 0,
                    PointsSpend = (int)PointsSpend,
                    OrderDate   = DateTime.Now,
                    Keys        = new List <Key>(),
                };

                float TotalPrice = 0;

                foreach (var item in proptabtab)
                {
                    int i = 0;
                    while (i < item.quantity)
                    {
                        TotalPrice = TotalPrice + item.product.PriceFinal;
                        Order.Keys.Add(new Key()
                        {
                            UserID    = id,
                            TMPID     = currentTMPID,
                            License   = Guid.NewGuid().ToString(),
                            ProductID = item.product.ID,
                            Price     = item.product.PriceFinal,
                            OrderDate = DateTime.Now
                        });
                        i = i + 1;
                    }
                }

                if (PointsSpend != null && PointsSpend != 0)
                {
                    double Discount = Math.Round((Math.Pow(((int)PointsSpend + TotalPrice), 1.8) / 1000) * 100) / 100;
                    TotalPrice = (float)Math.Round((TotalPrice - Discount) * 100) / 100;
                }

                Order.PointsGain  = (int)Math.Round(TotalPrice);
                Order.Paid        = TotalPrice;
                gebruiker.TPunten = gebruiker.TPunten + (int)Math.Round(TotalPrice) - (int)PointsSpend;

                _context.Users.Update(gebruiker);
                _context.Order.Add(Order);

                // From List keys to only key array
                EmailKeyArray[] EmailKey = new EmailKeyArray[Order.Keys.Count];

                for (int j = 0; j < Order.Keys.Count; j++)
                {
                    EmailKey[j]             = new EmailKeyArray();
                    EmailKey[j].Key         = Order.Keys[j].License;
                    EmailKey[j].ProductName = (from p in _context.Product
                                               where p.ID == Order.Keys[j].ProductID
                                               select p.ResponseName).FirstOrDefault();
                }

                // Send the E-mail
                _emailSender.SendKeysToEmailAsync(email, EmailKey, firstname, lastname);

                _context.Shopping_Card_Products.RemoveRange(fullcart);
            }
            else // Voor cookie shoppingCard
            {
                string cookieshoping = Request.Cookies["ShoppingCart"];
                List <shoppingCart_cookie> shoppingcartlist = Cookie.Cookiereader_shoppingcart(cookieshoping);
                List <Key> keys = new List <Key>();

                Order Order = new Order()
                {
                    PointsGain  = 0,
                    Paid        = 0,
                    PointsSpend = 0,
                    OrderDate   = DateTime.Now,
                    Keys        = new List <Key>(),
                };

                float TotalPrice = 0;

                foreach (shoppingCart_cookie item in shoppingcartlist)
                {
                    int i = 0;
                    while (i < item.Quantity)
                    {
                        TotalPrice = TotalPrice + _context.Product.Where(x => x.ID == item.ProductID).Select(x => x.PriceFinal).FirstOrDefault();
                        Order.Keys.Add(new Key()
                        {
                            TMPID     = currentTMPID,
                            License   = Guid.NewGuid().ToString(),
                            ProductID = item.ProductID,
                            Price     = _context.Product.Where(x => x.ID == item.ProductID).Select(x => x.PriceFinal).FirstOrDefault(),
                            OrderDate = DateTime.Now
                        });
                        i = i + 1;
                    }
                }

                Order.Paid = TotalPrice;
                _context.Order.Add(Order);

                // From List keys to only key array
                EmailKeyArray[] EmailKey = new EmailKeyArray[Order.Keys.Count];

                for (int j = 0; j < Order.Keys.Count; j++)
                {
                    EmailKey[j]             = new EmailKeyArray();
                    EmailKey[j].Key         = Order.Keys[j].License;
                    EmailKey[j].ProductName = (from p in _context.Product
                                               where p.ID == Order.Keys[j].ProductID
                                               select p.ResponseName).FirstOrDefault();
                }

                // Send the E-mail
                _emailSender.SendKeysToEmailAsync(email, EmailKey, firstname, lastname);

                // Cookie instellingen.
                CookieOptions cookieOptions = new CookieOptions
                {
                    Expires  = DateTime.Now.AddDays(14),
                    HttpOnly = true
                };

                // Split characters:
                // - between productID and quantity
                // + between Produts in shopping card.
                // Tuple<ProductID, Quantity

                Response.Cookies.Append("ShoppingCart", "", cookieOptions);
            }

            if (!ModelState.IsValid)
            {
                return(Page());
            }

            await _context.SaveChangesAsync();

            return(Redirect("FinishCheckout?id=" + currentTMPID));
        }