public async Task <LotDto> GetLot(int lotId) { using (var db = new BuckwheatContext()) { var lot = await db.Lots.FirstOrDefaultAsync(x => x.Id == lotId); return(mapper.Map <Lot, LotDto>(lot)); } }
public async Task <int?> GetLotId(string link) { using (var db = new BuckwheatContext()) { var lot = await db.Lots.FirstOrDefaultAsync(x => x.Link == link); return(lot?.Id); } }
public async Task <List <ShopDto> > GetShops() { using (var db = new BuckwheatContext()) { var shops = await db.Shops.ToListAsync(); return(mapper.Map <List <Shop>, List <ShopDto> >(shops)); } }
public async Task <ShopDto> GetShop(string name) { using (var db = new BuckwheatContext()) { var shop = await db.Shops.FirstOrDefaultAsync(x => x.Name == name); return(mapper.Map <Shop, ShopDto>(shop)); } }
public async Task <ShopDto> GetShop(int shopId) { using (var db = new BuckwheatContext()) { var shop = await db.Shops.FirstOrDefaultAsync(x => x.Id == shopId); return(mapper.Map <Shop, ShopDto>(shop)); } }
public async Task <List <LotDto> > GetLots(LotFilter filter) { var fromDate = filter.FromDate ?? DateTime.MinValue; var toDate = filter.ToDate ?? DateTime.MaxValue; var limit = (filter.Limit > 0 & filter.Limit <= 50) ? filter.Limit : 50; using (var db = new BuckwheatContext()) { var lotsQuery = db.Lots.AsQueryable(); if (filter.ShopId != null) { lotsQuery = lotsQuery.Where(x => x.Shop.Id == filter.ShopId); } if (filter.FromWeight != null) { lotsQuery = lotsQuery.Where(x => x.WeightInGrams >= filter.FromWeight); } if (filter.ToWeight != null) { lotsQuery = lotsQuery.Where(x => x.WeightInGrams <= filter.ToWeight); } var lastPricesQuery = lotsQuery.Select(lot => db.Prices .Where(p => p.Lot.Id == lot.Id && p.Date >= fromDate && p.Date <= toDate) .OrderByDescending(p => p.Date) .FirstOrDefault()); var orderedPricesQuery = lastPricesQuery; if (filter.Order == "expensive") { orderedPricesQuery = orderedPricesQuery.OrderByDescending(x => x.Value); } else if (filter.Order == "cheap") { orderedPricesQuery = orderedPricesQuery.OrderBy(x => x.Value); } var oredredLotsQuery = orderedPricesQuery .Take(limit) .Select(x => new { Lot = x.Lot, Price = x, Shop = x.Lot.Shop }); var orderedLots = await oredredLotsQuery.ToListAsync(); var orderedLotsDtos = orderedLots.Select(x => { var mapped = mapper.Map <Lot, LotDto>(x.Lot); mapped.Price = mapper.Map <Price, PriceDto>(x.Price); mapped.Shop = mapper.Map <Shop, ShopDto>(x.Shop); return(mapped); }); return(orderedLotsDtos.ToList()); } }
public async Task <List <PriceDto> > GetPrices(int lotId) { using (var db = new BuckwheatContext()) { var prices = await db.Prices .Where(x => x.Lot.Id == lotId) .ToListAsync(); return(mapper.Map <List <Price>, List <PriceDto> >(prices)); } }
public async Task AddShop(ShopDto shopData) { using (var db = new BuckwheatContext()) { Shop shop = mapper.Map <ShopDto, Shop>(shopData); shop.Lots = null; await db.Shops.AddAsync(shop); await db.SaveChangesAsync(); } }
public async Task AddPrice(PriceDto priceData, int lotId) { using (var db = new BuckwheatContext()) { Lot lot = await db.Lots.FirstOrDefaultAsync(x => x.Id == lotId); if (lot == null) { throw new ArgumentException($"Lot with id {lotId} was not found in the database."); } Price price = mapper.Map <PriceDto, Price>(priceData); price.Lot = lot; await db.Prices.AddAsync(price); await db.SaveChangesAsync(); } }
public async Task <LotDto> AddLot(LotDto lotData, int shopId) { using (var db = new BuckwheatContext()) { Shop shop = await db.Shops.FirstOrDefaultAsync(x => x.Id == shopId); if (shop == null) { throw new ArgumentException($"Shop with id {shopId} was not found in the database."); } Lot lot = mapper.Map <LotDto, Lot>(lotData); lot.Shop = shop; await db.Lots.AddAsync(lot); await db.SaveChangesAsync(); return(mapper.Map <Lot, LotDto>(lot)); } }