[#43] BaseDataWindow: Do not use Context from ContextWindow any more
This commit is contained in:
@ -133,18 +133,37 @@ namespace Elwig.Windows {
|
||||
|
||||
protected override async Task OnRenewContext() {
|
||||
await base.OnRenewContext();
|
||||
using var ctx = new AppDbContext();
|
||||
FillInputs(App.Client);
|
||||
ControlUtils.RenewItemsSource(SeasonList, await Context.Seasons.OrderByDescending(s => s.Year).ToListAsync(), s => (s as Season)?.Year, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(SeasonList, await ctx.Seasons
|
||||
.OrderByDescending(s => s.Year)
|
||||
.ToListAsync(), s => (s as Season)?.Year, null, ControlUtils.RenewSourceDefault.First);
|
||||
var year = (SeasonList.SelectedItem as Season)?.Year;
|
||||
ControlUtils.RenewItemsSource(BranchList, await Context.Branches.OrderBy(b => b.Name).ToListAsync(), b => (b as Branch)?.ZwstId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(WineAttributeList, await Context.WineAttributes.OrderBy(a => a.Name).ToListAsync(), a => (a as WineAttr)?.AttrId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(AreaCommitmentTypeWineVariantInput, await Context.WineVarieties.OrderBy(s => s.Name).ToListAsync(), s => (s as WineVar)?.SortId);
|
||||
var attrList = await Context.WineAttributes.OrderBy(a => a.Name).Cast<object>().ToListAsync();
|
||||
ControlUtils.RenewItemsSource(BranchList, await ctx.Branches
|
||||
.OrderBy(b => b.Name)
|
||||
.Include(b => b.PostalDest!.AtPlz)
|
||||
.ToListAsync(), b => (b as Branch)?.ZwstId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(WineAttributeList, await ctx.WineAttributes
|
||||
.OrderBy(a => a.Name)
|
||||
.ToListAsync(), a => (a as WineAttr)?.AttrId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(AreaCommitmentTypeWineVariantInput, await ctx.WineVarieties
|
||||
.OrderBy(s => s.Name)
|
||||
.ToListAsync(), s => (s as WineVar)?.SortId);
|
||||
var attrList = await ctx.WineAttributes.OrderBy(a => a.Name).Cast<object>().ToListAsync();
|
||||
attrList.Insert(0, new NullItem(""));
|
||||
ControlUtils.RenewItemsSource(AreaCommitmentTypeWineAttributeInput, attrList, a => (a as WineAttr)?.AttrId);
|
||||
ControlUtils.RenewItemsSource(AreaCommitmentTypeList, await Context.AreaCommitmentTypes.OrderBy(v => v.VtrgId).ToListAsync(), v => (v as AreaComType)?.VtrgId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(WineCultivationList, await Context.WineCultivations.OrderBy(c => c.Name).ToListAsync(), c=> (c as WineCult)?.CultId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(SeasonModifierList, await Context.Modifiers.Where(m => m.Year == year).OrderBy(m => m.Ordering).ToListAsync(), m => (m as Modifier)?.ModId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(AreaCommitmentTypeList, await ctx.AreaCommitmentTypes
|
||||
.OrderBy(t => t.VtrgId)
|
||||
.Include(t => t.WineVar)
|
||||
.Include(t => t.WineAttr)
|
||||
.ToListAsync(), t => (t as AreaComType)?.VtrgId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(WineCultivationList, await ctx.WineCultivations
|
||||
.OrderBy(c => c.Name)
|
||||
.ToListAsync(), c=> (c as WineCult)?.CultId, null, ControlUtils.RenewSourceDefault.First);
|
||||
ControlUtils.RenewItemsSource(SeasonModifierList, await ctx.Modifiers
|
||||
.Where(m => m.Year == year)
|
||||
.OrderBy(m => m.Ordering)
|
||||
.ToListAsync(), m => (m as Modifier)?.ModId, null, ControlUtils.RenewSourceDefault.First);
|
||||
}
|
||||
|
||||
protected override void UpdateButtons() {
|
||||
@ -174,23 +193,52 @@ namespace Elwig.Windows {
|
||||
App.FocusOriginHierarchy();
|
||||
}
|
||||
|
||||
private void EditButton_Click(object sender, RoutedEventArgs evt) {
|
||||
private async Task InitEditing() {
|
||||
using var ctx = new AppDbContext();
|
||||
await BranchesInitEditing(ctx);
|
||||
await WineAttributesInitEditing(ctx);
|
||||
await WineCultivationsInitEditing(ctx);
|
||||
await AreaCommitmentTypesInitEditing(ctx);
|
||||
await SeasonsInitEditing(ctx);
|
||||
await ModifiersInitEditing(ctx);
|
||||
}
|
||||
|
||||
private async Task Save() {
|
||||
using var ctx = new AppDbContext();
|
||||
// FIXME
|
||||
//using var tx = await ctx.Database.BeginTransactionAsync();
|
||||
await UpdateClientParameters(App.Client);
|
||||
await BranchesSave(ctx);
|
||||
await WineAttributesSave(ctx);
|
||||
await WineCultivationsSave(ctx);
|
||||
await AreaCommitmentTypesSave(ctx);
|
||||
await SeasonsSave(ctx);
|
||||
await ModifiersSave(ctx);
|
||||
//await tx.CommitAsync();
|
||||
}
|
||||
|
||||
private async Task FinishEditing() {
|
||||
using var ctx = new AppDbContext();
|
||||
await BranchesFinishEditing(ctx);
|
||||
await WineAttributesFinishEditing(ctx);
|
||||
await WineCultivationsFinishEditing(ctx);
|
||||
await AreaCommitmentTypesFinishEditing(ctx);
|
||||
await SeasonsFinishEditing(ctx);
|
||||
await ModifiersFinishEditing(ctx);
|
||||
}
|
||||
|
||||
private async void EditButton_Click(object sender, RoutedEventArgs evt) {
|
||||
IsEditing = true;
|
||||
EditButton.Visibility = Visibility.Hidden;
|
||||
ResetButton.Visibility = Visibility.Visible;
|
||||
|
||||
BranchesInitEditing();
|
||||
WineAttributesInitEditing();
|
||||
WineCultivationsInitEditing();
|
||||
AreaCommitmentTypesInitEditing();
|
||||
SeasonsInitEditing();
|
||||
ModifiersInitEditing();
|
||||
await InitEditing();
|
||||
|
||||
UnlockInputs();
|
||||
UpdateButtons();
|
||||
}
|
||||
|
||||
private void CancelButton_Click(object sender, RoutedEventArgs evt) {
|
||||
private async void CancelButton_Click(object sender, RoutedEventArgs evt) {
|
||||
IsEditing = false;
|
||||
IsCreating = false;
|
||||
EditButton.Visibility = Visibility.Visible;
|
||||
@ -199,32 +247,20 @@ namespace Elwig.Windows {
|
||||
SaveButton.IsEnabled = false;
|
||||
ResetButton.IsEnabled = false;
|
||||
|
||||
Context.ChangeTracker.Clear();
|
||||
BranchesFinishEditing();
|
||||
WineCultivationsFinishEditing();
|
||||
WineAttributesFinishEditing();
|
||||
AreaCommitmentTypesFinishEditing();
|
||||
SeasonsFinishEditing();
|
||||
ModifiersFinishEditing();
|
||||
await FinishEditing();
|
||||
|
||||
ClearInputStates();
|
||||
FillInputs(App.Client);
|
||||
LockInputs();
|
||||
}
|
||||
|
||||
private void ResetButton_Click(object sender, RoutedEventArgs evt) {
|
||||
private async void ResetButton_Click(object sender, RoutedEventArgs evt) {
|
||||
_branchChanged = false;
|
||||
_attrChanged = false;
|
||||
_cultChanged = false;
|
||||
_modChanged = false;
|
||||
Context.ChangeTracker.Clear();
|
||||
|
||||
BranchesInitEditing();
|
||||
WineAttributesInitEditing();
|
||||
WineCultivationsInitEditing();
|
||||
AreaCommitmentTypesInitEditing();
|
||||
SeasonsInitEditing();
|
||||
ModifiersInitEditing();
|
||||
await InitEditing();
|
||||
|
||||
ClearInputStates();
|
||||
FillInputs(App.Client);
|
||||
@ -233,13 +269,7 @@ namespace Elwig.Windows {
|
||||
|
||||
private async void SaveButton_Click(object sender, RoutedEventArgs evt) {
|
||||
try {
|
||||
await UpdateClientParameters(App.Client);
|
||||
await BranchesSave();
|
||||
await WineAttributesSave();
|
||||
await WineCultivationsSave();
|
||||
await AreaCommitmentTypesSave();
|
||||
await SeasonsSave();
|
||||
await ModifiersSave();
|
||||
await Save();
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
@ -254,12 +284,7 @@ namespace Elwig.Windows {
|
||||
SaveButton.IsEnabled = false;
|
||||
ResetButton.IsEnabled = false;
|
||||
|
||||
BranchesFinishEditing();
|
||||
WineAttributesFinishEditing();
|
||||
WineCultivationsFinishEditing();
|
||||
AreaCommitmentTypesFinishEditing();
|
||||
SeasonsFinishEditing();
|
||||
ModifiersFinishEditing();
|
||||
await FinishEditing();
|
||||
|
||||
ClearInputStates();
|
||||
FillInputs(App.Client);
|
||||
|
Reference in New Issue
Block a user