Esempio n. 1
0
        public void AddBestallning(Bestallning B)
        {
            B.Kund = null;
            var BMList = new List <BestallningMatratt>();

            foreach (var BM in B.BestallningMatratt)
            {
                BMList.Add(BM);
            }
            B.BestallningMatratt = null;
            _Repository.Bestallning.Add(B);
            _Repository.SaveChanges();

            var senast   = _Repository.Bestallning.ToList();
            var senastID = senast.OrderByDescending(x => x.BestallningDatum).First().BestallningId;

            foreach (var BM in BMList)
            {
                var BestallMat = new BestallningMatratt();
                BestallMat.Antal         = BM.Antal;
                BestallMat.MatrattId     = BM.MatrattId;
                BestallMat.BestallningId = senastID;
                _Repository.BestallningMatratt.Add(BestallMat);
            }

            _Repository.SaveChanges();
        }
Esempio n. 2
0
        public List <BestallningMatratt> GetKopplingsTabell()
        {
            var model       = new OrderCheckOut();
            var orderValues = HttpContext.Session.GetString("Order");
            var matratter   = JsonConvert.DeserializeObject <List <Matratt> >(orderValues);

            foreach (var mat in matratter)
            {
                var isAlready = model.ListOfMatrattToOrder.SingleOrDefault(p => p.MatrattId == mat.MatrattId);
                if (isAlready == null)
                {
                    var antal    = _context.Matratt.Count(m => m.MatrattId == mat.MatrattId);
                    var koppling = new BestallningMatratt();
                    koppling.MatrattId = mat.MatrattId;
                    koppling.Antal     = antal;
                    model.ListOfMatrattToOrder.Add(koppling);
                }
                else
                {
                    var koppling = model.ListOfMatrattToOrder.SingleOrDefault(m => m.MatrattId == mat.MatrattId);
                    koppling.Antal = koppling.Antal + 1;
                }
            }

            return(model.ListOfMatrattToOrder);
        }
Esempio n. 3
0
        public Bestallning CreateBestallning()
        {
            Bestallning B        = new Bestallning();
            int         TotalSum = 0;

            foreach (var V in _Session.GetCart())
            {
                var BM = new BestallningMatratt();

                if (B.BestallningMatratt.Where(x => x.MatrattId == V.MatrattId).FirstOrDefault() != null)
                {
                    B.BestallningMatratt.Where(x => x.MatrattId == V.MatrattId).FirstOrDefault().Antal++;
                }
                else
                {
                    BM.Bestallning = B;
                    BM.Matratt     = V;
                    BM.MatrattId   = V.MatrattId;
                    BM.Antal       = 1;
                    B.BestallningMatratt.Add(BM);
                }

                TotalSum += V.Pris;
            }

            var kund = _Session.GetSessionKund();

            B.KundId           = kund.KundId;
            B.Kund             = kund;
            B.BestallningDatum = DateTime.Now;
            B.Levererad        = false;
            B.Totalbelopp      = TotalSum;

            return(B);
        }
