private void RegisterUser(PasswordBox sender) { using (var context = new BookOrdersContext()) { using (DbContextTransaction transaction = context.Database.BeginTransaction(IsolationLevel.RepeatableRead)) { try { NewUser.Login = Regex.Replace(NewUser.Login.Trim(), @"\s+", " "); NewUser.Password = _BCrypt.HashPassword(sender.Password.Trim(), 12); context.Users.Add(NewUser); context.SaveChanges(); transaction.Commit(); } catch (Exception e) { Exception innerException = e; while (innerException?.InnerException != null) { innerException = innerException.InnerException; } transaction.Rollback(); MessageBox.Show(innerException?.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } RegisterConfirmed?.Invoke(NewUser); } } }
private static void PreviewKeyDown(object eventArgs) { var tempEventArgs = (object[])eventArgs; if (!(tempEventArgs[0] is KeyEventArgs e && tempEventArgs[1] is DataGrid sender)) { throw new ArgumentException("Bad arguments in PreviewKeyDown"); } switch (e.Key) { case Key.Escape: sender.CancelEdit(); sender.CancelEdit(); return; case Key.Delete: if (!(sender.SelectedItem is Genre genre)) { return; } using (var context = new BookOrdersContext()) { context.Genres.Attach(genre); context.Genres.Remove(genre); context.SaveChanges(); } return; } }
protected static void PreviewKeyDown(object eventArgs) { var tempEventArgs = (object[])eventArgs; if (!(tempEventArgs[0] is KeyEventArgs e && tempEventArgs[1] is DataGrid sender)) { throw new ArgumentException("Bad arguments in PreviewKeyDown"); } switch (e.Key) { case Key.Escape: sender.CancelEdit(); sender.CancelEdit(); return; case Key.Delete: if (!(sender.SelectedItem is TEntity entity)) { return; } using (var context = new BookOrdersContext()) { try { PropertyInfo property = context.GetType().GetProperty(typeof(TEntity).Name.Replace("And", "sAnd") + 's'); if (property != null) { ((DbSet <TEntity>)property.GetValue(context)).Attach(entity); ((DbSet <TEntity>)property.GetValue(context)).Remove(entity); } context.SaveChanges(); } catch (DbUpdateException exception) { if (!(exception.InnerException is UpdateException innerException)) { throw; } if (!(innerException.InnerException is Npgsql.PostgresException innerInnerException)) { throw; } if (innerInnerException.SqlState == "23503") { MessageBox.Show(innerInnerException.MessageText, "Error", MessageBoxButton.OK, MessageBoxImage.Error); e.Handled = true; } else { throw; } } } return; } }
private static void PreviewKeyDown(object eventArgs) { var tempEventArgs = (object[])eventArgs; if (!(tempEventArgs[0] is KeyEventArgs e && tempEventArgs[1] is DataGrid sender)) { throw new ArgumentException("Bad arguments in PreviewKeyDown"); } switch (e.Key) { case Key.Escape: sender.CancelEdit(); sender.CancelEdit(); return; case Key.Delete: if (!(sender.SelectedItem is LiteratureType literatureType)) { return; } using (var context = new BookOrdersContext()) { try { context.LiteratureTypes.Attach(literatureType); context.LiteratureTypes.Remove(literatureType); context.SaveChanges(); } catch (DbUpdateException exception) { if (!(exception.InnerException is UpdateException innerException)) { throw; } if (!(innerException.InnerException is Npgsql.PostgresException innerInnerException)) { throw; } if (innerInnerException.SqlState == "23503") { MessageBox.Show("There are some genres that link to this literature type. Delete them first.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); e.Handled = true; } else { throw; } } } return; } }
protected static void DataGridRowEditEnding(object eventArgs) { var tempEventArgs = (object[])eventArgs; if (!(tempEventArgs[0] is DataGridRowEditEndingEventArgs e && tempEventArgs[1] is DataGrid sender)) { throw new ArgumentException("Bad arguments in PreviewKeyDown"); } if (e.EditAction == DataGridEditAction.Cancel || !(e.Row.Item is TEntity entity) || !entity.Validator.IsValid || !entity.IsDirty) { return; } using (var context = new BookOrdersContext()) { try { if (e.Row.IsNewItem) { PropertyInfo property = context.GetType().GetProperty(typeof(TEntity).Name.Replace("And", "sAnd") + 's'); if (property != null) { ((DbSet <TEntity>)property.GetValue(context)).Add(entity); } } else { context.Entry(entity).State = EntityState.Modified; } context.SaveChanges(); } catch (Exception exception) { sender.CancelEdit(); sender.CancelEdit(); Exception innerException = exception; while (innerException?.InnerException != null) { innerException = innerException.InnerException; } MessageBox.Show(innerException?.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } }
private void AddNewEntity(object sender) { using (var context = new BookOrdersContext()) { using (DbContextTransaction transaction = context.Database.BeginTransaction(IsolationLevel.RepeatableRead)) { try { if (!Publishers.Any(NewPublisher.Equals)) { context.Publishers.Add(NewPublisher); } NewBook.PublisherId = NewPublisher.Id; if (!Books.Any(NewBook.Equals)) { context.Books.Add(NewBook); } if (!Authors.Any(NewAuthor.Equals)) { NewAuthor.Id = 0; context.Authors.Add(NewAuthor); } NewBookAndAuthor.AuthorId = NewAuthor.Id; NewBookAndAuthor.ISBN = NewBook.ISBN; context.BooksAndAuthors.Add(NewBookAndAuthor); context.SaveChanges(); transaction.Commit(); } catch (Exception e) { Exception innerException = e; while (innerException?.InnerException != null) { innerException = innerException.InnerException; } transaction.Rollback(); MessageBox.Show(innerException?.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } AddedNewEntity?.Invoke(); } } }
private static void DataGridRowEditEnding(DataGridRowEditEndingEventArgs e) { if (e.EditAction == DataGridEditAction.Cancel || !(e.Row.Item is Genre genre) || !genre.Validator.IsValid || !genre.IsDirty) { return; } using (var context = new BookOrdersContext()) { if (e.Row.IsNewItem) { context.Genres.Add(genre); } else { context.Entry(genre).State = EntityState.Modified; } context.SaveChanges(); } }