public static async Task RemoveItemLocation(this PrimaryDbContext db, ItemLocation model) { var il = await db.ItemLocations.FindAsync(model.Id); db.ItemLocations.Remove(il); await db.SaveChangesAsync(); }
public static async Task <List <Location> > GetLocations(this PrimaryDbContext db, SecondaryDbContext sdb, int itemId) { var locationIds = await db.ItemLocations .Where(x => x.ItemId == itemId) .Select(x => x.LocationId).ToListAsync(); var locations = await sdb.Locations.Where(x => locationIds.Contains(x.Id)).ToListAsync(); return(locations); }
public static async Task <List <Item> > GetItems(this PrimaryDbContext db, SecondaryDbContext sdb, int locationId) { var itemIds = await db.ItemLocations .Where(x => x.LocationId == locationId) .Select(x => x.ItemId) .ToListAsync(); var items = await sdb.Items.Where(x => itemIds.Contains(x.Id)).ToListAsync(); return(items); }
private static async Task <bool> Validate(this Item i, Location l, PrimaryDbContext db) { var itemLocation = await db.ItemLocations.FirstOrDefaultAsync(il => il.ItemId == i.Id && il.LocationId == l.Id); if (itemLocation != null) { throw new Exception("The provided item location has already been specified"); } return(true); }
public static async Task UpdateItemLocation(this PrimaryDbContext db, Item i, Location l, int oldLocationId) { if (await i.Validate(l, db)) { var il = await db.ItemLocations.FirstOrDefaultAsync(x => x.ItemId == i.Id && x.LocationId == oldLocationId); if (il != null) { il.LocationId = l.Id; await db.SaveChangesAsync(); } } }
public static async Task AddItemLocation(this PrimaryDbContext db, Item i, Location l) { if (await i.Validate(l, db)) { var il = new ItemLocation { ItemId = i.Id, LocationId = l.Id }; await db.ItemLocations.AddAsync(il); await db.SaveChangesAsync(); } }
public static async Task <List <LocationItemModel> > GetLocationItems(this PrimaryDbContext db, SecondaryDbContext sdb) { var locations = await sdb.GetLocations(); var model = new List <LocationItemModel>(); foreach (var l in locations) { var li = new LocationItemModel { Location = l, Items = await db.GetItems(sdb, l.Id) }; model.Add(li); } return(model); }
public static async Task <List <ItemLocationModel> > GetItemLocations(this PrimaryDbContext db, SecondaryDbContext sdb) { var items = await sdb.GetItems(); var model = new List <ItemLocationModel>(); foreach (var i in items) { var il = new ItemLocationModel { Item = i, Locations = await db.GetLocations(sdb, i.Id) }; model.Add(il); } return(model); }
public AppController(PrimaryDbContext pdb, SecondaryDbContext sdb) { this.pdb = pdb; this.sdb = sdb; }