Example #1
0
        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));
        }
Example #2
0
        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"));
        }
Example #3
0
        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));
        }
Example #4
0
        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 }));
            }
        }