Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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));
            }
        }
Exemplo n.º 4
0
        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));
            }
        }
Exemplo n.º 5
0
        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));
            }
        }
Exemplo n.º 6
0
        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());
            }
        }
Exemplo n.º 7
0
        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));
            }
        }
Exemplo n.º 8
0
        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();
            }
        }
Exemplo n.º 9
0
        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();
            }
        }
Exemplo n.º 10
0
        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));
            }
        }