public async Task <IActionResult> Edit(int id, EditConversationTypeViewModel editConversationType) { if (id != editConversationType.Id) { return(NotFound()); } if (ModelState.IsValid) { // try // { // _context.Update(conversationType); // await _context.SaveChangesAsync(); // } // catch (DbUpdateConcurrencyException) // { // if (!ConversationTypeExists(conversationType.Id)) // { // return NotFound(); // } // else // { // throw; // } // } // return RedirectToAction("Index"); } return(View(editConversationType)); }
// GET: Schooladmin/ConversationType/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var conversationType = await _context.ConversationTypes.SingleOrDefaultAsync(m => m.Id == id); if (conversationType == null) { return(NotFound()); } var groups = await _context.ConversationTypeClaims.Include(ctc => ctc.Group) .Include(ctc => ctc.ConversationType) .Where(ctc => ctc.ConversationType.Id == id) .Select(ctc => ctc.Group.Id).ToListAsync(); var editConversationType = new EditConversationTypeViewModel { Id = id.Value, Name = conversationType.ConversationName, Duration = conversationType.ConversationDuration, SelectedGroups = groups, Groups = new SelectList(_context.ApplicationUserGroups.OrderBy(g => g.GroupName).ToList(), "Id", "GroupName") }; return(View(editConversationType)); }
// GET: Admin/ConversationType/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var conversationType = await _context.ConversationTypes.Include(ct => ct.School).SingleOrDefaultAsync(m => m.Id == id); if (conversationType == null) { return(NotFound()); } var selectedGroups = await _context.ConversationTypeClaims.Include(ctc => ctc.Group) .Include(ctc => ctc.ConversationType) .Where(ctc => ctc.ConversationType.Id == id) .Select(ctc => ctc.Group.Id).ToListAsync(); var editConversationType = new EditConversationTypeViewModel { Id = id.Value, Name = conversationType.ConversationName, Duration = conversationType.ConversationDuration, SelectedGroups = selectedGroups, School = conversationType.School.Id }; editConversationType.Groups = new List <SelectListItem>(); var groups = _context.ApplicationUserGroups.Include(g => g.School).OrderBy(g => g.GroupName).GroupBy(g => g.School).ToList(); foreach (var groupList in groups) { var selectGroup = new SelectListGroup { Name = groupList.Key.Name, Disabled = false }; foreach (var group in groupList) { ((List <SelectListItem>)editConversationType.Groups).Add(new SelectListItem { Disabled = false, Group = selectGroup, Value = group.Id.ToString(), Text = group.GroupName }); } //((List<SelectListItem>)conversationTypeModel.Groups).Add(new SelectListItem { Text = group.GroupName, Value = group.Id.ToString(), Selected = true }); } editConversationType.Schools = new SelectList(_context.Schools.ToList(), "Id", "Name"); return(View(editConversationType)); }
public async Task <IActionResult> Edit(int id, EditConversationTypeViewModel model) { if (id != model.Id) { return(NotFound()); } if (ModelState.IsValid) { var origionalConversationType = _context.ConversationTypes.First(ct => ct.Id == id); var conversationType = new ConversationType { Id = model.Id, ConversationName = model.Name }; if ( !_context.Conversations.Include(c => c.ConversationType) .Any(cpd => cpd.ConversationType.Id == id)) { conversationType.ConversationDuration = model.Duration; conversationType.School = _context.Schools.First(s => s.Id == model.School); } var conversationTypeClaimsGroups = _context.ConversationTypeClaims.Include(ctc => ctc.Group) .Include(ctc => ctc.ConversationType) .Where(ctc => ctc.ConversationType.Id == id) .Select(ctc => ctc.Group) .ToList(); List <ApplicationUserGroup> modelGroups = new List <ApplicationUserGroup>(); foreach (var selectedGroup in model.SelectedGroups) { modelGroups.Add(_context.ApplicationUserGroups.First(g => g.Id == selectedGroup)); } var removeGroups = conversationTypeClaimsGroups.Except(modelGroups).ToList(); foreach (var group in removeGroups) { if (!_context.Conversations.Include(c => c.ConversationType).Include(c => c.Group).Any(c => c.Group == group && c.ConversationType == origionalConversationType)) { var conversationTypeClaim = _context.ConversationTypeClaims.SingleOrDefault(ctc => ctc.ConversationType == origionalConversationType && ctc.Group == group); if (conversationTypeClaim != null) // It shouldn't be null but just incase { _context.ConversationTypeClaims.Remove(conversationTypeClaim); } } } var AddGroups = modelGroups.Except(conversationTypeClaimsGroups).ToList(); foreach (var group in AddGroups) { _context.ConversationTypeClaims.Add(new ConversationTypeClaim { ConversationType = conversationType, Group = group }); } _context.Update(conversationType); await _context.SaveChangesAsync(); // try // { // _context.Update(conversationType); // await _context.SaveChangesAsync(); // } // catch (DbUpdateConcurrencyException) // { // if (!ConversationTypeExists(conversationType.Id)) // { // return NotFound(); // } // else // { // throw; // } // } // return RedirectToAction("Index"); } return(View(model)); }