public async Task <IActionResult> Edit(int id, [Bind("EventId,UserId,EventCreator,EventMembers,DeclinedMembers,Subject,Description,Location,StartTime,EndTime,IsFullDay")] Event @event) { if (id != @event.EventId) { return(NotFound()); } if (ModelState.IsValid) { try { @event.SchedulerUser = await _userManager.GetUserAsync(HttpContext.User); // Find current User //Lowercase all members @event.EventMembers = @event.EventMembers.ConvertAll(d => d.ToLower()); // Checks current event. Initialize new list for updated Declined members. // Add current members that have already declined event to new declined list. // This removes declinded member count for event members that have been removed during edit. // Not required for event creator as they cannot be edited. Once declined it is final (shown as +1 in delete confirmed). var currentEvent = await _context.Events .AsNoTracking() .FirstOrDefaultAsync(e => e.EventId == id); List <string> currentDeclindedMembers = new List <string>(); foreach (var e in @event.EventMembers) { foreach (var d in currentEvent.DeclinedMembers) { if (e == d) { currentDeclindedMembers.Add(e); } } } @event.DeclinedMembers = currentDeclindedMembers; _context.Update(@event); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EventExists(@event.EventId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(@event)); }