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")); }