Esempio n. 4
0
        public IActionResult Checkout()
        {
            var temp     = Request.Cookies["Cart"];
            var temp2    = Request.Cookies["LoggedIn"];
            var foodList = JsonConvert.DeserializeObject <List <Matratt> >(temp);
            var customer = JsonConvert.DeserializeObject <Kund>(temp2);

            var order = new Bestallning()
            {
                BestallningDatum = DateTime.Now,
                KundId           = customer.KundId,
                Levererad        = true,
                Totalbelopp      = foodList.Sum(x => x.Pris)
            };
            var dataAccess = new DataAccess();

            dataAccess.CreateOrder(_context, order);


            while (foodList.Count > 0)
            {
                var connection = new BestallningMatratt()
                {
                    Antal       = foodList.Count(x => x.MatrattId == foodList[0].MatrattId),
                    MatrattId   = foodList[0].MatrattId,
                    Bestallning = order
                };
                dataAccess.CreateOrderConnection(_context, connection);
                foodList = foodList.Where(x => x.MatrattId != foodList[0].MatrattId).ToList();
            }


            return(View());
        }
        public async Task <IActionResult> BuyConfirmed()
        {
            ApplicationUser user = await _usermanager.GetUserAsync(User);

            var cartItems  = GetCartItems();
            int totalPrice = cartItems.Sum(x => x.Pris);


            if (User.IsInRole("PremiumUser") && cartItems.Count >= 3)
            {
                totalPrice = Convert.ToInt32(totalPrice * 0.8);

                user.Points += (cartItems.Count * 10);

                if (user.Points >= 100)
                {
                    totalPrice  = totalPrice - cartItems.OrderBy(m => m.Pris).First().Pris;
                    user.Points = 0;
                }

                await _usermanager.UpdateAsync(user);
            }


            var order = new Bestallning()
            {
                Id = user.Id,
                BestallningDatum = DateTime.Now,
                Levererad        = false,
                Totalbelopp      = totalPrice
            };

            _context.Bestallnings.Add(order);
            _context.SaveChanges();

            var sortedList = cartItems.GroupBy(m => m.MatrattId).Select(m => m.First()).ToList();

            foreach (var item in sortedList)
            {
                var ratt = new BestallningMatratt()
                {
                    MatrattId     = item.MatrattId,
                    BestallningId = order.BestallningId,
                    Antal         = cartItems.Where(m => m.MatrattId == item.MatrattId).ToList().Count
                };

                _context.BestallningMatratts.Add(ratt);
                _context.SaveChanges();
            }



            _context.SaveChanges();

            HttpContext.Session.SetString("cart", "");

            return(View());
        }
        public async Task <ActionResult> Sent(Kund kund)
        {
            if (HttpContext.Session.GetString("KundId") != null)
            {
                var kundId = HttpContext.Session.GetString("KundId");

                var convert = Convert.ToInt32(kundId);

                var value = (HttpContext.Session.GetString("Varukorg"));
                FoodList = JsonConvert.DeserializeObject <List <Matratt> >(value);

                var date = DateTime.Now;

                var order = new Bestallning
                {
                    BestallningDatum = date,
                    Totalbelopp      = FoodList.Sum(x => x.Pris),
                    Levererad        = false,
                    KundId           = Convert.ToInt32(convert)
                };
                _context.Bestallning.Add(order);

                var listSum = FoodList;

                var tempList = FoodList.OrderBy(x => x.MatrattId);

                foreach (var sum in tempList.Select(x => x.MatrattId).Distinct())
                {
                    var doneOrder = new BestallningMatratt
                    {
                        BestallningId = order.BestallningId,
                        Antal         = listSum.Where(x => x.MatrattId == sum).Count(),
                        MatrattId     = sum
                    };

                    _context.BestallningMatratt.Add(doneOrder);
                }

                await _context.SaveChangesAsync();

                var dish     = _context.Bestallning.Where(x => x.BestallningId == order.BestallningId).ToList();
                var customer = _context.Kund.Where(x => x.KundId == convert).ToList();

                var display = new MenuModel
                {
                    Orders       = dish,
                    CustomerList = customer,
                    Dishes       = FoodList,
                };

                return(View(display)); // await tomasosContext.ToListAsync()
            }

            else
            {
                return(RedirectToAction("Login", "Kunds"));
            }
        }
        public async Task <ActionResult> PlaceOrder()
        {
            string sessionString = HttpContext.Session.GetString("Order");

            if (sessionString != null)
            {
                BestallningMatratt orderDish = new BestallningMatratt();
                var dishes = JsonConvert.DeserializeObject <List <Matratt> >(sessionString);
                var order  = await NewOrderAsync(dishes);

                foreach (var dish in dishes)
                {
                    if (order.BestallningMatratt.Where(o => o.MatrattId == dish.MatrattId).Count() == 0)
                    {
                        orderDish = new BestallningMatratt {
                            MatrattId = dish.MatrattId, Antal = 1
                        };
                        order.BestallningMatratt.Add(orderDish);
                    }
                    else
                    {
                        order.BestallningMatratt.Single(o => o.MatrattId == dish.MatrattId).Antal++;
                    }
                }
                // Change to altered prices, depending on bonus points and how many dishes
                var user = await GetCurrentUserAsync();

                if (User.IsInRole("Premium"))
                {
                    if (user.Points == null)
                    {
                        user.Points = 0;
                    }
                    user.Points += 10 * dishes.Count;
                    if (user.Points >= 100)
                    {
                        order.Totalbelopp -= dishes.Max(d => d.Pris);
                        user.Points       -= 100;
                    }
                    if (dishes.Count >= 3)
                    {
                        order.Totalbelopp = (int)(order.Totalbelopp * 0.8);
                    }
                }

                _context.Add(order);
                await _context.SaveChangesAsync();

                HttpContext.Session.Remove("Order");
                return(View("ThankYou"));
            }
            else
            {
                return(RedirectToAction("Cart"));
            }
        }
