/// <summary> /// Retrive params from client request /// /// </summary> /// <param name="requestData">The dictinary with client request parameters</param> /// <param name="reqDefinitions">The typed parameter container</param> public static UserRequestParams RetriveQueryParam(IQueryCollection requestData, Dictionary <string, RequestParamName> reqDefinitions) { var result = new UserRequestParams(); uint pageNumber = 0; uint pageSize = 0; if (requestData.ContainsKey(reqDefinitions["page"].UserDefinedValue)) { UInt32.TryParse(requestData[reqDefinitions["page"].UserDefinedValue], out pageNumber); result.pageNumber = pageNumber; } if (requestData.ContainsKey(reqDefinitions["size"].UserDefinedValue)) { UInt32.TryParse(requestData[reqDefinitions["size"].UserDefinedValue], out pageSize); result.pageSize = pageSize; } if (requestData.ContainsKey(reqDefinitions["filter"].UserDefinedValue)) { result.filter = requestData[reqDefinitions["filter"].UserDefinedValue]; } if (requestData.ContainsKey(reqDefinitions["sort"].UserDefinedValue)) { result.sort = requestData[reqDefinitions["sort"].UserDefinedValue]; } if (requestData.ContainsKey(reqDefinitions["sortdirection"].UserDefinedValue)) { result.sortDirection = requestData[reqDefinitions["sortdirection"].UserDefinedValue]; } return(result); }
private static IEnumerable<TE> GetDBQueryResult<T, TE>(T dbcontext, UserRequestParams QueryParams) where T : DbContext, IDisposable where TE : class { IEnumerable<TE> queryResult; int skip = (int)((QueryParams.pageNumber - 1) * QueryParams.pageSize); if (QueryParams.pageSize == 0) { if (!String.IsNullOrWhiteSpace(QueryParams.sort) && typeof(TE).GetProperty(QueryParams.sort) != null) { if (!String.IsNullOrWhiteSpace(QueryParams.sortDirection)) { queryResult = dbcontext.Set<TE>().AsNoTracking().Where(QueryParams.filter).OrderByDescending(QueryParams.sort).ToList<TE>(); } else { queryResult = dbcontext.Set<TE>().AsNoTracking().Where(QueryParams.filter).OrderBy(QueryParams.sort).ToList<TE>(); } } else { queryResult = dbcontext.Set<TE>().AsNoTracking().Where(QueryParams.filter).ToList<TE>(); } } else { if (!String.IsNullOrWhiteSpace(QueryParams.sort) && typeof(TE).GetProperty(QueryParams.sort) != null) { if (!String.IsNullOrWhiteSpace(QueryParams.sortDirection)) { queryResult = dbcontext.Set<TE>().AsNoTracking().Where(QueryParams.filter).OrderByDescending(QueryParams.sort).Skip(skip).Take((int)QueryParams.pageSize).ToList<TE>(); } else { queryResult = dbcontext.Set<TE>().AsNoTracking().Where(QueryParams.filter).OrderBy(QueryParams.sort).Skip(skip).Take((int)QueryParams.pageSize).ToList<TE>(); } } else { queryResult = dbcontext.Set<TE>().AsNoTracking().Where(QueryParams.filter).Skip(skip).Take((int)QueryParams.pageSize).ToList<TE>(); } } return queryResult; }