public async Task <IActionResult> All( int selectedPage, int maxNumberPerItemsPage, string searchValue = "", string filterStatus = CoreConst.GetAllRecords, bool isSortAsce = true, string sortName = "Date", string disputeFilter = CoreConst.GetAllRecords) { try { _ = bool.TryParse(disputeFilter, out bool boolDisputeFilter); bool closeDisput = await _DbContext.Orders.Include(o => o.Dispute) .AnyAsync(o => !o.Dispute.Status).ConfigureAwait(false); bool openDisput = await _DbContext.Orders.Include(o => o.Dispute) .AnyAsync(o => o.Dispute.Status).ConfigureAwait(false); int totalCount = await _DbContext.Orders .Include(o => o.User) .Include(o => o.Payment) .Include(o => o.Dispute) .Where(o => filterStatus.Equals(CoreConst.GetAllRecords) || o.Status.Equals((OrderStatusType)Enum.Parse(typeof(OrderStatusType), filterStatus, true))) .Where(o => disputeFilter.Equals(CoreConst.GetAllRecords) || o.Dispute.Status == boolDisputeFilter) .CountAsync(o => searchValue.Equals(CoreConst.GetAllRecords) || o.Name.Contains(searchValue) || o.User.FirstName.Contains(searchValue) || o.User.Surname.Contains(searchValue) || o.User.Email.Contains(searchValue) || o.Id.Contains(searchValue) || o.Postcode.Contains(searchValue) || o.Payment.Email.Contains(searchValue) || o.Payment.Reference.Contains(searchValue)) .ConfigureAwait(false); List <OrderStatusType> availebeStatusTypes = await _DbContext.Orders .Select(o => o.Status) .Distinct() .ToListAsync() .ConfigureAwait(false); List <Order> list = await _DbContext.Orders .Include(o => o.User) .Include(o => o.Payment) .Include(o => o.Dispute) .ThenInclude(c => c.Messages) .Where(o => filterStatus.Equals(CoreConst.GetAllRecords) || o.Status.Equals((OrderStatusType)Enum.Parse(typeof(OrderStatusType), filterStatus, true))) .Where(o => disputeFilter.Equals(CoreConst.GetAllRecords) || o.Dispute.Status == boolDisputeFilter) .Where(o => searchValue.Equals(CoreConst.GetAllRecords) || o.Name.Contains(searchValue) || o.User.FirstName.Contains(searchValue) || o.User.Surname.Contains(searchValue) || o.User.Email.Contains(searchValue) || o.Id.Contains(searchValue) || o.Postcode.Contains(searchValue) || o.Payment.Email.Contains(searchValue) || o.Payment.Reference.Contains(searchValue)) .OrderByDynamic(sortName, isSortAsce) .Skip((selectedPage - 1) * maxNumberPerItemsPage) .Take(maxNumberPerItemsPage) .Include(o => o.OrderItems) .ThenInclude(oi => oi.Product) .ToListAsync() .ConfigureAwait(false); return(Ok(new MultiResult <List <Order>, List <OrderStatusType>, int, DisputeFilterTypes>(list, availebeStatusTypes, totalCount, AppFunc.GetDisputeFilterTypes(closeDisput, openDisput), CoreFunc.GetCustomAttributeTypedArgument(this.ControllerContext)))); } catch (Exception ex) { CoreFunc.Error(ref ErrorsList, _LoggingService.LogException(Request.Path, ex, User)); return(StatusCode(417, ErrorsList)); } }