public async Task <IActionResult> ManageBenutzer() { var user = await userManager.GetUserAsync(User); var model = new ManageBenutzerModel { Benutzername = user.UserName, Email = user.Email }; return(View(model)); }
public async Task <IActionResult> ManageBenutzer([Bind("Benutzername, Email")] ManageBenutzerModel model) { if (!ModelState.IsValid) { var benutzer = await userManager.GetUserAsync(User); model.Benutzername = benutzer.UserName; model.Email = benutzer.Email; return(View(model)); } var user = await userManager.GetUserAsync(User); var oldName = user.UserName; if (model.Benutzername == 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(ManageBenutzer))); } 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(ManageBenutzer))); } else { string message = ""; // Fall: Der Benutzername wurde geändert if (model.Benutzername != oldName) { var userExist = bibContext.Benutzer.SingleOrDefault(b => b.UserName == model.Benutzername); // Prüft, ob der Benutzername bereits in der Datenbank vorhanden ist. if (userExist != null) { toastNotification.AddToastMessage("Benutzername vergeben", "Der Benutzername \"" + model.Benutzername + "\" ist bereits vergeben.", ToastEnums.ToastType.Error, new ToastOption() { PositionClass = ToastPositions.TopCenter }); return(RedirectToAction(nameof(ManageBenutzer))); } // Alle bisherigern Referenzen auf den Namen ändern var warenkorb = bibContext.Warenkorb.Where(e => e.Benutzer.Equals(user.UserName)); foreach (var item in warenkorb) { item.Benutzer = model.Benutzername; bibContext.Warenkorb.Update(item); } var leihauftraege = bibContext.Leihauftrag.Where(e => e.Benutzer.Equals(user.UserName)); foreach (var leihauftrag in leihauftraege) { leihauftrag.Benutzer = model.Benutzername; bibContext.Leihauftrag.Update(leihauftrag); } await bibContext.SaveChangesAsync(); await userManager.SetUserNameAsync(user, model.Benutzername); message += "Der Benutzername wurde in \"" + model.Benutzername + "\" geändert."; } var oldEmail = user.Email; // Fall: Email wurde gändert if (model.Email != oldEmail) { await userManager.SetEmailAsync(user, model.Email); message += " Die Email wurde in \"" + model.Email + "\" geändert."; } if (model.Benutzername != oldName || model.Email != oldEmail) { toastNotification.AddToastMessage("Benutzerdaten geändert", message, ToastEnums.ToastType.Success, new ToastOption() { PositionClass = ToastPositions.TopCenter }); } } return(RedirectToAction("Index", "Home")); }