public async Task <IActionResult> Create([Bind("WigId,Description,Status,Title,SelectedUserProfiles")] CreateWigViewModel model) { if (ModelState.IsValid) { var wig = new Wig(); wig.Title = model.Title; wig.Description = model.Description; wig.Status = model.Status; wig.DateCreated = DateTime.Now; _context.Add(wig); if (model.SelectedUserProfiles != null) { foreach (var i in model.SelectedUserProfiles) { var uw = new UserWig(); uw.WigId = wig.WigId; uw.UserProfileId = i; _context.Add(uw); } } await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(model)); }
public async Task <IActionResult> Edit(int id, [Bind("WigId,DateCreated,Description,Status,Title")] Wig wig, List <int> SelectedUserProfiles) { if (id != wig.WigId) { return(NotFound()); } if (ModelState.IsValid) { try { // Get the Source Wig with corresponding user profile data var myWig = await _context.Wig .Include(u => u.UserWigs) .SingleOrDefaultAsync(m => m.WigId == id); myWig.Title = wig.Title; myWig.Description = wig.Description; myWig.Status = wig.Status; //removes users that are already there and not in new list foreach (UserWig uw in myWig.UserWigs.ToList()) { if (!SelectedUserProfiles.Contains(uw.UserProfileId)) { myWig.UserWigs.Remove(uw); } } // Add the new ones foreach (int i in SelectedUserProfiles) { if (!myWig.UserWigs.Any(u => u.UserProfileId == i)) { var newUserWig = new UserWig { UserProfileId = i, WigId = id }; myWig.UserWigs.Add(newUserWig); } } // Save Changes await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!WigExists(wig.WigId)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Index")); } return(View(wig)); }