Esempio n. 8
0
        public IActionResult AddProduct(int dishID)
        {
            //Här läggs produkten till i varukorgen
            var product = _context.Matratt.SingleOrDefault(m => m.MatrattId == dishID);

            List <BestallningMatratt> cart;

            if (HttpContext.Session.GetString("Varukorg") == null)
            {
                cart = new List <BestallningMatratt>();
            }
            else
            {
                //Hämta listan från Sessionen
                var serializedValue = HttpContext.Session.GetString("Varukorg");
                cart = JsonConvert.DeserializeObject <List <BestallningMatratt> >(serializedValue);
            }
            if (cart.Any(x => x.MatrattId == dishID))
            {
                cart.SingleOrDefault(x => x.MatrattId == dishID).Antal++;
            }
            else
            {
                var addMore = new BestallningMatratt()
                {
                    Antal     = 1,
                    MatrattId = dishID,
                    Matratt   = product
                };

                cart.Add(addMore);
            }

            int numberOfItems = 0;

            if (cart == null)
            {
                numberOfItems = 0;
            }
            else
            {
                foreach (var item in cart)
                {
                    numberOfItems += item.Antal;
                }
            }

            var temp = JsonConvert.SerializeObject(cart);

            HttpContext.Session.SetString("Varukorg", temp);


            return(PartialView("_CartPartial", numberOfItems));
        }
Esempio n. 9
0
        public async Task AddToCart(int dishId)
        {
            Matratt dish = await _repository.SelectById <Matratt>(dishId);

            Bestallning currentOrder = _repository.GetUserOrder(this.User.FindFirstValue(ClaimTypes.NameIdentifier));

            if (currentOrder == null)
            {
                Bestallning order = new Bestallning();

                order.BestallningDatum = DateTime.Now;
                order.Totalbelopp      = dish.Pris;
                order.Levererad        = false;
                order.KundId           = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
                await _repository.CreateAsync <Bestallning>(order);

                Bestallning orderId = _repository.GetUserOrder(this.User.FindFirstValue(ClaimTypes.NameIdentifier));

                BestallningMatratt orderDish = new BestallningMatratt();
                orderDish.MatrattId     = dish.MatrattId;
                orderDish.BestallningId = orderId.BestallningId;

                await _repository.CreateAsync <BestallningMatratt>(orderDish);
            }
            else
            {
                BestallningMatratt duplicateCheck = _repository.CheckForDishDuplicate(currentOrder.BestallningId, dish.MatrattId);

                if (duplicateCheck == null)
                {
                    BestallningMatratt orderDish = new BestallningMatratt();
                    orderDish.MatrattId     = dish.MatrattId;
                    orderDish.BestallningId = currentOrder.BestallningId;
                    await _repository.CreateAsync <BestallningMatratt>(orderDish);
                }
                else
                {
                    BestallningMatratt addTotalForDish = duplicateCheck;

                    int currentTotal = addTotalForDish.Antal;
                    currentTotal         += 1;
                    addTotalForDish.Antal = currentTotal;

                    await _repository.UpdateAsync <BestallningMatratt>(addTotalForDish);
                }

                int totalPrice = currentOrder.Totalbelopp;
                totalPrice += dish.Pris;
                currentOrder.Totalbelopp = totalPrice;
                await _repository.UpdateAsync <Bestallning>(currentOrder);
            }
        }
