public async Task<IEnumerable<Request>> FilterRequestsAsync(RequestSearch specifiedRequest, IQueryable<Request> requests) { if (specifiedRequest.Description != null) { requests = requests.Where(x => x.Description.Contains(specifiedRequest.Description)); } if (specifiedRequest.Location != null) { requests = requests.Where(x => x.Location.Contains(specifiedRequest.Location)); } if (specifiedRequest.NullableCreatedDate != null) { requests = requests.Where(x => x.CreatedDate == specifiedRequest.NullableCreatedDate); } if (specifiedRequest.NullableEndDate != null) { requests = requests.Where(x => x.EndDate == specifiedRequest.NullableEndDate); } if (specifiedRequest.RequestStatus != RequestStatus.All) { switch (specifiedRequest.RequestStatus) { case RequestStatus.Unassigned: requests = requests.Where(x => x.Completed == false && !x.AssigneeId.HasValue); break; case RequestStatus.Assigned: requests = requests.Where(x => x.Completed == false && x.AssigneeId.HasValue); break; case RequestStatus.Completed: requests = requests.Where(x => x.Completed == true); break; default: throw new ArgumentException("A valid request status was not selected."); } } return await requests.ToListAsync(); }
public async Task<ActionResult> VolunteerRequestIndex(RequestSearch specifiedRequest) { var volunteersRequest = await _requestSvc.GetRequestForUserAsync(_webSecurity.CurrentUserId); var openRequests = await _requestSvc.GetOpenRequestsAsync(); return View("VolunteerRequestAssignment", new VolunteerRequestIndexViewModel() { RequestAssignedToVolunteer = volunteersRequest, OpenRequests = openRequests }); }
public async Task<ActionResult> Filter(RequestSearch specifiedRequest, string sortField, string sortOrder) { IQueryable<Request> requests = db.Requests.Include(r => r.Creator).Include(r => r.Assignee); IEnumerable<Request> filteredRequests = await _requestSvc.FilterRequestsAsync(specifiedRequest, requests); IOrderedEnumerable<Request> sortedRequests = _requestSvc.SortRequests(sortField, sortOrder, filteredRequests); ViewBag.SortOrderParam = String.IsNullOrEmpty(sortOrder) ? "desc" : sortOrder; ViewBag.SortFieldParam = String.IsNullOrEmpty(sortOrder) ? "EndDate" : sortField; ViewBag.SpecifiedRequest = specifiedRequest; return View("Index", new AdminRequestIndexViewModel() { Requests = sortedRequests, RequestSearch = specifiedRequest }); }