public ActionResult PMDashboard() { //HelperMethod for Histories/Notifications var ticketCustomHelper = new TicketCustomHelper(); //UserRoles Helper var userRolesHelper = new UserRolesHelper(db); var currentUser = db.Users.Find(User.Identity.GetUserId()); var userProjects = currentUser.Projects.ToList(); var AllProjectsTickets = userProjects.SelectMany(p => p.Tickets).ToList(); //Passes All Tickets for all projects to partial view var DispTicketsVM1 = new DispTicketsVM(); DispTicketsVM1.TicketList = AllProjectsTickets; DispTicketsVM1.TitleDesc = "All Tickets from your Projects only."; ViewData["MyProjectsTicketsList"] = DispTicketsVM1; //List Tickets for Each Project and allow bulk assignment var allDevelopers = userRolesHelper.GetAllUsersInRole("Developer").OrderBy(u => u.DisplayName); //Instantiate Big View Model (for encapsulating other VMs) var PMDashboardVM = new PMDashboardVM(); PMDashboardVM.PMVMListForPartials = new List <PMTicketProjectsSelectVM>(); PMDashboardVM.MyProjects = userProjects; var projectsArr = userProjects.ToArray(); for (var i = 0; i < projectsArr.Length; i++) { //Instantiate New VM for each Project's Developers(select list) & UnAssigned Tickets(table/checkboxes) var PMTicketProjectsSelectVM = new PMTicketProjectsSelectVM(); PMTicketProjectsSelectVM.PMUsersInProjectVMList = new List <PMUsersInProjectVM>(); PMTicketProjectsSelectVM.PMAssignUsersTicketList = new List <PMAssignUsersTicketVM>(); //Get Developers & Unassigned Tickets var developersInProject = allDevelopers.Where(u => u.Projects.Contains(projectsArr[i])).ToArray(); var ticketsInProject = projectsArr[i].Tickets.Where(x => x.AssignedToUser == null).ToArray(); //Build Developer User List for (var x = 0; x < developersInProject.Length; x++) { PMTicketProjectsSelectVM.PMUsersInProjectVMList.Add(new PMUsersInProjectVM() { ProjectId = projectsArr[i].Id, UserDisplayName = developersInProject[x].DisplayName, UserId = developersInProject[x].Id }); } //Build Unassigned Ticket List w/ checkbox values for (var x = 0; x < ticketsInProject.Length; x++) { PMTicketProjectsSelectVM.PMAssignUsersTicketList.Add(new PMAssignUsersTicketVM() { ProjectId = projectsArr[i].Id, TicketId = ticketsInProject[x].Id, Ticket = ticketsInProject[x], IsChecked = false }); } //Adds Developers & Tickets as one List Item PMTicketProjectsSelectVM.ProjectId = projectsArr[i].Id; PMTicketProjectsSelectVM.ProjectName = projectsArr[i].Name; PMDashboardVM.PMVMListForPartials.Add(PMTicketProjectsSelectVM); } var ticketHistoriesList = new List <TicketHistory>(); foreach (var item in userProjects) { var newList = db.TicketHistories.OrderByDescending(h => h.UpdatedTime).Where(h => h.Ticket.ProjectID == item.Id).ToList(); ticketHistoriesList.AddRange(newList); } var projectHistoriesList = ticketHistoriesList.OrderByDescending(h => h.UpdatedTime).ToList(); //Data for TicketHistories var historyTimesList = projectHistoriesList.Select(x => x.UpdatedTime).Distinct().ToList(); var ticketHistoryList = new List <TicketHistory>().ToArray(); var TopList = new List <TopDispHist>(); foreach (var item in historyTimesList) { var TopDispHist = new TopDispHist(); TopDispHist.HistEntriesList = new List <TicketHistory>(); var ticketEntry = projectHistoriesList.Where(t => t.UpdatedTime == item); TopDispHist.HistEntriesList.AddRange(ticketEntry.ToList()); TopDispHist.Created = item; TopDispHist.DisplayName = TopDispHist.HistEntriesList.First().UpdatedByUser.DisplayName; TopList.Add(TopDispHist); } ViewData["ticketHistoryList"] = (List <TopDispHist>)TopList.Take(15).ToList(); var VMList = PMDashboardVM.PMVMListForPartials; ViewData["ViewModelList"] = (List <PMTicketProjectsSelectVM>)VMList; return(View(PMDashboardVM)); }
public ActionResult Ticket(int Id) { //UserRoles Helper var userRolesHelper = new UserRolesHelper(db); //Get Ticket & Instantiate Model var ticket = db.TicketPosts.Find(Id); var currentUser = db.Users.Find(User.Identity.GetUserId()); var TicketPost = new TicketPost(); TicketPost = ticket; if (currentUser == ticket.AssignedToUser || currentUser == ticket.OwnerUser || User.IsInRole("Project Manager") || User.IsInRole("Admin") || ticket.Project.Users.Contains(currentUser)) { } else { string errcode = "Access Denied, Ticket ( #" + ticket.Id.ToString() + " ) User:"******"Err403", "BT", new { errcode = errcode })); } //Set Dropdowns for edit tab. ViewBag.TicketPriorityID = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityID); ViewBag.TicketStatusID = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusID); ViewBag.TicketTypeID = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeID); var allDevelopers = userRolesHelper.GetAllUsersInRole("Developer").OrderBy(u => u.DisplayName); var developersInProject = allDevelopers.Where(u => u.Projects.Contains(ticket.Project)); string assignedUser; if (ticket.AssignedToUserID == null) { assignedUser = "******"; } else { assignedUser = ticket.AssignedToUserID; } ViewBag.AssignedToUserID = new SelectList(developersInProject, "Id", "DisplayName", assignedUser); //Data for TicketHistories var ticketHistory = TicketPost.TicketHistories.OrderByDescending(x => x.UpdatedTime).ToList(); var historyTimesList = ticketHistory.Select(x => x.UpdatedTime).Distinct().ToList(); var ticketHistoryList = new List <TicketHistory>().ToArray(); var TopList = new List <TopDispHist>(); foreach (var item in historyTimesList) { var TopDispHist = new TopDispHist(); TopDispHist.HistEntriesList = new List <TicketHistory>(); var ticketEntry = ticketHistory.Where(t => t.UpdatedTime == item); TopDispHist.HistEntriesList.AddRange(ticketEntry.ToList()); TopDispHist.Created = item; TopDispHist.DisplayName = TopDispHist.HistEntriesList.First().UpdatedByUser.DisplayName; TopList.Add(TopDispHist); } ViewData["ticketHistoryList"] = (List <TopDispHist>)TopList; ViewBag.TopDisp = (List <TopDispHist>)TopList; //Get Comments for ticket var commentList = ticket.TicketComments.OrderByDescending(c => c.Created).ToList(); ViewData["CommentList"] = (List <TicketComment>)commentList; //For Attachment Partial - May not need. ViewData["currentTicket"] = (TicketPost)ticket; if (User.IsInRole("Admin") || User.IsInRole("Project Manager")) { return(View(TicketPost)); } if (ticket.Project.Users.Contains(currentUser)) { return(View(TicketPost)); } else { string errcode = User.Identity.Name + " Permission not granted, ViewTicket, Ticket:" + ticket.Id; return(RedirectToAction("Err403", "BT", new { errcode = errcode })); } }