Esempio n. 10
0
        public async Task <bool> OrderAsync(CartViewModel model, ApplicationUser user)
        {
            var order    = new Bestallning();
            var customer = await _dbService.GetCustomerAsync(user.Id);

            order.Kund             = customer;
            order.BestallningDatum = DateTime.Now;
            order.KundId           = customer.KundId;
            order.Levererad        = false;

            if (model.BonusPoints >= 100)
            {
                if (model.Dishes.Any(e => e.DishId == 1104))
                {
                    model.Dishes.Find(e => e.DishId == 1104).Quantity++;
                }
                else
                {
                    var dish = await GetDishAsync(1104);

                    dish.Quantity++;
                    model.Dishes.Add(dish);
                }

                model.BonusPoints -= 100;
            }

            foreach (var dish in model.Dishes)
            {
                var matratt = await _dbService.GetMatrattAsync(dish.DishId);

                var orderDetail = new BestallningMatratt()
                {
                    Antal       = dish.Quantity,
                    Bestallning = order,
                    Matratt     = matratt,
                    MatrattId   = matratt.MatrattId
                };

                order.BestallningMatratt.Add(orderDetail);
            }

            order.Totalbelopp = user.IsPremium ? model.PremiumPrice : model.TotalPrice;

            var result = await _dbService.AddNewOrderAsync(order);

            if (result)
            {
                user.BonusPoints = model.BonusPoints;
            }
            return(await Task.FromResult <bool>(true));
        }
Esempio n. 11
0
        public async Task <IActionResult> CheckoutConfirm()
        {
            string cartJSON = HttpContext.Session.GetString("ProductCart");

            List <Matratt> Matratter = JsonConvert.DeserializeObject <List <Matratt> >(cartJSON);

            ApplicationUser user = await _usermanager.FindByNameAsync(User.Identity.Name);

            Kund currentKund = _context.Kunds.SingleOrDefault(x => x.Id == user.Id);

            Bestallning bestallning = new Bestallning();

            bestallning.BestallningDatum = DateTime.Now;
            bestallning.Totalbelopp      = Matratter.Sum(p => p.Pris);
            bestallning.Levererad        = false;
            bestallning.KundId           = currentKund.KundId;

            _context.Bestallnings.Add(bestallning);
            _context.SaveChanges();

            Bestallning currentBestallning = _context.Bestallnings.SingleOrDefault(x => x.BestallningDatum == bestallning.BestallningDatum);
            List <int>  existingMatrattId  = new List <int>();

            foreach (var matratt in Matratter)
            {
                //check for duplicates, either update amount or create new
                if (existingMatrattId.Contains(matratt.MatrattId))
                {
                    BestallningMatratt existingBestallningmatratt = _context.BestallningMatratts.SingleOrDefault(x => x.BestallningId == currentBestallning.BestallningId && x.MatrattId == matratt.MatrattId);
                    existingBestallningmatratt.Antal++;
                    _context.BestallningMatratts.Update(existingBestallningmatratt);
                }
                else
                {
                    existingMatrattId.Add(matratt.MatrattId);
                    BestallningMatratt bestallningmatratt = new BestallningMatratt();
                    bestallningmatratt.BestallningId = currentBestallning.BestallningId;
                    bestallningmatratt.MatrattId     = matratt.MatrattId;
                    bestallningmatratt.Antal         = 1;

                    _context.BestallningMatratts.Add(bestallningmatratt);
                }

                _context.SaveChanges();
            }

            //empty cart
            HttpContext.Session.Remove("ProductCart");

            return(View("Accepted"));
        }
Esempio n. 12
0
        public void AddBestallningMatrattRelationToDb(Bestallning currentOrder, List <Matratt> dishesToOrderDb, IEnumerable <int> dishesIdnWithoutDuplicates)
        {
            foreach (var dishId in dishesIdnWithoutDuplicates)
            {
                var bestallningMatrattRelation = new BestallningMatratt
                {
                    BestallningId = currentOrder.BestallningId,
                    MatrattId     = dishId,
                    Antal         = dishesToOrderDb.Count(dish => dish.MatrattId == dishId)
                };

                _context.BestallningMatratt.Add(bestallningMatrattRelation);
            }
        }
