public void Commit()
 {
     dataContext.SaveChanges();
 }
Exemple #2
0
 public void SaveChanges()
 {
     bibContext.SaveChanges();
 }
Exemple #3
0
        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)));
        }