public ActionResult Edit(EditViewModelClientsManager model, IEnumerable <string> selectedCurrentUsers, IEnumerable <string> SelectedOtherUsers) { if (ModelState.IsValid) { //Remove users from clients if (selectedCurrentUsers != null) { foreach (var selectedCurrentUser in selectedCurrentUsers) { int selectedCurrentUserID = Convert.ToInt32(selectedCurrentUser); var selectedCurrentUserLicense = db.Licenses.Where(s => s.ClientID == model.ID) .Where(s => s.UserID == selectedCurrentUserID).FirstOrDefault(); selectedCurrentUserLicense.ClientID = null; selectedCurrentUserLicense.UserID = null; db.SaveChanges(); } } //Add users to clients if (SelectedOtherUsers != null) { List <License> unassignedLicenses = db.Licenses.Where(s => s.UserID == null).ToList(); int unassignedLicensesCounter = 0; foreach (var SelectedOtherUser in SelectedOtherUsers) { if (unassignedLicenses.Count() <= 5) { NewLicenseMaker(5); unassignedLicenses = db.Licenses.Where(s => s.UserID == null).ToList(); } int SelectedOtherUserID = Convert.ToInt32(SelectedOtherUser); var selectedCurrentUserLicense = db.Licenses .Where(s => s.UserID == SelectedOtherUserID) .FirstOrDefault(); int selectedCurrentUserRightsID; if (selectedCurrentUserLicense != null) { selectedCurrentUserRightsID = selectedCurrentUserLicense.RightsID; } else { selectedCurrentUserRightsID = 4; } unassignedLicenses[unassignedLicensesCounter].ClientID = model.ID; unassignedLicenses[unassignedLicensesCounter].RightsID = selectedCurrentUserRightsID; unassignedLicenses[unassignedLicensesCounter].UserID = SelectedOtherUserID; unassignedLicensesCounter++; db.SaveChanges(); } } //Create new user for client. Then you need to give License to new user via email if (model.LicenseID != null && model.RightID != null) { List <License> unassignedLicenses = db.Licenses.Where(s => s.UserID == null).ToList(); if (unassignedLicenses.Count() <= 5) { NewLicenseMaker(5); unassignedLicenses = db.Licenses.Where(s => s.UserID == null).ToList(); } unassignedLicenses[0].ClientID = model.ID; unassignedLicenses[0].RightsID = model.RightID.Value; db.SaveChanges(); } return(RedirectToAction("Index")); } else { return(null); } }
// GET: CCS/Clients/Edit/5 public async Task <ActionResult> Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Client client = await db.Clients.FindAsync(id); if (client == null) { return(HttpNotFound()); } else { var users = db.Users.ToList(); List <SelectListItem> currentUsers = new List <SelectListItem>(); List <SelectListItem> otherUsers = new List <SelectListItem>(); List <int> currentUsersID = new List <int>(); foreach (var user in users) { var userLicenses = db.Licenses.Where(s => s.UserID == user.ID).ToList(); int userClientID = 0; foreach (var userLicense in userLicenses) { try { userClientID = userLicense.ClientID.Value; } catch { } var item = new SelectListItem { Value = user.ID.ToString(), Text = user.UserName, Selected = false }; if (userClientID == client.ID) { currentUsers.Add(item); currentUsersID.Add(user.ID); } } if (!currentUsersID.Contains(user.ID)) { var item = new SelectListItem { Value = user.ID.ToString(), Text = user.UserName, Selected = false }; otherUsers.Add(item); } } EditViewModelClientsManager model = new EditViewModelClientsManager(); var dbRightsData = db.Rights.ToList(); var dbLicensesData = db.Licenses.ToList(); model.Rights = GetSelectRightsListItems(dbRightsData); model.Licenses = GetSelectLicensesListItems(dbLicensesData); model.CurrentUsers = currentUsers.OrderBy(s => s.Text); model.OtherUsers = otherUsers.OrderBy(s => s.Text); model.ID = client.ID; model.ClientName = client.Name; model.Active = client.Active; model.ClientNumber = client.ClientNumber.Value; model.NumberOfUsers = db.Licenses.Where(s => s.ClientID == client.ID).Where(s => s.UserID != null).Count(); return(View(model)); } }