public IActionResult DeleteShopping([Bind("Id")] ShoppingRemovalViewModel srvm) { //TODO:check validation after adding it if (ModelState.IsValid) { var dbSingleElements = _context.OrderElements .Where(oe => oe.SCOId == srvm.Id) .ToList(); //TODO: check if multiple savechanges can be removed _context.OrderElements.RemoveRange(dbSingleElements); _context.SaveChanges(); var dbSCOutas = _context.OrdersAssignments .Where(oa => oa.SCOId == srvm.Id) .ToList(); _context.OrdersAssignments.RemoveRange(dbSCOutas); _context.SaveChanges(); _context.ComplexOrders.Remove(new SingleComplexOrder { Id = srvm.Id }); _context.SaveChanges(); return(RedirectToAction("Index", "BudgetManager", null)); } return(PartialView("_finalizeShoppingPartial", srvm)); }
private ShoppingRemovalViewModel GenerateShoppingRemovalModel(int orderId, int currentUserId) { var complexOrderInfo = _context.ComplexOrders .Where(co => co.Id == orderId) .Include(co => co.SCOTeamMemberAssignments) .Include(co => co.OrderElements) .AsNoTracking() .First(); var groupInfo = _context.Teams .Where(t => t.Id == complexOrderInfo.SCOTeamMemberAssignments.First().TeamId) .AsNoTracking() .First(); var singleOrderElementDescriptions = new List <string>(); foreach (var singleElement in complexOrderInfo.OrderElements) { singleOrderElementDescriptions.Add(singleElement.Title + " - " + singleElement.Amount + singleElement.Unit); } var userInformation = _context.Users .Where(u => complexOrderInfo.SCOTeamMemberAssignments.Any(sco => sco.UserId == u.Id)) .Select(u => new { u.Id, u.FullName }) .ToArray(); List <int> userIds = new List <int>(); List <string> userNames = new List <string>(); foreach (var userInfo in userInformation) { userIds.Add(userInfo.Id); userNames.Add(userInfo.FullName); } var removalModel = new ShoppingRemovalViewModel { Id = complexOrderInfo.Id, ExpenseCategory = complexOrderInfo.ExpenseCategory, Subject = complexOrderInfo.Subject, SingleElementDescriptions = singleOrderElementDescriptions.ToArray(), GroupId = groupInfo.Id, GroupName = groupInfo.Name, ParticipantIds = userIds.ToArray(), ParticipantNames = userNames.ToArray() }; return(removalModel); }