// GET: Request/Requests /// <summary>Creates a requests list based on specified search criteria.</summary> /// <param name="searchTitle">Title of the searched request.</param> /// <param name="searchClassification">Category of the searched request.</param> /// <param name="searchTeam">Team assigned to the searched request.</param> /// <param name="searchRequestor">Requestor of the searched request.</param> /// <param name="searchAssignee">Admin assigned to searched request.</param> /// <param name="searchStatus">Status of the searched request.</param> /// <param name="searchSubmitDateFrom">The start of submit date range of the searched request.</param> /// <param name="searchSubmitDateTo">The end of submit date range of the searched request.</param> /// <param name="page">Page number for pagination.</param> /// <remarks>If user's role is <see cref="Utilities.ApplicationUserRoles.Requestor"/>, <see cref="IndexRequestsSubmittedByUser"/> is called.</remarks> public async Task <IActionResult> Index(string searchTitle, string searchClassification, string searchTeam, string searchRequestor, string searchAssignee, string searchStatus, string searchSubmitDateFrom, string searchSubmitDateTo, int page = 1) { var currentUserRoleName = await GetCurrentUserRoleNameAsync(); if (currentUserRoleName == "Requestor") { return(RedirectToAction("IndexRequestsSubmittedByUser")); } var currentUser = await GetCurrentUserAsync(); var requests = GetFilteredRequests(searchTitle, searchClassification, searchTeam, searchRequestor, searchAssignee, searchStatus, searchSubmitDateFrom, searchSubmitDateTo).ToList(); List <Request> requestsByTeam = new List <Request>(); string urlIndex = BuildIndexUrl("Index", searchTitle, searchClassification, searchTeam, searchRequestor, searchAssignee, searchStatus, searchSubmitDateFrom, searchSubmitDateTo); if (currentUserRoleName == "Admin") { var currentUserTeamId = _db.AdminAssignedToTeam.Where(a => a.ApplicationUserId == currentUser.Id).Select(a => a.Team.Id).ToList(); foreach (var i in currentUserTeamId) { var result = requests.Where(r => r.Team.Id == i).Select(r => r).ToList(); requestsByTeam.AddRange(result); } requests = requestsByTeam; } RequestsListViewModel requestsListVM = new RequestsListViewModel() { Requests = requests.Skip((page - 1) * PageSize).Take(PageSize).ToList(), SearchTitle = searchTitle, SearchClassification = searchClassification, SearchTeam = searchTeam, SearchRequestor = searchRequestor, SearchAssignee = searchAssignee, SearchStatus = searchStatus, SearchSubmitDateFrom = searchSubmitDateFrom, SearchSubmitDateTo = searchSubmitDateTo, PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = requests.Count(), urlParam = urlIndex } }; return(View(requestsListVM)); }
public async Task <IActionResult> IndexRequestsAssignedToUser(string searchTitle, string searchClassification, string searchTeam, string searchRequestor, string searchAssignee, string searchStatus, string searchSubmitDateFrom, string searchSubmitDateTo, int page = 1) { var requests = GetFilteredRequests(searchTitle, searchClassification, searchTeam, searchRequestor, searchAssignee, searchStatus, searchSubmitDateFrom, searchSubmitDateTo); ApplicationUser currentUser = await GetCurrentUserAsync(); requests = requests.Where(r => r.Assignee.Id == currentUser.Id).Select(r => r) .Include(r => r.Assignee).Include(r => r.Classification).Include(r => r.Requestor).Include(r => r.Team); string urlIndex = BuildIndexUrl("IndexRequestsAssignedToUser", searchTitle, searchClassification, searchTeam, searchRequestor, searchAssignee, searchStatus, searchSubmitDateFrom, searchSubmitDateTo); RequestsListViewModel requestsListVM = new RequestsListViewModel() { Requests = requests.Skip((page - 1) * PageSize).Take(PageSize).ToList(), SearchTitle = searchTitle, SearchClassification = searchClassification, SearchTeam = searchTeam, SearchRequestor = searchRequestor, SearchAssignee = searchAssignee, SearchStatus = searchStatus, SearchSubmitDateFrom = searchSubmitDateFrom, SearchSubmitDateTo = searchSubmitDateTo, PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = requests.Count(), urlParam = urlIndex } }; return(View(requestsListVM)); }