コード例 #1
0
        public async Task <IActionResult> ManageBenutzer()
        {
            var user = await userManager.GetUserAsync(User);

            var model = new ManageBenutzerModel
            {
                Benutzername = user.UserName,
                Email        = user.Email
            };

            return(View(model));
        }
コード例 #2
0
        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"));
        }