Exemplo n.º 1
0
        // 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));
        }
Exemplo n.º 2
0
        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));
        }