public async Task <QueryResult <TrainingRequest> > GetTrainingRequests(TrainingRequestsQuery queryObj) { var result = new QueryResult <TrainingRequest>(); IQueryable <TrainingRequest> query = null; if (queryObj.ViewAll.HasValue && queryObj.EmployeeId.HasValue == false) { query = GetQueryableAllTrainingRequests(); } if (queryObj.ViewAll.HasValue == false && queryObj.EmployeeId.HasValue) { if (queryObj.EmployeeId != null) { query = GetQueryableUsersTrainingRequests(queryObj.EmployeeId.Value); } } if (queryObj.ViewAll.HasValue == false && queryObj.EmployeeId.HasValue == false) { query = GetQueryableAllTrainingRequests(); } query = ApplyFiltering(query, queryObj); var columnsMap = new Dictionary <string, Expression <Func <TrainingRequest, object> > >() { ["status"] = trainingRequest => trainingRequest.Status, ["type"] = trainingRequest => trainingRequest.TrainingRequestTypeTitle, ["date"] = trainingRequest => trainingRequest.DateCreated, ["employeeName"] = trainingRequest => trainingRequest.EmployeeName, }; query = _queryableExtensions.ApplyOrderingColumnMap(query, queryObj, columnsMap); result.TotalItems = await query.CountAsync(); query = _queryableExtensions.ApplyPaging(query, queryObj); result.Items = await query.ToListAsync(); return(result); }
private IQueryable <TrainingRequest> ApplyFiltering(IQueryable <TrainingRequest> query, TrainingRequestsQuery queryObj) { // Wild search if (!string.IsNullOrWhiteSpace(queryObj.Search)) { query = query.Where(a => a.DateCreated.ToString().Contains(queryObj.Search) || a.Status.Contains(queryObj.Search) || a.TrainingRequestTypeTitle.Contains(queryObj.Search) || a.EmployeeName.Contains(queryObj.Search) ); } if (!string.IsNullOrWhiteSpace(queryObj.Status)) { query = query.Where(v => v.Status.Contains(queryObj.Status)); } if (!string.IsNullOrWhiteSpace(queryObj.EmployeeName)) { query = query.Where(v => v.Status.Contains(queryObj.Status)); } if (!string.IsNullOrWhiteSpace(queryObj.Type)) { query = query.Where(v => v.TrainingRequestTypeTitle.Contains(queryObj.Type)); } return(query); }
public async Task <ActionResult> GetLetterRequests([FromQuery] TrainingRequestsQuery queryObj) { var queryResult = await _trainingRequestService.GetTrainingRequests(queryObj); return(Ok(queryResult)); }