public void Commit() { dataContext.SaveChanges(); }
public void SaveChanges() { bibContext.SaveChanges(); }
public async Task <IActionResult> Edit(String id, [Bind("UserName, Email")] Benutzer model, String Role) { if (ModelState.IsValid) { try { var user = await userManager.FindByIdAsync(id); var newName = user.UserName; if (model.UserName == null) // Fall: Benutzername ist leer. { toastNotification.AddToastMessage("Kein Benutzername eingegeben", "Es muss ein Benutzername vergeben werden.", ToastEnums.ToastType.Error, new ToastOption() { PositionClass = ToastPositions.TopCenter }); return(RedirectToAction(nameof(Edit))); } else if (model.Email == null) // Fall: Email ist leer. { toastNotification.AddToastMessage("Kein Email eingegeben", "Es muss eine Email-Adresse vergeben werden.", ToastEnums.ToastType.Error, new ToastOption() { PositionClass = ToastPositions.TopCenter }); return(RedirectToAction(nameof(Edit))); } else { // Fall: Der Benutzername wurde geändert. if (model.UserName != newName) { var userExist = bibContext.Benutzer.SingleOrDefault(b => b.UserName == model.UserName); // Fall: Der neue Benutzername existiert bereits in der Datenbank. if (userExist != null) { toastNotification.AddToastMessage("Benutzername bereits vergeben", "Der Benutzername \"" + model.UserName + "\" ist bereits vergeben.", ToastEnums.ToastType.Error, new ToastOption() { PositionClass = ToastPositions.TopCenter }); return(RedirectToAction(nameof(Edit))); } // Alle bisherigern Referenzen auf den neuen Namen ändern var warenkorb = bibContext.Warenkorb.Where(e => e.Benutzer.Equals(user.UserName)); foreach (var warenkorbExemplar in warenkorb) { warenkorbExemplar.Benutzer = model.UserName; bibContext.Warenkorb.Update(warenkorbExemplar); } var leihauftraege = bibContext.Leihauftrag.Where(e => e.Benutzer.Equals(user.UserName)); foreach (var leihauftrag in leihauftraege) { leihauftrag.Benutzer = model.UserName; bibContext.Leihauftrag.Update(leihauftrag); } await bibContext.SaveChangesAsync(); var setNameResult = await userManager.SetUserNameAsync(user, model.UserName); } // Fall: Die Email-Adresse wurde geändert if (user.Email != model.Email) { await userManager.SetEmailAsync(user, model.Email); } // Rolle des Benutzers wird für die Datenbank aktualisiert if (Role == "Admin") { var role = await userManager.GetRolesAsync(user); await userManager.RemoveFromRolesAsync(user, role); await userManager.AddToRoleAsync(user, "Admin"); user.Role = "Admin"; bibContext.Update(user); bibContext.SaveChanges(); toastNotification.AddToastMessage("Benutzerdaten geändert", "Die Benutzerdaten von \"" + user.UserName + "\" wurden geändert.", ToastEnums.ToastType.Success, new ToastOption() { PositionClass = ToastPositions.TopCenter }); return(RedirectToAction(nameof(Index))); } if (Role == "Member") { var role = await userManager.GetRolesAsync(user); await userManager.RemoveFromRolesAsync(user, role); await userManager.AddToRoleAsync(user, "Member"); user.Role = "Member"; bibContext.Update(user); bibContext.SaveChanges(); toastNotification.AddToastMessage("Benutzerdaten geändert", "Der Benutzerdaten von \"" + user.UserName + "\" wurden geändert.", ToastEnums.ToastType.Success, new ToastOption() { PositionClass = ToastPositions.TopCenter }); return(RedirectToAction(nameof(Index))); } } return(RedirectToAction(nameof(Index))); } catch (DbUpdateConcurrencyException) { throw; } } return(RedirectToAction(nameof(Index))); }