Esempio n. 13
0
        public IActionResult UserCheckout(UserViewModel model)
        {
            Bestallning newOrder = new Bestallning();

            newOrder.Totalbelopp      = model.CurrentOrder.Totalbelopp;
            newOrder.BestallningDatum = DateTime.Now;
            newOrder.Id        = model.CurrentOrder.Id;
            newOrder.Levererad = false;

            _context.Add(newOrder);
            _context.SaveChanges();

            int orderID = _context.Bestallnings.Where(b => b.Id == newOrder.Id).OrderByDescending(b => b.BestallningDatum).First().BestallningId;

            //Hämta de som finns i varukorgen
            var jsonCart = HttpContext.Session.GetString("cart");

            //Konvertera dvs göra om till en lista med produkter. Jämför med JSON.parse men med .NET-kod istället
            var foodcart = JsonConvert.DeserializeObject <List <Matratt> >(jsonCart);

            var orderedFoodCart = from f in foodcart
                                  group f by f.MatrattId into g
                                  select new { MatrattId = g.Key, Count = g.Count() };

            foreach (var item in orderedFoodCart)
            {
                BestallningMatratt newItem = new BestallningMatratt(orderID, item.MatrattId, item.Count);
                _context.Add(newItem);
            }
            _context.SaveChanges();

            if (User.IsInRole("PremiumUser"))
            {
                AspNetUser user = _context.AspNetUsers.SingleOrDefault(u => u.Id == newOrder.Id);
                user.Points = model.CurrentUser.Points;
                _context.Update(user);
                _context.SaveChanges();
            }

            model.CurrentOrder.BestallningId = orderID;
            model.CurrentUser.Id             = newOrder.Id;

            HttpContext.Session.Clear(); //För att inte gammal beställnings-data ska ligga kvar i session om man gör en ny beställning

            return(View("UserNewOrderMessage", model));
        }
        public IActionResult CompleteOrder(int totalBelopp)
        {
            var user     = HttpContext.Session.GetString("loginCustomer");
            var dishList = HttpContext.Session.GetString("selectedDishes");

            List <Matratt>            dishes        = JsonConvert.DeserializeObject <List <Matratt> >(dishList);
            Bestallning               best          = new Bestallning();
            List <Matratt>            addedDishes   = new List <Matratt>();
            List <BestallningMatratt> orderedDishes = new List <BestallningMatratt>();

            foreach (var dish in dishes)
            {
                if (addedDishes.Select(d => d.MatrattNamn).Contains(dish.MatrattNamn))
                {
                    orderedDishes.Single(d => d.MatrattId == dish.MatrattId).Antal++;
                }
                else
                {
                    addedDishes.Add(dish);
                    BestallningMatratt bM = new BestallningMatratt();

                    bM.Antal     = 1;
                    bM.MatrattId = _context.Matratt.Single(m => m.MatrattId == dish.MatrattId).MatrattId;
                    orderedDishes.Add(bM);
                }
            }
            foreach (var order in orderedDishes)
            {
                best.BestallningMatratt.Add(order);
            }

            best.Kund             = _context.Kund.Single(k => k.AnvandarNamn == user);
            best.Levererad        = false;
            best.Totalbelopp      = totalBelopp;
            best.BestallningDatum = DateTime.Now;

            _context.Bestallning.Add(best);
            _context.SaveChanges();

            //Remove from session
            HttpContext.Session.Remove("selectedDishes");

            return(View("ViewDishes"));
        }
