public async Task <ActionResult> ProjectDetails(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Projects projects = await db.Projects.FindAsync(id); if (projects == null) { return(HttpNotFound()); } //UserRoles Helper var userRolesHelper = new UserRolesHelper(db); ViewBag.TicketDisplayDescription = "All Tickets for Project: " + projects.Name; ViewData["TicketsCollection"] = projects.Tickets.ToList(); //Get users in roles for project details data var allDevelopers = userRolesHelper.GetAllUsersInRole("Developer").OrderBy(u => u.DisplayName); var developersInProject = allDevelopers.Where(u => u.Projects.Contains(projects)); var allProjectManagers = userRolesHelper.GetAllUsersInRole("Project Manager").OrderBy(u => u.DisplayName); var projectManagersInProject = allProjectManagers.Where(u => u.Projects.Contains(projects)); var ProjectDetailsVM = new ProjectDetailsVM(); ProjectDetailsVM.Project = projects; ProjectDetailsVM.DeveloperCount = developersInProject.Count(); ProjectDetailsVM.ProjectManagers = projectManagersInProject.ToList(); ProjectDetailsVM.TotalTickets = projects.Tickets.Count(); ProjectDetailsVM.UnassignedCount = projects.Tickets.Where(t => t.AssignedToUser == null).Count(); //Data for create ticket partial ViewBag.TicketPriorityID = new SelectList(db.TicketPriorities, "Id", "Name"); ViewBag.TicketTypeID = new SelectList(db.TicketTypes, "Id", "Name"); return(View(ProjectDetailsVM)); }
public ActionResult Index() { if (User.IsInRole("Registered User")) { return(RedirectToAction("FP403Error", "Error")); } if (Request.IsAuthenticated) { var currentUser = db.Users.Find(User.Identity.GetUserId()); var myNotifications = db.TicketNotifications.Where(x => x.UserID == currentUser.Id).ToList(); var currentTime = DateTimeOffset.UtcNow; var myOwnedTicketsCount = db.TicketPosts.Where(x => x.OwnerUserID == currentUser.Id).Where(t => t.TicketStatusID != 1).Count(); var myAssignedTicketsCount = db.TicketPosts.Where(x => x.AssignedToUserID == currentUser.Id).Count(); var myNotificationsCount = myNotifications.Count(); var myNotificationsLast24Hrs = myNotifications.Where(x => x.Created > (currentTime.Subtract(new TimeSpan(24, 0, 0)))).Count(); var myNotificationsLast72Hrs = myNotifications.Where(x => x.Created > (currentTime.Subtract(new TimeSpan(72, 0, 0)))).Count(); var myNotificationsLast7Days = myNotifications.Where(x => x.Created > (currentTime.Subtract(new TimeSpan(168, 0, 0)))).Count(); var myProjects = currentUser.Projects.OrderBy(m => m.Name).ToList(); //UserRoles Helper var userRolesHelper = new UserRolesHelper(db); var myRoles = userRolesHelper.ListUserRoles(currentUser.Id).ToList(); var allProjectManagers = userRolesHelper.GetAllUsersInRole("Project Manager").OrderBy(u => u.DisplayName).ToList(); var MyHomeProjects = new MyHomeProjects(); MyHomeProjects.allProjectManagers = new List <string>(); MyHomeProjects.Projects = new List <Projects>(); foreach (var item in myProjects) { var projectManagersInProject = allProjectManagers.Where(u => u.Projects.Contains(item)).ToArray(); StringBuilder PMs = new StringBuilder(); for (int i = 0; i < projectManagersInProject.ToArray().Length; i++) { PMs.Append(projectManagersInProject[i].DisplayName); if (i != (projectManagersInProject.ToArray().Length - 1)) { PMs.Append(", "); } } MyHomeProjects.allProjectManagers.Add(PMs.ToString()); MyHomeProjects.Projects.Add(item); } var MyHomeVM = new MyHomeVM(); MyHomeVM.CurrentUser = currentUser; MyHomeVM.myOwnedTicketsCount = myOwnedTicketsCount; MyHomeVM.myAssignedTicketsCount = myAssignedTicketsCount; MyHomeVM.myNotificationsCount = myNotificationsCount; MyHomeVM.myNotificationsLast24Hrs = myNotificationsLast24Hrs; MyHomeVM.myNotificationsLast72Hrs = myNotificationsLast72Hrs; MyHomeVM.myNotificationsLast7Days = myNotificationsLast7Days; MyHomeVM.myProjects = myProjects; MyHomeVM.myRoles = myRoles; MyHomeVM.MyHomeProjects = MyHomeProjects; return(View(MyHomeVM)); } return(RedirectToAction("Login", "Account")); }
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 })); } }