public async Task <IActionResult> FindByDateAsync(string jsonValues) { try { SalesRecordByDateIncluding request = JsonConvert.DeserializeObject <SalesRecordByDateIncluding>(jsonValues); var result = _context.SalesRecord.Select(p => p); if (request.MinDate.HasValue) { result = result.Where(p => p.Date >= request.MinDate.Value); } if (request.MaxDate.HasValue) { result = result.Where(p => p.Date <= request.MaxDate.Value); } foreach (var classToInclude in request.IncludeList) { result = result.Include(classToInclude); } result = result.OrderByDescending(p => p.Date); if (request.GroupBySellerDepartment) { List <MyGrouping> response = await result.GroupBy(p => p.Seller.Department, (key, group) => new MyGrouping { Key = key, Sales = group }).ToListAsync(); return(Ok(response)); } return(Ok(await result.ToListAsync())); } catch (System.Exception) { throw; } }
public async Task <IActionResult> GroupingSearch(DateTime?minDate, DateTime?maxDate) { var includeList = new List <string> { "Seller", "Seller.Department" }; var request = new SalesRecordByDateIncluding { MinDate = minDate, MaxDate = maxDate, IncludeList = includeList, GroupBySellerDepartment = true }; string jsonValues = JsonConvert.SerializeObject(request); var result = await _webApiService.FindByDateGroupingAsync <SalesRecord>(jsonValues); ViewData["minDate"] = minDate?.Date.ToString("yyyy-MM-dd"); ViewData["maxDate"] = maxDate?.Date.ToString("yyyy-MM-dd"); return(View(result)); }