Esempio n. 15
0
        // köp
        public async Task <IActionResult> Buy()
        {
            ApplicationUser user = await _userManager.GetUserAsync(User);

            var cartItems  = hamtaCartItems();
            int totalPrice = cartItems.Sum(x => x.Pris);


            var kunden = _context.Kunds.FirstOrDefault(x => x.Email == user.Email);

            var order = new Bestallning()
            {
                BestallningDatum = DateTime.Now,
                Levererad        = false,
                Totalbelopp      = totalPrice,
                KundId           = kunden.KundId
            };

            _context.Bestallnings.Add(order);
            _context.SaveChanges();

            var sortedList = cartItems.GroupBy(m => m.MatrattId).Select(m => m.First()).ToList();

            foreach (var item in sortedList)
            {
                var ratt = new BestallningMatratt()
                {
                    MatrattId     = item.MatrattId,
                    BestallningId = order.BestallningId,
                    Antal         = cartItems.Where(m => m.MatrattId == item.MatrattId).ToList().Count
                };

                _context.BestallningMatratts.Add(ratt);
                _context.SaveChanges();
            }



            _context.SaveChanges();

            HttpContext.Session.SetString("cart", "");

            return(View("Tack", cartItems));
        }
Esempio n. 16
0
        public IActionResult Checkout(List <Matratt> order)
        {
            var customer = int.Parse(HttpContext.Session.GetString("UserId"));

            if (HttpContext.Session.GetString("Varukorg") == null)
            {
                return(RedirectToAction("Order"));
            }

            var            sessionValue = HttpContext.Session.GetString("Varukorg");
            List <Matratt> matLista     = JsonConvert.DeserializeObject <List <Matratt> >(sessionValue);

            var best = new Bestallning()
            {
                Totalbelopp      = matLista.Sum(x => x.Pris),
                BestallningDatum = DateTime.Now,
                Levererad        = false,
                KundId           = customer
            };

            _context.Bestallning.Add(best);

            var tempList = matLista.OrderBy(x => x.MatrattId);

            foreach (var item in tempList.Select(x => x.MatrattId).Distinct())
            {
                var b1 = new BestallningMatratt()
                {
                    BestallningId = best.BestallningId,
                    MatrattId     = item,
                    Antal         = matLista.Count(z => z.MatrattId == item)
                };

                _context.BestallningMatratt.Add(b1);
            }

            _context.SaveChanges();


            return(View(matLista));
        }
        //Hämtar sessionsvariablerna, lägger in all data till objekten och sparar ner till databasen, sedan visar den en vy med en bekräftelse.
        public IActionResult ShowOrder()
        {
            Kund sessionsKund = new Kund();

            var tempMatratt = HttpContext.Session.GetString("Matratt");
            var beställning = JsonConvert.DeserializeObject <Bestallning>(tempMatratt);

            var tempLogin = HttpContext.Session.GetString("Login");
            var Kund      = JsonConvert.DeserializeObject <Kund>(tempLogin);

            sessionsKund = Kund;

            Bestallning nyBeställning = new Bestallning();

            BestallningMatratt nyBeställningMaträtt = new BestallningMatratt();

            nyBeställning.BestallningDatum = DateTime.Now;
            nyBeställning.Totalbelopp      = beställning.BestallningMatratt.Sum(x => x.Antal * x.Matratt.Pris);
            nyBeställning.KundId           = sessionsKund.KundId;

            _context.Bestallning.Add(nyBeställning);
            _context.SaveChanges();

            foreach (var item in beställning.BestallningMatratt)
            {
                nyBeställningMaträtt.MatrattId   = item.MatrattId;
                nyBeställningMaträtt.Antal       = item.Antal;
                nyBeställningMaträtt.Bestallning = nyBeställning;
                _context.BestallningMatratt.Add(nyBeställningMaträtt);
                _context.SaveChanges();
            }

            OrderVM orderVM = new OrderVM();

            orderVM.kund = sessionsKund;

            orderVM.beställning = beställning;

            return(View(orderVM));
        }
        // sparar alla valda maträtter i en sessionsvariabel
        public IActionResult AddToCart(int id)
        {
            var matratt = _context.Matratt.SingleOrDefault(x => x.MatrattId == id);

            Bestallning beställning;

            if (HttpContext.Session.GetString("Matratt") == null)
            {
                beställning = new Bestallning()
                {
                    BestallningMatratt = new List <BestallningMatratt>()
                };
            }
            else
            {
                var temp = HttpContext.Session.GetString("Matratt");
                beställning = JsonConvert.DeserializeObject <Bestallning>(temp);
            }

            BestallningMatratt bestallningMatratt = new BestallningMatratt();

            bestallningMatratt.Matratt   = matratt;
            bestallningMatratt.Antal     = 1;
            bestallningMatratt.MatrattId = matratt.MatrattId;

            if (beställning.BestallningMatratt.Any(x => x.MatrattId == matratt.MatrattId))
            {
                beställning.BestallningMatratt.Where(x => x.MatrattId == matratt.MatrattId).First().Antal++;
            }
            else
            {
                beställning.BestallningMatratt.Add(bestallningMatratt);
            }

            var serializedValue = JsonConvert.SerializeObject(beställning);

            HttpContext.Session.SetString("Matratt", serializedValue);

            return(PartialView("_CartViewPartial", beställning.BestallningMatratt));
        }
