Elwig: Rename AreaCom to AreaCmt

This commit is contained in:
2026-09-30 12:14:30 +02:00
parent a18d687f18
commit 3d96c31a70
42 changed files with 387 additions and 387 deletions
@@ -8,9 +8,9 @@ using System.Threading.Tasks;
using System.Windows.Controls;
namespace Elwig.Services {
public static class AreaComService {
public static class AreaCmtService {
public static async Task InitInputs(this AreaComAdminViewModel vm) {
public static async Task InitInputs(this AreaCmtAdminViewModel vm) {
using var ctx = new AppDbContext();
vm.FbNr = await ctx.NextFbNr();
vm.MgNr = vm.FilterMember.MgNr;
@@ -18,11 +18,11 @@ namespace Elwig.Services {
vm.WineCult = null;
}
public static void ClearInputs(this AreaComAdminViewModel vm) {
public static void ClearInputs(this AreaCmtAdminViewModel vm) {
vm.Period = null;
}
public static void FillInputs(this AreaComAdminViewModel vm, AreaComContract c) {
public static void FillInputs(this AreaCmtAdminViewModel vm, AreaCmtContract c) {
vm.FbNr = c.FbNr;
vm.Period = c.YearTo == null ? $"ab {c.YearFrom}" : $"{c.YearFrom}\u2013{c.YearTo}";
vm.Comment = c.Comment;
@@ -30,23 +30,23 @@ namespace Elwig.Services {
vm.Rd = ControlUtils.GetItemFromSourceWithPk(vm.RdSource, c.KgNr, c.RdNr) as WbRd;
}
public static void FillInputs(this AreaComAdminViewModel vm, AreaCom a) {
public static void FillInputs(this AreaCmtAdminViewModel vm, AreaCmt a) {
vm.MgNr = a.MgNr;
vm.YearFrom = a.YearFrom;
vm.YearTo = a.YearTo;
vm.AreaComType = ControlUtils.GetItemFromSourceWithPk(vm.AreaComTypeSource, a.VtrgId) as AreaComType;
vm.AreaCmtType = ControlUtils.GetItemFromSourceWithPk(vm.AreaCmtTypeSource, a.VtrgId) as AreaCmtType;
vm.WineCult = ControlUtils.GetItemFromSourceWithPk(vm.WineCultSource, a.CultId) as WineCult;
vm.GstNr = a.GstNr;
vm.Area = a.Area;
}
public static async Task<(List<string>, IQueryable<AreaComContract>, IQueryable<AreaCom>, List<string>)> GetFilters(this AreaComAdminViewModel vm, AppDbContext ctx) {
public static async Task<(List<string>, IQueryable<AreaCmtContract>, IQueryable<AreaCmt>, List<string>)> GetFilters(this AreaCmtAdminViewModel vm, AppDbContext ctx) {
List<string> filterNames = [];
IQueryable<AreaCom> areaComQuery = ctx.AreaCommitments.Where(a => a.MgNr == vm.FilterMember.MgNr).OrderBy(a => a.FbNr);
IQueryable<AreaCmt> areaCmtQuery = ctx.AreaCommitments.Where(a => a.MgNr == vm.FilterMember.MgNr).OrderBy(a => a.FbNr);
filterNames.Add(vm.FilterMember.AdministrativeName);
if (vm.FilterSeason is int season) {
areaComQuery = Utils.ActiveAreaCommitments(areaComQuery, season);
areaCmtQuery = Utils.ActiveAreaCommitments(areaCmtQuery, season);
filterNames.Add($"laufend {season}");
}
@@ -96,37 +96,37 @@ namespace Elwig.Services {
}
}
if (filterVar.Count > 0) areaComQuery = areaComQuery.Where(a => filterVar.Contains(a.AreaComType.WineVar.SortId));
if (filterNotVar.Count > 0) areaComQuery = areaComQuery.Where(a => !filterNotVar.Contains(a.AreaComType.WineVar.SortId));
if (filterAttr.Count > 0) areaComQuery = areaComQuery.Where(a => a.AreaComType.WineAttr!.AttrId != null && filterAttr.Contains(a.AreaComType.WineAttr.AttrId));
if (filterNotAttr.Count > 0) areaComQuery = areaComQuery.Where(a => a.AreaComType.WineAttr!.AttrId == null || !filterNotAttr.Contains(a.AreaComType.WineAttr.AttrId));
if (filterVar.Count > 0) areaCmtQuery = areaCmtQuery.Where(a => filterVar.Contains(a.AreaCmtType.WineVar.SortId));
if (filterNotVar.Count > 0) areaCmtQuery = areaCmtQuery.Where(a => !filterNotVar.Contains(a.AreaCmtType.WineVar.SortId));
if (filterAttr.Count > 0) areaCmtQuery = areaCmtQuery.Where(a => a.AreaCmtType.WineAttr!.AttrId != null && filterAttr.Contains(a.AreaCmtType.WineAttr.AttrId));
if (filterNotAttr.Count > 0) areaCmtQuery = areaCmtQuery.Where(a => a.AreaCmtType.WineAttr!.AttrId == null || !filterNotAttr.Contains(a.AreaCmtType.WineAttr.AttrId));
}
IQueryable<AreaComContract> contracts = areaComQuery
IQueryable<AreaCmtContract> contracts = areaCmtQuery
.Select(c => c.Contract).Distinct()
.OrderBy(c => c.FbNr);
return (filterNames, contracts, areaComQuery, filter);
return (filterNames, contracts, areaCmtQuery, filter);
}
public static async Task<(int FbNr, int RevNr)> UpdateAreaCommitment(this AreaComAdminViewModel vm, int? oldFbNr, int? revNr) {
public static async Task<(int FbNr, int RevNr)> UpdateAreaCommitment(this AreaCmtAdminViewModel vm, int? oldFbNr, int? revNr) {
int newFbNr = vm.FbNr!.Value;
return await Task.Run(async () => {
using var ctx = new AppDbContext();
var c = new AreaComContract {
var c = new AreaCmtContract {
FbNr = oldFbNr ?? newFbNr,
Comment = string.IsNullOrWhiteSpace(vm.Comment) ? null : vm.Comment,
KgNr = vm.Kg!.KgNr,
RdNr = vm.Rd?.RdNr,
};
var a = new AreaCom {
var a = new AreaCmt {
FbNr = oldFbNr ?? newFbNr,
RevNr = revNr ?? await ctx.NextRevNr(oldFbNr ?? newFbNr),
MgNr = vm.MgNr!.Value,
YearFrom = vm.YearFrom,
YearTo = vm.YearTo,
VtrgId = vm.AreaComType!.VtrgId,
VtrgId = vm.AreaCmtType!.VtrgId,
CultId = vm.WineCult?.CultId,
GstNr = vm.GstNr?.Trim() ?? "-",
Area = vm.Area!.Value,
@@ -168,53 +168,53 @@ namespace Elwig.Services {
grid.AddToolTipCell(max == null ? "" : $"{max:N0} kg", row, 4, bold: bold, alignRight: true);
}
public static async Task<(string, (string?, string?, int, int?, int?)[])> GenerateToolTipData(IQueryable<AreaCom> areaComs, int maxKgPerHa) {
public static async Task<(string, (string?, string?, int, int?, int?)[])> GenerateToolTipData(IQueryable<AreaCmt> areaCmts, int maxKgPerHa) {
var grid = new List<(string?, string?, int, int?, int?)>();
var text = "-";
var area = await areaComs.SumAsync(p => p.Area);
var area = await areaCmts.SumAsync(p => p.Area);
text = $"{area:N0} m²";
grid.Add(("Geb. Fläche", null, area, null, null));
if (await areaComs.AnyAsync()) {
var attrGroups = await areaComs
.Where(c => c.AreaComType.WineAttr != null)
.GroupBy(c => c.AreaComType.WineAttr!.Name)
if (await areaCmts.AnyAsync()) {
var attrGroups = await areaCmts
.Where(c => c.AreaCmtType.WineAttr != null)
.GroupBy(c => c.AreaCmtType.WineAttr!.Name)
.Select(g => new {
Attr = g.Key,
Area = g.Sum(c => c.Area),
Min = g.Sum(c => c.Area * (c.AreaComType.MinKgPerHa ?? 0) / 10_000),
Max = g.Sum(c => c.Area * (c.AreaComType.WineAttr!.MaxKgPerHa ?? maxKgPerHa) / 10_000),
Min = g.Sum(c => c.Area * (c.AreaCmtType.MinKgPerHa ?? 0) / 10_000),
Max = g.Sum(c => c.Area * (c.AreaCmtType.WineAttr!.MaxKgPerHa ?? maxKgPerHa) / 10_000),
})
.OrderByDescending(g => g.Area)
.ThenBy(g => g.Attr)
.ToListAsync();
var groups = await areaComs
.Where(c => c.AreaComType.WineAttr != null)
var groups = await areaCmts
.Where(c => c.AreaCmtType.WineAttr != null)
.GroupBy(c => new {
Attr = c.AreaComType.WineAttr!.Name,
c.AreaComType.SortId,
Attr = c.AreaCmtType.WineAttr!.Name,
c.AreaCmtType.SortId,
})
.Select(g => new {
g.Key.Attr,
g.Key.SortId,
Area = g.Sum(c => c.Area),
Min = g.Sum(c => c.Area * (c.AreaComType.MinKgPerHa ?? 0) / 10_000),
Max = g.Sum(c => c.Area * (c.AreaComType.WineAttr!.MaxKgPerHa ?? maxKgPerHa) / 10_000),
Min = g.Sum(c => c.Area * (c.AreaCmtType.MinKgPerHa ?? 0) / 10_000),
Max = g.Sum(c => c.Area * (c.AreaCmtType.WineAttr!.MaxKgPerHa ?? maxKgPerHa) / 10_000),
})
.OrderByDescending(g => g.Area)
.ThenBy(g => g.Attr)
.ThenBy(g => g.SortId)
.ToListAsync();
var noAttr = await areaComs
.Where(c => c.AreaComType.WineAttr == null || !c.AreaComType.WineAttr.IsStrict)
.GroupBy(c => c.AreaComType.SortId)
var noAttr = await areaCmts
.Where(c => c.AreaCmtType.WineAttr == null || !c.AreaCmtType.WineAttr.IsStrict)
.GroupBy(c => c.AreaCmtType.SortId)
.Select(g => new {
SortId = g.Key,
Area = g.Sum(c => c.Area),
Min = g.Sum(c => c.Area * (c.AreaComType.MinKgPerHa ?? 0) / 10_000),
Max = g.Sum(c => c.Area * (c.AreaComType.WineAttr!.MaxKgPerHa ?? maxKgPerHa) / 10_000),
Min = g.Sum(c => c.Area * (c.AreaCmtType.MinKgPerHa ?? 0) / 10_000),
Max = g.Sum(c => c.Area * (c.AreaCmtType.WineAttr!.MaxKgPerHa ?? maxKgPerHa) / 10_000),
})
.OrderByDescending(g => g.Area)
.ThenBy(g => g.SortId)
@@ -254,7 +254,7 @@ namespace Elwig.Services {
return grid;
}
public static async Task DeleteAreaCom(int fbnr) {
public static async Task DeleteAreaCmt(int fbnr) {
await Task.Run(async () => {
using var ctx = new AppDbContext();
var l = (await ctx.AreaCommitmentContracts.FindAsync(fbnr))!;
@@ -263,7 +263,7 @@ namespace Elwig.Services {
});
}
public static async Task DeleteAreaComRevision(int fbnr, int revnr) {
public static async Task DeleteAreaCmtRevision(int fbnr, int revnr) {
await Task.Run(async () => {
using var ctx = new AppDbContext();
var l = (await ctx.AreaCommitments.FindAsync(fbnr, revnr))!;
+29 -29
View File
@@ -190,7 +190,7 @@ namespace Elwig.Services {
var s = await ctx.FetchSeasons().FirstOrDefaultAsync();
if (s != null) maxKgPerHa = s.MaxKgPerHa;
} catch { }
var (text, gridData) = await AreaComService.GenerateToolTipData(c, maxKgPerHa);
var (text, gridData) = await AreaCmtService.GenerateToolTipData(c, maxKgPerHa);
var deliveries = await ctx.Deliveries
.Where(d => d.MgNr == m.MgNr)
@@ -202,7 +202,7 @@ namespace Elwig.Services {
return;
var (d1Grid, _) = DeliveryService.GenerateToolTip(d1GridData, []);
var (d2Grid, _) = DeliveryService.GenerateToolTip(d2GridData, []);
var grid = AreaComService.GenerateToolTip(gridData);
var grid = AreaCmtService.GenerateToolTip(gridData);
vm.StatusDeliveriesLastSeasonInfo = $"{Utils.CurrentLastSeason - 1}";
vm.StatusDeliveriesLastSeason = textLast;
vm.StatusDeliveriesLastSeasonToolTip = d1Grid;
@@ -297,15 +297,15 @@ namespace Elwig.Services {
var filterKgNr = new List<int>();
var filterLfbisNr = new List<string>();
var filterUstIdNr = new List<string>();
var filterAreaCom = new List<string>();
var filterNotAreaCom = new List<string>();
var filterAreaCmt = new List<string>();
var filterNotAreaCmt = new List<string>();
var filter = vm.TextFilter;
if (filter.Count > 0) {
var branches = await ctx.FetchBranches().ToListAsync();
var mgnr = await ctx.FetchMembers(includeNotActive: true).ToDictionaryAsync(m => m.MgNr.ToString(), m => m);
var kgs = await ctx.WbKgs.ToDictionaryAsync(k => k.AtKg.Name.ToLower(), k => k.AtKg);
var areaComs = await ctx.AreaCommitmentTypes.ToDictionaryAsync(t => $"{t.SortId}{t.AttrId}", t => t);
var areaCmts = await ctx.AreaCommitmentTypes.ToDictionaryAsync(t => $"{t.SortId}{t.AttrId}", t => t);
for (int i = 0; i < filter.Count; i++) {
var e = filter[i];
@@ -434,19 +434,19 @@ namespace Elwig.Services {
filter.RemoveAt(i--);
filterNames.Add($"Tel.-Nr. {e}");
} else if (e.Length >= 5 && e.Length <= 14 && "flächenbindung".StartsWith(e, StringComparison.CurrentCultureIgnoreCase)) {
filterAreaCom.AddRange(areaComs.Keys);
filterAreaCmt.AddRange(areaCmts.Keys);
filter.RemoveAt(i--);
filterNames.Add($"Flächenbindung");
} else if (e.Length >= 6 && e.Length <= 15 && "!flächenbindung".StartsWith(e, StringComparison.CurrentCultureIgnoreCase)) {
filterNotAreaCom.AddRange(areaComs.Keys);
filterNotAreaCmt.AddRange(areaCmts.Keys);
filter.RemoveAt(i--);
filterNames.Add($"keine Flächenbindung");
} else if (areaComs.ContainsKey(e.ToUpper())) {
filterAreaCom.Add(e.ToUpper());
} else if (areaCmts.ContainsKey(e.ToUpper())) {
filterAreaCmt.Add(e.ToUpper());
filter.RemoveAt(i--);
filterNames.Add($"Flächenbindung {e.ToUpper()}");
} else if (e.Length >= 3 && e[0] == '!' && areaComs.ContainsKey(e[1..].ToUpper())) {
filterNotAreaCom.Add(e[1..].ToUpper());
} else if (e.Length >= 3 && e[0] == '!' && areaCmts.ContainsKey(e[1..].ToUpper())) {
filterNotAreaCmt.Add(e[1..].ToUpper());
filter.RemoveAt(i--);
filterNames.Add($"ohne Flächenbindung {e[1..].ToUpper()}");
} else if (Validator.CheckLfbisNr(e)) {
@@ -467,8 +467,8 @@ namespace Elwig.Services {
if (filterMgNr.Count > 0) memberQuery = memberQuery.Where(m => filterMgNr.Contains(m.MgNr));
if (filterKgNr.Count > 0) memberQuery = memberQuery.Where(m => m.DefaultKgNr != null && filterKgNr.Contains((int)m.DefaultKgNr));
if (filterZwst.Count > 0) memberQuery = memberQuery.Where(m => m.ZwstId != null && filterZwst.Contains(m.ZwstId));
if (filterAreaCom.Count > 0) memberQuery = memberQuery.Where(m => m.AreaCommitments.AsQueryable().Where(Utils.ActiveAreaCommitments(Utils.CurrentLastSeason)).Any(c => filterAreaCom.Contains(c.VtrgId)));
if (filterNotAreaCom.Count > 0) memberQuery = memberQuery.Where(m => !m.AreaCommitments.AsQueryable().Where(Utils.ActiveAreaCommitments(Utils.CurrentLastSeason)).All(c => filterNotAreaCom.Contains(c.VtrgId)));
if (filterAreaCmt.Count > 0) memberQuery = memberQuery.Where(m => m.AreaCommitments.AsQueryable().Where(Utils.ActiveAreaCommitments(Utils.CurrentLastSeason)).Any(c => filterAreaCmt.Contains(c.VtrgId)));
if (filterNotAreaCmt.Count > 0) memberQuery = memberQuery.Where(m => !m.AreaCommitments.AsQueryable().Where(Utils.ActiveAreaCommitments(Utils.CurrentLastSeason)).All(c => filterNotAreaCmt.Contains(c.VtrgId)));
if (filterLfbisNr.Count > 0) memberQuery = memberQuery.Where(m => m.LfbisNr != null && filterLfbisNr.Contains(m.LfbisNr));
if (filterUstIdNr.Count > 0) memberQuery = memberQuery.Where(m => m.UstIdNr != null && filterUstIdNr.Contains(m.UstIdNr));
}
@@ -585,7 +585,7 @@ namespace Elwig.Services {
.DistinctBy(h => h.HistNr)
.OrderBy(h => h.DateNotice).ThenBy(h => h.HistNr)
.ToList();
var areaComs = await query
var areaCmts = await query
.SelectMany(m => m.AreaCommitments)
.Select(c => c.Contract).Distinct()
.Include(c => c.Revisions)
@@ -593,11 +593,11 @@ namespace Elwig.Services {
var wbKgs = members
.Where(m => m.DefaultWbKg != null)
.Select(m => m.DefaultWbKg!)
.Union(areaComs.Select(c => c.Kg))
.Union(areaCmts.Select(c => c.Kg))
.Distinct()
.OrderBy(k => k.KgNr)
.ToList();
await ElwigData.Export(filename, members, history, areaComs, wbKgs, filterNames);
await ElwigData.Export(filename, members, history, areaCmts, wbKgs, filterNames);
});
}
} else if (mode == ExportMode.Upload && App.Config.SyncUrl != null) {
@@ -700,12 +700,12 @@ namespace Elwig.Services {
await ctx.SaveChangesAsync();
if (vm.TransferPredecessorAreaComs is int year && m.PredecessorMgNr is int predecessor) {
var areaComs = await ctx.AreaCommitments
if (vm.TransferPredecessorAreaCmts is int year && m.PredecessorMgNr is int predecessor) {
var areaCmts = await ctx.AreaCommitments
.Where(c => c.MgNr == predecessor && (c.YearTo == null || c.YearTo >= year))
.ToListAsync();
ctx.AddRange(await Task.WhenAll(areaComs.Select(async (c, i) => new AreaCom {
ctx.AddRange(await Task.WhenAll(areaCmts.Select(async (c, i) => new AreaCmt {
FbNr = c.FbNr,
RevNr = await ctx.NextRevNr(c.FbNr),
MgNr = m.MgNr,
@@ -717,24 +717,24 @@ namespace Elwig.Services {
YearTo = c.YearTo,
})));
foreach (var ac in areaComs)
foreach (var ac in areaCmts)
ac.YearTo = year - 1;
ctx.UpdateRange(areaComs);
ctx.UpdateRange(areaCmts);
await ctx.SaveChangesAsync();
}
vm.TransferPredecessorAreaComs = null;
vm.TransferPredecessorAreaCmts = null;
if (vm.CancelAreaComs is int yearTo) {
var areaComs = await ctx.AreaCommitments
if (vm.CancelAreaCmts is int yearTo) {
var areaCmts = await ctx.AreaCommitments
.Where(c => c.MgNr == m.MgNr && (c.YearTo == null || c.YearTo > yearTo))
.ToListAsync();
foreach (var ac in areaComs)
foreach (var ac in areaCmts)
ac.YearTo = yearTo;
ctx.UpdateRange(areaComs);
ctx.UpdateRange(areaCmts);
await ctx.SaveChangesAsync();
}
vm.CancelAreaComs = null;
vm.CancelAreaCmts = null;
if (newMgNr != m.MgNr) {
await ctx.Database.ExecuteSqlAsync($"UPDATE member SET mgnr = {newMgNr} WHERE mgnr = {oldMgNr}");
@@ -744,7 +744,7 @@ namespace Elwig.Services {
});
}
public static async Task DeleteMember(int mgnr, bool deletePaymentData, bool deleteDeliveries, bool deleteAreaComs) {
public static async Task DeleteMember(int mgnr, bool deletePaymentData, bool deleteDeliveries, bool deleteAreaCmts) {
await Task.Run(async () => {
using var ctx = new AppDbContext();
using var tx = await ctx.Database.BeginTransactionAsync();
@@ -755,7 +755,7 @@ namespace Elwig.Services {
if (deleteDeliveries) {
await ctx.Deliveries.Where(c => c.MgNr == mgnr).ExecuteDeleteAsync();
}
if (deleteAreaComs) {
if (deleteAreaCmts) {
await ctx.AreaCommitments.Where(c => c.MgNr == mgnr).ExecuteDeleteAsync();
}
ctx.Remove(l);
+14 -14
View File
@@ -15,7 +15,7 @@ namespace Elwig.Services {
public static class SyncService {
public static readonly Expression<Func<Member, bool>> ChangedMembers = (m) => ((m.XTime == null && m.MTime > 1751328000) || m.MTime > m.XTime) && (m.ITime == null || m.MTime > m.ITime);
public static readonly Expression<Func<AreaComContract, bool>> ChangedAreaComContracts = (c) => ((c.XTime == null && c.MTime > 1751328000) || c.MTime > c.XTime) && (c.ITime == null || c.MTime > c.ITime);
public static readonly Expression<Func<AreaCmtContract, bool>> ChangedAreaCmtContracts = (c) => ((c.XTime == null && c.MTime > 1751328000) || c.MTime > c.XTime) && (c.ITime == null || c.MTime > c.ITime);
public static readonly Expression<Func<Delivery, bool>> ChangedDeliveries = (d) => ((d.XTime == null && d.MTime > 1751328000) || d.MTime > d.XTime) && (d.ITime == null || d.MTime > d.ITime);
public static async Task Upload(string url, string username, string password, IQueryable<Member> query, IEnumerable<string> filterNames) {
@@ -37,7 +37,7 @@ namespace Elwig.Services {
.DistinctBy(h => h.HistNr)
.OrderBy(h => h.DateNotice).ThenBy(h => h.HistNr)
.ToList();
var areaComs = await query
var areaCmts = await query
.SelectMany(m => m.AreaCommitments)
.Select(c => c.Contract).Distinct()
.OrderBy(c => c.FbNr)
@@ -46,7 +46,7 @@ namespace Elwig.Services {
var wbKgs = members
.Where(m => m.DefaultWbKg != null)
.Select(m => m.DefaultWbKg!)
.Union(areaComs.Select(c => c.Kg))
.Union(areaCmts.Select(c => c.Kg))
.Distinct()
.OrderBy(k => k.KgNr)
.ToList();
@@ -54,9 +54,9 @@ namespace Elwig.Services {
InteractionService.ShowError("Mitglieder hochladen", "Es wurden keine Mitglieder zum Hochladen ausgewählt!");
} else {
var exportedAt = DateTime.Now;
await ElwigData.Export(path, members, history, areaComs, wbKgs, filterNames);
await ElwigData.Export(path, members, history, areaCmts, wbKgs, filterNames);
await Utils.UploadExportData(path, url, username, password);
await UpdateExportedAt(members, areaComs, [], exportedAt);
await UpdateExportedAt(members, areaCmts, [], exportedAt);
InteractionService.ShowInformation("Mitglieder hochgeladen", $"Hochladen von {members.Count:N0} Mitgliedern erfolgreich!");
}
} catch (HttpRequestException exc) {
@@ -106,7 +106,7 @@ namespace Elwig.Services {
try {
var path = Path.Combine(App.TempPath, $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip");
List<Member> members;
List<AreaComContract> areaComs;
List<AreaCmtContract> areaCmts;
List<Delivery> deliveries;
using (var ctx = new AppDbContext()) {
members = await ctx.Members
@@ -115,8 +115,8 @@ namespace Elwig.Services {
.Include(m => m.EmailAddresses)
.OrderBy(m => m.MgNr)
.ToListAsync();
areaComs = await ctx.AreaCommitmentContracts
.Where(ChangedAreaComContracts)
areaCmts = await ctx.AreaCommitmentContracts
.Where(ChangedAreaCmtContracts)
.Include(c => c.Revisions)
.OrderBy(c => c.FbNr)
.ToListAsync();
@@ -129,7 +129,7 @@ namespace Elwig.Services {
var wbKgs = members
.Where(m => m.DefaultWbKg != null)
.Select(m => m.DefaultWbKg!)
.Union(areaComs.Select(c => c.Kg))
.Union(areaCmts.Select(c => c.Kg))
.Union(deliveries.SelectMany(d => d.Parts)
.Where(p => p.Kg != null)
.Select(p => p.Kg!))
@@ -142,13 +142,13 @@ namespace Elwig.Services {
var exportedAt = DateTime.Now;
await (new ElwigData.ElwigExport {
Members = (members, ["geändert seit letztem Export"]),
AreaComs = (areaComs, ["geändert seit letztem Export"]),
AreaCmts = (areaCmts, ["geändert seit letztem Export"]),
Deliveries = (deliveries, ["geändert seit letzem Export"]),
WbKgs = (wbKgs, ["von exportierten Mitgliedern, Flächenbindungen und Lieferungen"]),
}).Export(path);
await Utils.UploadExportData(path, url, username, password);
await UpdateExportedAt(members, areaComs, deliveries, exportedAt);
InteractionService.ShowInformation("Mitglieder und Lieferungen hochladen", $"Hochladen von {members.Count:N0} Mitgliedern, {areaComs.Count:N0} Flächenbindungsverträgen, und {deliveries.Count:N0} Lieferungen erfolgreich!");
await UpdateExportedAt(members, areaCmts, deliveries, exportedAt);
InteractionService.ShowInformation("Mitglieder und Lieferungen hochladen", $"Hochladen von {members.Count:N0} Mitgliedern, {areaCmts.Count:N0} Flächenbindungsverträgen, und {deliveries.Count:N0} Lieferungen erfolgreich!");
}
} catch (HttpRequestException exc) {
InteractionService.ShowException("Mitglieder und Lieferungen hochladen", "Eventuell Internetverbindung prüfen!", exc);
@@ -236,7 +236,7 @@ namespace Elwig.Services {
}
}
private static async Task UpdateExportedAt(IEnumerable<Member> member, IEnumerable<AreaComContract> contracts, IEnumerable<Delivery> deliveries, DateTime dateTime) {
private static async Task UpdateExportedAt(IEnumerable<Member> member, IEnumerable<AreaCmtContract> contracts, IEnumerable<Delivery> deliveries, DateTime dateTime) {
var timestamp = ((DateTimeOffset)dateTime.ToUniversalTime()).ToUnixTimeSeconds();
var mgnrs = string.Join(",", member.Select(m => $"{m.MgNr}").Append("0"));
var fbnrs = string.Join(",", contracts.Select(c => $"{c.FbNr}").Append("0"));
@@ -259,7 +259,7 @@ namespace Elwig.Services {
public static async Task<bool> ChangesAvailable(AppDbContext ctx, string url, string username, string password) {
try {
return await ctx.Members.Where(ChangedMembers).AnyAsync() || await ctx.AreaCommitmentContracts.Where(ChangedAreaComContracts).AnyAsync() || await ctx.Deliveries.Where(ChangedDeliveries).AnyAsync() || (Utils.HasInternetConnectivity() && (await GetFilesToImport(url, username, password)).Count > 0);
return await ctx.Members.Where(ChangedMembers).AnyAsync() || await ctx.AreaCommitmentContracts.Where(ChangedAreaCmtContracts).AnyAsync() || await ctx.Deliveries.Where(ChangedDeliveries).AnyAsync() || (Utils.HasInternetConnectivity() && (await GetFilesToImport(url, username, password)).Count > 0);
} catch {
return false;
}