protected override void ViewItemDetailsAsync(bool isNew = false) { ItemDetailsVM.ActiveItem = isNew || SelectedItem is null ? new InternalDocument() : Utils.CloneObject(SelectedItem); bool?dialogOpenResult = ItemDetailsWnd.ShowDialog(); if (dialogOpenResult != true) { return; } using (var context = new DatabaseContext()) { using (var transaction = context.Database.BeginTransaction()) { try { ItemDetailsVM.ActiveItem.AddresseeId = ItemDetailsVM.ActiveItem.Addressee.Id; ItemDetailsVM.ActiveItem.AddresserId = ItemDetailsVM.ActiveItem.Addresser.Id; ItemDetailsVM.ActiveItem.Execution.ExecutorId = ItemDetailsVM.ActiveItem.Execution.Executor.Id; context.InternalDocuments.Attach(ItemDetailsVM.ActiveItem); context.SaveChanges(); if (isNew) { Items.Add(ItemDetailsVM.ActiveItem); Logger.Debug(Properties.Resources.LoggerAddedNewIntDoc); } else { int index = Items.IndexOf(SelectedItem); if (index >= 0 && Items.Count > index) { Items[index] = ItemDetailsVM.ActiveItem; } Logger.Debug(Properties.Resources.LoggerUpdatedIntDoc); } transaction.Commit(); Logger.Debug(Properties.Resources.LoggerTransactionUpdatedIntDocExecuted); } catch (Exception e) { Logger.Debug(Properties.Resources.LoggerTransactionUpdatedIntDocError); Logger.Error(e.StackTrace); transaction.Rollback(); } } } }
protected override void ViewItemDetailsAsync(bool isNew = false) { ItemDetailsVM.ActiveItem = isNew || SelectedItem is null ? new Employee() : Utils.CloneObject(SelectedItem); if (ItemDetailsWnd.ShowDialog() == true) { using (var context = new DatabaseContext()) { using (var transaction = context.Database.BeginTransaction()) { try { if (isNew) { context.Employees.Add(ItemDetailsVM.ActiveItem); context.SaveChanges(); Items.Add(ItemDetailsVM.ActiveItem); Logger.Debug(Properties.Resources.LoggerAddedNewEmployee); } else { context.SaveChanges(); int index = Items.IndexOf(SelectedItem); if (index >= 0 && Items.Count > index) { Items[index] = ItemDetailsVM.ActiveItem; } Logger.Debug(Properties.Resources.LoggerUpdatedEmployee); } transaction.Commit(); Logger.Debug(Properties.Resources.LoggerTransactionUpdatedEmployeeExecuted); } catch (Exception e) { Logger.Debug(Properties.Resources.LoggerTransactionUpdatedEmployeeError); Logger.Error(e.StackTrace); transaction.Rollback(); } } } } }
protected override void ViewItemDetailsAsync(bool isNew = false) { ItemDetailsVM.ActiveItem = isNew || SelectedItem is null ? new Company() : Utils.CloneObject(SelectedItem); if (ItemDetailsWnd.ShowDialog() == true) { using (var context = new DatabaseContext()) { using (var transaction = context.Database.BeginTransaction()) { try { context.Companies.Attach(ItemDetailsVM.ActiveItem); context.SaveChanges(); if (isNew) { Items.Add(ItemDetailsVM.ActiveItem); Logger.Debug("Виконано додання нової організації"); } else { int index = Items.IndexOf(SelectedItem); if (index >= 0 && Items.Count > index) { Items[index] = ItemDetailsVM.ActiveItem; } Logger.Debug("Виконано зміну даних існуючої організації"); } transaction.Commit(); } catch (Exception e) { Logger.Debug("Транзакція по внесенню даних організації закінчилася з помилкою"); Logger.Error(e.StackTrace); transaction.Rollback(); } } } } }