Esempio n. 19
0
        public PartialViewResult AddToCart(int productId, string returnUrl)
        {
            var product = _productRepository.GetSingleProduct(productId);

            var order = GetCart();

            // Check if product exist in cart => add qty 1
            if (order.BestallningMatratt.Any(x => x.MatrattId == productId))
            {
                order.BestallningMatratt.Single(x => x.MatrattId == productId).Antal += 1;
            }
            else
            {
                var newProd = new BestallningMatratt()
                {
                    Antal   = 1,
                    Matratt = new Matratt()
                    {
                        MatrattNamn = product.MatrattNamn,
                        Pris        = product.Pris
                    }, // Selfreference without this line
                    MatrattId = productId
                };
                order.BestallningMatratt.Add(newProd);
            }

            var points = _customerRepository.GetSingleCustomer(_userManager.GetUserName(User)).Poang;

            order.Totalbelopp = order.ComputeTotalValue(GetUserRole(), points, order.BestallningMatratt.Sum(p => p.Antal));

            SetCart(order);

            var model = new CartIndexViewModel()
            {
                Cart           = order,
                CartTotalValue = order.Totalbelopp
            };

            return(PartialView("_CartSumPartial", model));
        }
        public void SaveBestallningMatratter(List <Matratt> matratter)
        {
            var bestallningsmatrattlista = new List <BestallningMatratt>();
            var id          = 0;
            var first       = 0;
            var count       = 0;
            var nymatratter = matratter.OrderBy(r => r.MatrattNamn).ToList();

            using (TomasosContext db = new TomasosContext())
            {
                var listbestallning = db.Bestallning.OrderByDescending(r => r.BestallningDatum).ToList();
                for (var i = 0; i < nymatratter.Count; i++)
                {
                    if (id != nymatratter[i].MatrattId)
                    {
                        first++;
                        var best = new BestallningMatratt();
                        id = nymatratter[i].MatrattId;
                        best.BestallningId = listbestallning[0].BestallningId;
                        best.MatrattId     = nymatratter[i].MatrattId;
                        best.Antal         = 1;
                        bestallningsmatrattlista.Add(best);
                    }
                    else if (id == nymatratter[i].MatrattId)
                    {
                        count = first - 1;
                        bestallningsmatrattlista[count].Antal++;
                    }
                }
                foreach (var item in bestallningsmatrattlista)
                {
                    db.Add(item);
                    db.SaveChanges();
                }
            }
        }
