Files
elwig/Elwig/Helpers/AppDbContext.cs

56 lines
2.3 KiB
C#

using Microsoft.EntityFrameworkCore;
using Elwig.Models;
using System.Linq;
using System.Threading.Tasks;
namespace Elwig.Helpers {
public class AppDbContext : DbContext {
public DbSet<Country> Countries { get; set; }
public DbSet<Member> Members { get; set; }
public DbSet<BillingAddress> BillingAddresses { get; set; }
public DbSet<AT_Gem> Gemeinden { get; set; }
public DbSet<AT_Kg> Katastralgemeinden { get; set; }
public DbSet<AT_Ort> Orte { get; set; }
public DbSet<AT_PlzDest> Postleitzahlen { get; set; }
public DbSet<PostalDest> PostalDestinations { get; set; }
public DbSet<Branch> Branches { get; set; }
public DbSet<WbKg> WbKgs { get; set; }
public DbSet<WbRd> WbRde { get; set; }
public DbSet<AreaCommitment> AreaCommitments { get; set; }
public DbSet<Contract> Contracts { get; set; }
public DbSet<WineAttr> WineAttributes { get; set; }
public DbSet<WineCult> WineCultivations { get; set; }
public DbSet<WineQual> WineQualities { get; set; }
public DbSet<WineVar> WineVarieties { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
optionsBuilder.UseSqlite($"Data Source=\"{App.Config.DatabaseFile}\"; Foreign Keys=True; Mode=ReadWrite; Cache=Default");
optionsBuilder.UseLazyLoadingProxies();
base.OnConfiguring(optionsBuilder);
}
public async Task<bool> MgNrExists(int mgnr) {
return await Members.FindAsync(mgnr) != null;
}
public async Task<bool> VNrExists(int vnr) {
return await Contracts.FindAsync(vnr) != null;
}
public async Task<int> NextMgNr() {
int c = await Members.Select(m => m.MgNr).MinAsync();
(await Members.OrderBy(m => m.MgNr).Select(m => m.MgNr).ToListAsync())
.ForEach(a => { if (a <= c + 100) c = a; });
return c + 1;
}
public async Task<int> NextVNr() {
int c = await Contracts.Select(co => co.VNr).MinAsync();
(await Contracts.OrderBy(co => co.VNr).Select(co => co.VNr).ToListAsync())
.ForEach(a => { if (a <= c + 100) c = a; });
return c + 1;
}
}
}