[#43] BaseDataWindow: Do not use Context from ContextWindow any more

This commit is contained in:
2024-03-18 10:28:35 +01:00
parent 5715c41a2e
commit 729d2fd76c
7 changed files with 154 additions and 122 deletions

View File

@ -18,16 +18,16 @@ namespace Elwig.Windows {
private bool _cultChanged = false;
private bool _cultUpdate = false;
private void WineCultivationsInitEditing() {
_cultList = new(Context.WineCultivations.OrderBy(c => c.Name).ToList());
private async Task WineCultivationsInitEditing(AppDbContext ctx) {
_cultList = new(await ctx.WineCultivations.OrderBy(c => c.Name).ToListAsync());
_cults = _cultList.ToDictionary(c => c.CultId, c => (string?)c.CultId);
_cultIds = _cultList.ToDictionary(c => c, c => c.CultId);
ControlUtils.RenewItemsSource(WineCultivationList, _cultList, c => (c as WineCult)?.CultId);
WineCultivationList_SelectionChanged(null, null);
}
private void WineCultivationsFinishEditing() {
ControlUtils.RenewItemsSource(WineCultivationList, Context.WineCultivations.OrderBy(c => c.Name).ToList(), c => (c as WineCult)?.CultId);
private async Task WineCultivationsFinishEditing(AppDbContext ctx) {
ControlUtils.RenewItemsSource(WineCultivationList, await ctx.WineCultivations.OrderBy(c => c.Name).ToListAsync(), c => (c as WineCult)?.CultId);
_cultList = null;
_cults = null;
_cultIds = null;
@ -37,31 +37,31 @@ namespace Elwig.Windows {
WineCultivationDeleteButton.IsEnabled = false;
}
private async Task WineCultivationsSave() {
private async Task WineCultivationsSave(AppDbContext ctx) {
if (!_cultChanged || _cultList == null || _cults == null || _cultIds == null)
return;
foreach (var (cultid, _) in _cults.Where(c => c.Value == null)) {
Context.Remove(Context.WineCultivations.Find(cultid));
ctx.Remove(ctx.WineCultivations.Find(cultid)!);
}
foreach (var (cult, old) in _cultIds) {
cult.CultId = old;
}
foreach (var (old, cultid) in _cults.Where(c => c.Value != null)) {
Context.Update(Context.WineCultivations.Find(old));
ctx.Update(ctx.WineCultivations.Find(old)!);
}
await Context.SaveChangesAsync();
await ctx.SaveChangesAsync();
foreach (var (old, cultid) in _cults.Where(c => c.Value != null)) {
await Context.Database.ExecuteSqlAsync($"UPDATE wine_cultivation SET cultid = {cultid} WHERE cultid = {old}");
await ctx.Database.ExecuteSqlAsync($"UPDATE wine_cultivation SET cultid = {cultid} WHERE cultid = {old}");
}
await Context.SaveChangesAsync();
await ctx.SaveChangesAsync();
foreach (var cult in _cultList.Where(c => !_cultIds.ContainsKey(c))) {
if (cult.CultId == null) continue;
await Context.AddAsync(cult);
ctx.Add(cult);
}
await Context.SaveChangesAsync();
await ctx.SaveChangesAsync();
}
private void WineCultivationList_SelectionChanged(object? sender, SelectionChangedEventArgs? evt) {
@ -82,7 +82,7 @@ namespace Elwig.Windows {
private void WineCultivationAddButton_Click(object sender, RoutedEventArgs evt) {
if (_cultList == null) return;
_cultChanged = true;
var item = Context.CreateProxy<WineCult>();
var item = new WineCult { CultId = "", Name = "" };
_cultList.Add(item);
WineCultivationList.SelectedItem = item;
UpdateButtons();