Esempio n. 21
0
        public async Task <IActionResult> ConfirmOrder()
        {
            List <Matratt> cart;
            var            currentUser = await _userManager.GetUserAsync(HttpContext.User);

            if (string.IsNullOrEmpty(HttpContext.Session.GetString(sessionName)))
            {
                return(RedirectToAction("Menu", "Store"));
            }
            else
            {
                var temp = HttpContext.Session.GetString(sessionName);
                cart = JsonConvert.DeserializeObject <List <Matratt> >(temp);

                var            cartDistinct        = cart.Select(x => x.MatrattId).Distinct().ToList(); // Plockar ut distinkta MatrattID ur cart
                List <Matratt> cartDistinctMatratt = new List <Matratt>();                              // Konverterar distincta IDn till typen Matratt

                foreach (var item in cartDistinct)                                                      // Lägger till matratt i lista av distinkta maträtter
                {
                    var query = (from c in cart where c.MatrattId == item select c).First();
                    cartDistinctMatratt.Add(query);
                }

                var order = new Bestallning // Skapar en grundbeställning
                {
                    KundId           = currentUser.Id,
                    BestallningDatum = DateTime.Now,
                    Totalbelopp      = cart.Sum(x => x.Pris),
                    Levererad        = false
                };

                if (User.IsInRole("premium"))
                {
                    if (cart.Count >= 3)
                    {
                        order.Totalbelopp = Convert.ToInt32(order.Totalbelopp * .8);
                    }

                    foreach (var item in cart)
                    {
                        currentUser.Points += 10;
                    }

                    if (currentUser.Points >= 100)
                    {
                        var cheapest = cart.OrderBy(x => x.Pris).First();
                        cart.First(x => x.MatrattId == cheapest.MatrattId).Pris = 0;
                        currentUser.Points -= 100;
                    }

                    _applicationContext.SaveChanges();
                }

                _tomasosContext.Bestallning.Add(order);

                var bestallningMatratt = new BestallningMatratt();

                foreach (var item in cartDistinctMatratt)
                {
                    bestallningMatratt = new BestallningMatratt
                    {
                        BestallningId = order.BestallningId,
                        Antal         = cart.Where(x => x.MatrattId == item.MatrattId).Count(),
                        MatrattId     = item.MatrattId
                    };

                    _tomasosContext.BestallningMatratt.Add(bestallningMatratt);
                }

                _tomasosContext.SaveChanges();
                _tomasosContext.Dispose();
            }

            return(RedirectToAction("Orders", "User"));
        }
Esempio n. 22
0
 public void CreateOrderConnection(TomasosContext context, BestallningMatratt connection)
 {
     context.Add(connection);
     context.SaveChanges();
 }
Esempio n. 23
0
        public IActionResult ConfirmOrder()
        {
            var    serializedValue = HttpContext.Session.GetString("Varukorg");
            var    cart            = JsonConvert.DeserializeObject <List <BestallningMatratt> >(serializedValue);
            int    sum             = cart.Sum(x => x.Matratt.Pris * x.Antal);
            int    points          = cart.Sum(x => x.Antal * 10);
            double discount        = 1;

            if (cart.Sum(x => x.Antal) >= 3)
            {
                discount = 0.8;
            }
            var         customer = _context.Kund.SingleOrDefault(k => k.AnvandarNamn == _userManager.GetUserName(User));
            Bestallning newOrder;

            if (User.IsInRole("Premium"))
            {
                if (customer.Poang >= 100)
                {
                    double freeDish = cart.Max(x => x.Matratt.Pris);
                    newOrder = new Bestallning()
                    {
                        BestallningDatum = DateTime.Now,
                        Totalbelopp      = (int)((sum * discount) - (freeDish * discount)),
                        Levererad        = false,
                        KundId           = customer.KundID
                    };
                    customer.Poang -= 100;
                }

                else
                {
                    newOrder = new Bestallning()
                    {
                        BestallningDatum = DateTime.Now,
                        Totalbelopp      = (int)(sum * discount),
                        Levererad        = false,
                        KundId           = customer.KundID
                    };
                }
                customer.Poang += points;
            }

            else
            {
                newOrder = new Bestallning()
                {
                    BestallningDatum = DateTime.Now,
                    Totalbelopp      = (int)sum,
                    Levererad        = false,
                    KundId           = customer.KundID
                };
            }


            _context.Bestallning.Add(newOrder);

            _context.SaveChanges();

            foreach (var item in cart)
            {
                var newBeställningMaträtt = new BestallningMatratt()
                {
                    BestallningId = newOrder.BestallningId,
                    MatrattId     = item.MatrattId,
                    Antal         = item.Antal
                };
                _context.BestallningMatratt.Add(newBeställningMaträtt);
            }

            _context.SaveChanges();
            HttpContext.Session.Clear();


            return(RedirectToAction("Menu"));
        }