public async Task <List <Sale> > GetSaleList(SaleListFilterModel filter)
 {
     return(await context.Sales
            .Where(s => (filter.Id > 0 ? s.Id == filter.Id : true) &&
                   (string.IsNullOrEmpty(filter.ProductName) ? true : s.ProductName.Contains(filter.ProductName)) &&
                   (string.IsNullOrEmpty(filter.UserName) ? true : s.UserName.Contains(filter.UserName)) &&
                   (string.IsNullOrEmpty(filter.ProductId) ? true : s.ProductId.Contains(filter.ProductId)) &&
                   (filter.MaxPrice > 0 ? s.Price <= filter.MaxPrice : true) && s.Price > filter.MinPrice)
            .Include(s => s.City).Where(s => string.IsNullOrEmpty(filter.CityName) ? true : s.City.Name.Contains(filter.CityName))
            .OrderByDescending(s => s.Id).Skip(filter.Page * filter.Count).Take(filter.Count).ToListAsync());
 }
 public GetSaleListQuery(SaleListFilterModel filter)
 {
     Filter = filter;
 }
 public async Task <IActionResult> GetList(SaleListFilterModel filter)
 {
     return(Ok(await mediator.Send(new GetSaleListQuery(filter))));
 }
        public async Task <long> GetLastSalePrice(SaleListFilterModel filter)
        {
            var sale = await context.Sales.Where(s => s.CityId == filter.MaxPrice && s.ProductId == filter.ProductId && s.UserName == filter.UserName).OrderByDescending(s => s.Id).FirstOrDefaultAsync();

            return(sale == null ? 0 : sale.Price);
        }