Пример #1
0
        //GET
        public ActionResult Details(string Id)


        {
            ProjectAssignHelper ph = new ProjectAssignHelper();
            UserRolesHelper     UH = new UserRolesHelper(db);
            var userId             = User.Identity.GetUserId();
            var user = db.Users.Find(userId);

            if (UH.IsUserInRole(userId, "Admin") || UH.IsUserInRole(userId, "Administrator") || userId == Id)
            {
                if (Id != null)
                {
                    UsersRolesViewModel userRoleViewModel2 = new UsersRolesViewModel();
                    userRoleViewModel2.User      = db.Users.Find(Id);
                    userRoleViewModel2.Roles     = helper.ListUserRoles(Id);
                    userRoleViewModel2.Tickets   = db.Tickets.ToList();
                    userRoleViewModel2.Projectsb = db.Projects.ToList();

                    //userRoleViewModel.Projects = helper.
                    var SubmitterlessRolesList = db.Roles.Where(r => r.Name != "Submitter");
                    ViewBag.Roles = new MultiSelectList(SubmitterlessRolesList, "Name", "Name");

                    //ViewBag.Roles = new MultiSelectList(db.Topics, "Id", "TopicName");

                    return(View(userRoleViewModel2));
                }
                else
                {
                    UsersRolesViewModel userRoleViewModel = new UsersRolesViewModel();
                    userRoleViewModel.User    = db.Users.Find(userId);
                    userRoleViewModel.Roles   = helper.ListUserRoles(userId);
                    userRoleViewModel.Tickets = db.Tickets.ToList();
                    List <Project> UserProjects = new List <Project>();
                    foreach (var project in db.Projects)
                    {
                        if (ph.IsUserOnAProject(userId, project.Id))
                        {
                            UserProjects.Add(project);
                        }
                    }
                    userRoleViewModel.Projectsb = UserProjects;
                    //userRoleViewModel.Projects = helper.
                    var SubmitterlessRolesList = db.Roles.Where(r => r.Name != "Submitter");
                    ViewBag.Roles = new MultiSelectList(SubmitterlessRolesList, "Name", "Name");

                    //ViewBag.Roles = new MultiSelectList(db.Topics, "Id", "TopicName");

                    return(View(userRoleViewModel));
                }
            }
            var Temporary = "You cannot view Details of this User.  Please revisit your role assignment.  You may view your own user details, but other user's details can only be viewed by Administrators. ";

            TempData["message"] = Temporary;
            return(RedirectToAction("Index", "Users"));
        }
Пример #2
0
        public async Task <ActionResult> Create([Bind(Include = "Id,TicketId,Comment")] TicketComment ticketComment, int Id)
        {
            if (ModelState.IsValid)
            {
                UserRolesHelper     helper = new UserRolesHelper(db);
                ProjectAssignHelper ph     = new ProjectAssignHelper();
                var userId = User.Identity.GetUserId();
                var user   = db.Users.Find(userId);
                var ticket = db.Tickets.Find(Id);


                TicketNotification TN = new TicketNotification();
                TN.TicketId = ticket.Id;
                TN.UserId   = ticket.AssignedToUserId;
                TN.User     = ticket.AssignedToUser;
                db.TicketNotifications.Add(TN);

                var message = new IdentityMessage
                {
                    Body = "The ticket" + " " + ticket.Title + " " + "from project" + " " + ticket.Project.Name + " " + "has been commented on by" + " " + user.FirstName + user.LastName + "." + "  " +
                           "Please see your ticket comments to view the comment.",
                    Subject     = "Your ticket has been commented on.",
                    Destination = TN.User.Email
                };
                EmailService email = new EmailService();
                await email.SendAsync(message);



                var userroleAdmin           = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator");
                var userroleProjectManager1 = helper.IsUserInRole(userId, "Project Manager1");
                var userroleProjectManager2 = helper.IsUserInRole(userId, "Project Manager2");
                var userroleProjectManager3 = helper.IsUserInRole(userId, "Project Manager3");
                var userroleDeveloper1      = helper.IsUserInRole(userId, "Developer1");
                var userroleDeveloper2      = helper.IsUserInRole(userId, "Developer2");
                var userroleDeveloper3      = helper.IsUserInRole(userId, "Developer3");
                var userroleDeveloper4      = helper.IsUserInRole(userId, "Developer4");
                var userroleSubmitter       = helper.IsUserInRole(userId, "Submitter");

                int ticketid  = Id;
                int projectid = ticket.Project.Id;

                if (userroleAdmin || userroleProjectManager1 && ph.IsUserOnAProject(userId, projectid) || userroleProjectManager2 && ph.IsUserOnAProject(userId, projectid) || userroleProjectManager3 && ph.IsUserOnAProject(userId, projectid) ||
                    userroleDeveloper1 && ticket.AssignedToUserId == userId || userroleDeveloper2 && ticket.AssignedToUserId == userId || userroleDeveloper3 && ticket.AssignedToUserId == userId ||
                    userroleDeveloper4 && ticket.AssignedToUserId == userId || userroleSubmitter && ticket.SubmitterUserId == userId)
                {
                    ticketComment.Ticket   = ticket;
                    ticketComment.UserId   = userId;
                    ticketComment.User     = user;
                    ticketComment.TicketId = ticket.Id;
                    string y = "";
                    ticketComment.CreatedDate = DateTime.UtcNow;
                    TimeSpan elapsed = DateTime.UtcNow - ticketComment.CreatedDate;



                    double hours   = elapsed.TotalHours;
                    double minutes = elapsed.TotalMinutes;
                    string s       = elapsed.ToString();

                    db.TicketComments.Add(ticketComment);
                    db.SaveChanges();
                    return(RedirectToAction("Details", "Tickets", new { id = Id }));
                }



                else
                {
                    var Temporary = "You cannot add comments to this ticket.  Please revisit your role assignment.  Tickets can only be commented on by their creator, a developer assigned to the ticket, a project manager, or an administrator.";
                    TempData["message"] = Temporary;
                }
            }
            return(RedirectToAction("Details", "Tickets", new { id = Id }));
        }
Пример #3
0
        public ActionResult LayoutPartial()
        {
            var currentuser = db.Users.Find(User.Identity.GetUserId());

            if (currentuser != null)
            {
                UserRolesHelper     uh = new UserRolesHelper(db);
                UsersRolesViewModel vm = new UsersRolesViewModel();
                vm.User  = db.Users.Find(User.Identity.GetUserId());
                vm.Roles = uh.ListUserRoles(vm.User.Id);

                UserRolesHelper     helper                    = new UserRolesHelper(db);
                ProjectAssignHelper ph                        = new ProjectAssignHelper();
                var                    userId                 = User.Identity.GetUserId();
                var                    user                   = db.Users.Find(userId);
                var                    userroleAdmin          = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator");
                var                    userroleDeveloper      = helper.IsUserInRole(userId, "Developer1") || helper.IsUserInRole(userId, "Developer2") || helper.IsUserInRole(userId, "Developer3") || helper.IsUserInRole(userId, "Developer4");
                var                    userroleProjectManager = helper.IsUserInRole(userId, "Project Manager1") || helper.IsUserInRole(userId, "Project Manager2") || helper.IsUserInRole(userId, "Project Manager3");
                var                    userroleSubmitter      = helper.IsUserInRole(userId, "Submitter");
                List <Project>         DeveloperProjects      = new List <Project>();
                List <ApplicationUser> Developers             = helper.UsersInRole("Developer1").Concat(helper.UsersInRole("Developer2")).Concat(helper.UsersInRole("Developer3")).Concat(helper.UsersInRole("Developer4")).ToList();



                List <Project> userprojects = new List <Project>();
                foreach (var project in db.Projects)
                {
                    if (ph.IsUserOnAProject(userId, project.Id))
                    {
                        userprojects.Add(project);
                    }
                }

                ViewBag.projectcount = userprojects.Count();


                List <Ticket> usertickets = new List <Ticket>();

                if (helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator"))
                {
                    foreach (var ticket in db.Tickets)
                    {
                        usertickets.Add(ticket);
                    }
                    ViewBag.ticketcount = usertickets.Count();
                }

                else if (userroleProjectManager)
                {
                    List <Project> UserProjects = new List <Project>();
                    foreach (var x in db.Projects)
                    {
                        if (ph.IsUserOnAProject(userId, x.Id))
                        {
                            UserProjects.Add(x);
                        }
                    }

                    foreach (var project in UserProjects)
                    {
                        foreach (var ticket in project.Tickets)
                        {
                            usertickets.Add(ticket);
                        }
                    }
                    var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived");
                    var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");
                    ViewBag.ticketcount       = nonarchivedtickets.Count();
                    ViewBag.urgentticketcount = urgenttickets.Count();
                }


                else if (userroleDeveloper)
                {
                    List <Project> UserProjects = new List <Project>();
                    foreach (var x in db.Projects)
                    {
                        if (ph.IsUserOnAProject(userId, x.Id))
                        {
                            UserProjects.Add(x);
                        }
                    }

                    foreach (var project in UserProjects)
                    {
                        foreach (var ticket in project.Tickets)
                        {
                            usertickets.Add(ticket);
                        }
                    }
                    var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived");

                    ViewBag.ticketcount = nonarchivedtickets.Count();
                }

                else if (userroleSubmitter)
                {
                    var tickets = db.Tickets.Where(t => t.SubmitterUserId == userId).ToList();

                    var nonarchivedtickets = tickets.Where(t => t.TicketStatus.Name != "Archived");
                    ViewBag.ticketcount = nonarchivedtickets.Count();
                }

                return(PartialView("~/Areas/BugTracker/Views/Shared/_LayoutPartial.cshtml", vm));
            }

            return(RedirectToAction("Index", "Home", new { area = "BugTracker" }));
        }
Пример #4
0
        public ActionResult Landing()
        {
            List <TicketData> TicketChartList = new List <TicketData>();



            TicketData TicketData1 = new TicketData();

            var dateago  = DateTime.Now.Date.AddDays(-7).ToString("d");
            var dateago2 = DateTime.Now.Date.AddDays(-6).ToString("d");
            var dateago3 = DateTime.Now.Date.AddDays(-5).ToString("d");
            var dateago4 = DateTime.Now.Date.AddDays(-4).ToString("d");
            var dateago5 = DateTime.Now.Date.AddDays(-3).ToString("d");
            var dateago6 = DateTime.Now.Date.AddDays(-2).ToString("d");
            var dateago7 = DateTime.Now.Date.AddDays(-1).ToString("d");
            var tickets  = new List <Ticket>();

            foreach (var ticket in db.Tickets)
            {
                if (ticket.CreatedDate.ToString("d") == dateago)
                {
                    tickets.Add(ticket);
                }
            }

            TicketData1.DayofWeek = DateTime.Now.Date.AddDays(-7).DayOfWeek.ToString();
            if (tickets.Count() != 0)
            {
                TicketData1.StatusA = tickets.Where(t => t.TicketPriority.Name == "Urgent").Count();
                TicketData1.StatusB = tickets.Where(t => t.TicketPriority.Name == "Normal").Count();
                TicketData1.StatusC = tickets.Where(t => t.TicketPriority.Name == "Low").Count();
                TicketChartList.Add(TicketData1);
            }
            else
            {
                TicketData1.StatusA = 0;
                TicketData1.StatusB = 0;     //makes sense go ahead and apply this to every case ok
                TicketData1.StatusC = 0;
                TicketChartList.Add(TicketData1);
            }

            var tickets2 = new List <Ticket>();

            foreach (var ticket in db.Tickets)
            {
                if (ticket.CreatedDate.ToString("d") == dateago2)
                {
                    tickets2.Add(ticket);
                }
            }

            TicketData TicketData3 = new TicketData();

            TicketData3.DayofWeek = DateTime.Now.Date.AddDays(-6).DayOfWeek.ToString();
            if (tickets2.Count() != 0)
            {
                TicketData3.StatusA = tickets2.Where(t => t.TicketPriority.Name == "Urgent").Count();
                TicketData3.StatusB = tickets2.Where(t => t.TicketPriority.Name == "Normal").Count();
                TicketData3.StatusC = tickets2.Where(t => t.TicketPriority.Name == "Low").Count();
                TicketChartList.Add(TicketData3);
            }
            else
            {
                TicketData3.StatusA = 0;
                TicketData3.StatusB = 0;
                TicketData3.StatusC = 0;
                TicketChartList.Add(TicketData3);
            }

            var tickets3 = new List <Ticket>();

            foreach (var ticket in db.Tickets)
            {
                if (ticket.CreatedDate.ToString("d") == dateago3)
                {
                    tickets3.Add(ticket);
                }
            }

            TicketData TicketData4 = new TicketData();

            TicketData4.DayofWeek = DateTime.Now.Date.AddDays(-5).DayOfWeek.ToString();

            if (tickets3.Count() != 0)
            {
                TicketData4.StatusA = tickets3.Where(t => t.TicketPriority.Name == "Urgent").Count();
                TicketData4.StatusB = tickets3.Where(t => t.TicketPriority.Name == "Normal").Count();
                TicketData4.StatusC = tickets3.Where(t => t.TicketPriority.Name == "Low").Count();
                TicketChartList.Add(TicketData4);
            }
            else
            {
                TicketData4.StatusA = 0;
                TicketData4.StatusB = 0;
                TicketData4.StatusC = 0;
                TicketChartList.Add(TicketData4);
            }


            var tickets4 = new List <Ticket>();

            foreach (var ticket in db.Tickets)
            {
                if (ticket.CreatedDate.ToString("d") == dateago4)
                {
                    tickets4.Add(ticket);
                }
            }


            TicketData TicketData5 = new TicketData();

            TicketData5.DayofWeek = DateTime.Now.Date.AddDays(-4).DayOfWeek.ToString();
            if (tickets4.Count() != 0)
            {
                TicketData5.StatusA = tickets4.Where(t => t.TicketPriority.Name == "Urgent").Count();
                TicketData5.StatusB = tickets4.Where(t => t.TicketPriority.Name == "Normal").Count();
                TicketData5.StatusC = tickets4.Where(t => t.TicketPriority.Name == "Low").Count();
                TicketChartList.Add(TicketData5);
            }
            else
            {
                TicketData5.StatusA = 0;
                TicketData5.StatusB = 0;
                TicketData5.StatusC = 0;
                TicketChartList.Add(TicketData5);
            }


            var tickets5 = new List <Ticket>();

            foreach (var ticket in db.Tickets)
            {
                if (ticket.CreatedDate.ToString("d") == dateago5)
                {
                    tickets5.Add(ticket);
                }
            }

            TicketData TicketData6 = new TicketData();

            TicketData6.DayofWeek = DateTime.Now.Date.AddDays(-3).DayOfWeek.ToString();
            if (tickets5.Count() != 0)
            {
                TicketData6.StatusA = tickets5.Where(t => t.TicketPriority.Name == "Urgent").Count();
                TicketData6.StatusB = tickets5.Where(t => t.TicketPriority.Name == "Normal").Count();
                TicketData6.StatusC = tickets5.Where(t => t.TicketPriority.Name == "Low").Count();
                TicketChartList.Add(TicketData6);
            }
            else
            {
                TicketData6.StatusA = 0;
                TicketData6.StatusB = 0;
                TicketData6.StatusC = 0;
                TicketChartList.Add(TicketData6);
            }

            var tickets6 = new List <Ticket>();

            foreach (var ticket in db.Tickets)
            {
                if (ticket.CreatedDate.ToString("d") == dateago6)
                {
                    tickets6.Add(ticket);
                }
            }

            TicketData TicketData7 = new TicketData();

            TicketData7.DayofWeek = DateTime.Now.Date.AddDays(-2).DayOfWeek.ToString();
            if (tickets6.Count() != 0)
            {
                TicketData7.StatusA = tickets6.Where(t => t.TicketPriority.Name == "Urgent").Count();
                TicketData7.StatusB = tickets6.Where(t => t.TicketPriority.Name == "Normal").Count();
                TicketData7.StatusC = tickets6.Where(t => t.TicketPriority.Name == "Low").Count();
                TicketChartList.Add(TicketData7);
            }
            else
            {
                TicketData7.StatusA = 0;
                TicketData7.StatusB = 0;
                TicketData7.StatusC = 0;
                TicketChartList.Add(TicketData7);
            }

            var tickets7 = new List <Ticket>();

            foreach (var ticket in db.Tickets)
            {
                if (ticket.CreatedDate.ToString("d") == dateago7)
                {
                    tickets7.Add(ticket);
                }
            }

            TicketData TicketData8 = new TicketData();

            TicketData8.DayofWeek = DateTime.Now.Date.AddDays(-1).DayOfWeek.ToString();
            if (tickets7.Count() != 0)
            {
                TicketData8.StatusA = tickets7.Where(t => t.TicketPriority.Name == "Urgent").Count();
                TicketData8.StatusB = tickets7.Where(t => t.TicketPriority.Name == "Normal").Count();
                TicketData8.StatusC = tickets7.Where(t => t.TicketPriority.Name == "Low").Count();
                TicketChartList.Add(TicketData8);
            }
            else
            {
                TicketData8.StatusA = 0;
                TicketData8.StatusB = 0;
                TicketData8.StatusC = 0;
                TicketChartList.Add(TicketData8);
            }


            List <UserData2> UserChartList = new List <UserData2>();
            UserRolesHelper  UH            = new UserRolesHelper(db);

            UserData2 User1      = new UserData2();
            var       AdminCount = UH.UsersInRole("Admin").Count();

            User1.label = "Administrator";
            User1.value = AdminCount;
            UserChartList.Add(User1);

            UserData2 User2     = new UserData2();
            var       DevCount1 = UH.UsersInRole("Developer1").Count();
            var       DevCount2 = UH.UsersInRole("Developer2").Count();
            var       DevCount3 = UH.UsersInRole("Developer3").Count();
            var       DevCount4 = UH.UsersInRole("Developer4").Count();

            User2.label = "Developers";
            User2.value = DevCount1 + DevCount2 + DevCount3 + DevCount4;
            UserChartList.Add(User2);

            UserData2 User3    = new UserData2();
            var       PMCount1 = UH.UsersInRole("Project Manager1").Count();
            var       PMCount2 = UH.UsersInRole("Project Manager2").Count();
            var       PMCount3 = UH.UsersInRole("Project Manager3").Count();


            User3.label = "Project Managers";
            User3.value = PMCount1 + PMCount2 + PMCount3;
            UserChartList.Add(User3);


            UserData2 User4          = new UserData2();
            var       SubmitterCount = UH.UsersInRole("Submitter").Count();

            User4.label = "Submitter";
            User4.value = SubmitterCount;
            UserChartList.Add(User4);



            ViewBag.ArrData2 = UserChartList.ToArray();
            ViewBag.ArrData  = TicketChartList.ToArray();

            UserRolesHelper     helper                    = new UserRolesHelper(db);
            ProjectAssignHelper ph                        = new ProjectAssignHelper();
            var                    userId                 = User.Identity.GetUserId();
            var                    user                   = db.Users.Find(userId);
            var                    userroleAdmin          = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator");
            var                    userroleDeveloper      = helper.IsUserInRole(userId, "Developer1") || helper.IsUserInRole(userId, "Developer2") || helper.IsUserInRole(userId, "Developer3") || helper.IsUserInRole(userId, "Developer4");
            var                    userroleProjectManager = helper.IsUserInRole(userId, "Project Manager1") || helper.IsUserInRole(userId, "Project Manager2") || helper.IsUserInRole(userId, "Project Manager3");
            var                    userroleSubmitter      = helper.IsUserInRole(userId, "Submitter");
            List <Project>         DeveloperProjects      = new List <Project>();
            List <ApplicationUser> Developers             = helper.UsersInRole("Developer1").Concat(helper.UsersInRole("Developer2")).Concat(helper.UsersInRole("Developer3")).Concat(helper.UsersInRole("Developer4")).ToList();



            List <Ticket>  usertickets  = new List <Ticket>();
            List <Project> userprojects = new List <Project>();

            if (helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator"))
            {
                foreach (var project in db.Projects)
                {
                    if (ph.IsUserOnAProject(userId, project.Id))
                    {
                        userprojects.Add(project);
                    }
                }


                foreach (var ticket in db.Tickets)
                {
                    usertickets.Add(ticket);
                }
                var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived");
                var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");
                var unassignedtickets  = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned");
                ViewBag.unassignedticketcount = unassignedtickets.Count();
                ViewBag.ticketcount           = nonarchivedtickets.Count();
                ViewBag.urgentticketcount     = urgenttickets.Count();
                ViewBag.projectcount          = userprojects.Count();
                ViewBag.message           = "in the Bug Tracker system currently.";
                ViewBag.ticketmessage     = "in the Bug Tracker system currently.";
                ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system";
                if (urgenttickets.Count() == 0)
                {
                    ViewBag.urgentmessage = "There are no urgent tickets.";
                }
                else
                {
                    ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them.";
                }
                return(View(userprojects));
            }

            else if (userroleProjectManager)
            {
                foreach (var x in db.Projects)
                {
                    if (ph.IsUserOnAProject(userId, x.Id))
                    {
                        userprojects.Add(x);
                    }
                }

                foreach (var project in userprojects)
                {
                    foreach (var ticket in project.Tickets)
                    {
                        usertickets.Add(ticket);
                    }
                }
                var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived");
                var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");
                var unassignedtickets  = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned");
                ViewBag.unassignedticketcount = unassignedtickets.Count();
                ViewBag.ticketcount           = nonarchivedtickets.Count();
                ViewBag.urgentticketcount     = urgenttickets.Count();
                ViewBag.projectcount          = userprojects.Count();
                ViewBag.ticketmessage         = "for projects that you're working on.";
                ViewBag.message           = "that you're working on.";
                ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system";
                if (urgenttickets.Count() == 0)
                {
                    ViewBag.urgentmessage = "There are no urgent tickets.";
                }
                else
                {
                    ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them.";
                }

                return(View(userprojects));
            }


            else if (userroleDeveloper)
            {
                foreach (var x in db.Projects)
                {
                    if (ph.IsUserOnAProject(userId, x.Id))
                    {
                        userprojects.Add(x);
                    }
                }

                foreach (var project in userprojects)
                {
                    foreach (var ticket in project.Tickets)
                    {
                        usertickets.Add(ticket);
                    }
                }

                var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived");
                var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");

                var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned");
                ViewBag.unassignedticketcount = unassignedtickets.Count();
                ViewBag.ticketcount           = nonarchivedtickets.Count();
                ViewBag.urgentticketcount     = urgenttickets.Count();
                var urgentticketscount = urgenttickets.Count();
                ViewBag.projectcount      = userprojects.Count();
                ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system";
                ViewBag.ticketmessage     = "for projects that you're working on.";
                ViewBag.message           = "that you're working on.";
                if (urgentticketscount == 0)
                {
                    ViewBag.urgentmessage = "There are no urgent tickets.";
                }
                else
                {
                    ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them.";
                }
                return(View(userprojects));
            }

            else if (userroleSubmitter)
            {
                var submittertickets = db.Tickets.Where(t => t.SubmitterUserId == userId).ToList();

                var nonarchivedtickets = submittertickets.Where(t => t.TicketStatus.Name != "Archived");
                var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");
                var unassignedtickets  = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned");
                ViewBag.unassignedticketcount = unassignedtickets.Count();
                ViewBag.ticketcount           = nonarchivedtickets.Count();
                ViewBag.urgentticketcount     = urgenttickets.Count();
                ViewBag.projectcount          = userprojects.Count();
                ViewBag.ticketmessage         = "that you've submitted.";
                ViewBag.projectmessage        = "N/A";
                ViewBag.urgentmessage         = "N/A";
                ViewBag.unassignedmessage     = "Unassigned tickets in the Bug Tracker system";

                var projects = db.Projects.ToList();
                return(View(projects));
            }
            return(RedirectToAction("Index", "Home"));
        }
Пример #5
0
        // GET: Projects
        public ActionResult Index()

        {
            UserRolesHelper     helper                    = new UserRolesHelper(db);
            ProjectAssignHelper ph                        = new ProjectAssignHelper();
            var                    userId                 = User.Identity.GetUserId();
            var                    user                   = db.Users.Find(userId);
            var                    userroleAdmin          = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator");
            var                    userroleDeveloper      = helper.IsUserInRole(userId, "Developer1") || helper.IsUserInRole(userId, "Developer2") || helper.IsUserInRole(userId, "Developer3") || helper.IsUserInRole(userId, "Developer4");
            var                    userroleProjectManager = helper.IsUserInRole(userId, "Project Manager1") || helper.IsUserInRole(userId, "Project Manager2") || helper.IsUserInRole(userId, "Project Manager3");
            var                    userroleSubmitter      = helper.IsUserInRole(userId, "Submitter");
            List <Project>         DeveloperProjects      = new List <Project>();
            List <ApplicationUser> Developers             = helper.UsersInRole("Developer1").Concat(helper.UsersInRole("Developer2")).Concat(helper.UsersInRole("Developer3")).Concat(helper.UsersInRole("Developer4")).ToList();
            var                    projects               = db.Projects.Include(p => p.Users).ToList();



            ViewBag.user = user.FirstName + " " + user.LastName;



            List <Ticket>  usertickets  = new List <Ticket>();
            List <Project> userprojects = new List <Project>();

            if (helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator"))
            {
                foreach (var project in db.Projects)
                {
                    userprojects.Add(project);
                }


                foreach (var ticket in db.Tickets)
                {
                    usertickets.Add(ticket);
                }
                var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived");
                var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");
                var unassignedtickets  = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned");
                ViewBag.unassignedticketcount = unassignedtickets.Count();
                ViewBag.ticketcount           = nonarchivedtickets.Count();
                ViewBag.urgentticketcount     = urgenttickets.Count();
                ViewBag.projectcount          = userprojects.Count();
                ViewBag.message           = "in the Bug Tracker system currently.";
                ViewBag.ticketmessage     = "in the Bug Tracker system currently.";
                ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system";
                if (urgenttickets.Count() == 0)
                {
                    ViewBag.urgentmessage = "There are no urgent tickets.";
                }
                else
                {
                    ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them.";
                }
                return(View(userprojects));
            }

            else if (userroleProjectManager)
            {
                foreach (var x in db.Projects)
                {
                    if (ph.IsUserOnAProject(userId, x.Id))
                    {
                        userprojects.Add(x);
                    }
                }

                foreach (var project in userprojects)
                {
                    foreach (var ticket in project.Tickets)
                    {
                        usertickets.Add(ticket);
                    }
                }
                var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived");
                var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");
                var unassignedtickets  = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned");
                ViewBag.unassignedticketcount = unassignedtickets.Count();
                ViewBag.ticketcount           = nonarchivedtickets.Count();
                ViewBag.urgentticketcount     = urgenttickets.Count();
                ViewBag.projectcount          = userprojects.Count();
                ViewBag.ticketmessage         = "for projects that you're working on.";
                ViewBag.message           = "that you're working on.";
                ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system";
                if (urgenttickets.Count() == 0)
                {
                    ViewBag.urgentmessage = "There are no urgent tickets.";
                }
                else
                {
                    ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them.";
                }

                return(View(userprojects));
            }


            else if (userroleDeveloper)
            {
                foreach (var x in db.Projects)
                {
                    if (ph.IsUserOnAProject(userId, x.Id))
                    {
                        userprojects.Add(x);
                    }
                }

                foreach (var project in userprojects)
                {
                    foreach (var ticket in project.Tickets)
                    {
                        usertickets.Add(ticket);
                    }
                }

                var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived");
                var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");

                var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned");
                ViewBag.unassignedticketcount = unassignedtickets.Count();
                ViewBag.ticketcount           = nonarchivedtickets.Count();
                ViewBag.urgentticketcount     = urgenttickets.Count();
                var urgentticketscount = urgenttickets.Count();
                ViewBag.projectcount      = userprojects.Count();
                ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system";
                ViewBag.ticketmessage     = "for projects that you're working on.";
                ViewBag.message           = "that you're working on.";
                if (urgentticketscount == 0)
                {
                    ViewBag.urgentmessage = "There are no urgent tickets.";
                }
                else
                {
                    ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them.";
                }
                return(View(userprojects));
            }

            else if (userroleSubmitter)
            {
                var tickets = db.Tickets.Where(t => t.SubmitterUserId == userId).ToList();

                foreach (var x in db.Projects)
                {
                    if (ph.IsUserOnAProject(userId, x.Id))
                    {
                        userprojects.Add(x);
                    }
                }



                var nonarchivedtickets = tickets.Where(t => t.TicketStatus.Name != "Archived");
                var urgenttickets      = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent");
                var unassignedtickets  = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned");
                ViewBag.unassignedticketcount = unassignedtickets.Count();
                ViewBag.ticketcount           = nonarchivedtickets.Count();
                ViewBag.urgentticketcount     = urgenttickets.Count();
                ViewBag.projectcount          = userprojects.Count();
                ViewBag.ticketmessage         = "that you've submitted.";
                ViewBag.projectmessage        = "N/A";
                ViewBag.urgentmessage         = "N/A";
                ViewBag.unassignedmessage     = "Unassigned tickets in the Bug Tracker system";

                return(View(userprojects));
            }
            return(RedirectToAction("Index", "Home"));
        }
Пример #6
0
        public async Task <ActionResult> Create([Bind(Include = "Id,UserId,Description,CreatedDate")] TicketAttachment ticketAttachment, HttpPostedFileBase File, int Id)
        {
            UserRolesHelper     helper = new UserRolesHelper(db);
            ProjectAssignHelper ph     = new ProjectAssignHelper();
            var userId = User.Identity.GetUserId();
            var user   = db.Users.Find(userId);

            var ticket = db.Tickets.Find(Id);


            if (ModelState.IsValid)
            {
                if (helper.IsUserInRole(userId, "Administrator") || helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Project Manager1") && ph.IsUserOnAProject(userId, ticket.Project.Id) ||
                    helper.IsUserInRole(userId, "Project Manager2") && ph.IsUserOnAProject(userId, ticket.Project.Id) || helper.IsUserInRole(userId, "Project Manager3") && ph.IsUserOnAProject(userId, ticket.Project.Id) ||
                    helper.IsUserInRole(userId, "Developer1") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer2") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer3") && ticket.AssignedToUserId == userId ||
                    helper.IsUserInRole(userId, "Developer4") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Submitter") && ticket.SubmitterUserId == userId)
                {
                    if (File != null)
                    {
                        TicketNotification TN = new TicketNotification();
                        TN.TicketId = ticket.Id;
                        TN.UserId   = ticket.AssignedToUserId;
                        TN.User     = ticket.AssignedToUser;
                        db.TicketNotifications.Add(TN);

                        var message = new IdentityMessage
                        {
                            Body = "The ticket" + " " + ticket.Title + " " + "from project" + " " + ticket.Project.Name + " " + "has been edited by" + " " + user.FirstName + user.LastName + "." + "  " +
                                   "Please see the ticket history to view the specific change.",
                            Subject     = "Your ticket has been edited",
                            Destination = TN.User.Email
                        };
                        EmailService email = new EmailService();
                        await email.SendAsync(message);

                        if (FileUploadValidator.IsWebFriendlyFile(File))

                        {
                            var fileName   = Path.GetFileName(File.FileName);
                            var customName = string.Format(Guid.NewGuid() + fileName);
                            File.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), customName));
                            ticketAttachment.FilePath = "/Uploads/" + customName;


                            string filename      = ticketAttachment.FilePath.ToString();
                            string word          = ".docx";
                            string excel         = ".xls";
                            string excelx        = "xlsx";
                            string pdf           = ".pdf";
                            string jpeg          = ".jpeg";
                            string bmp           = ".bmp";
                            string gif           = ".gif";
                            string zip           = ".zip";
                            string rar           = ".rar";
                            string ticketmessage = "";
                            if (filename.Contains(word))
                            {
                                ticketmessage = "This is a Word Document";
                            }
                            else if (filename.Contains(excel))
                            {
                                ticketmessage = "This is an Excel File";
                            }
                            else if (filename.Contains(pdf))
                            {
                                ticketmessage = "This is an PDF File";
                            }
                            else if (filename.Contains(jpeg))
                            {
                                ticketmessage = "This is a JPEG File";
                            }
                            else if (filename.Contains(bmp))
                            {
                                ticketmessage = "This is a BMP File";
                            }
                            else if (filename.Contains(gif))
                            {
                                ticketmessage = "This is a .gif File";
                            }
                            else if (filename.Contains(zip))
                            {
                                ticketmessage = "This is an ZIP File";
                            }
                            else if (filename.Contains(rar))
                            {
                                ticketmessage = "This is a RAR File";
                            }
                            else if (filename.Contains(excelx))
                            {
                                ticketmessage = "This is an .xlsx File";
                            }



                            ticketAttachment.CreatedDate = DateTimeOffset.Now;
                            var ticketdatestring = ticketAttachment.CreatedDate.ToString("MM-dd-yyyy");
                            ticketAttachment.TicketId    = Id;
                            ticketAttachment.Description = ticketmessage + " " + "added by" + " " + user.FirstName + " " + user.LastName + " " + "on" + " " + ticketdatestring + ".";
                            ticketAttachment.UserId      = userId;

                            db.TicketAttachments.Add(ticketAttachment);
                            db.SaveChanges();
                        }
                        int id = Id;
                        return(RedirectToAction("Details", "Tickets", new { id = id }));
                    }
                    else
                    {
                        var Temporary = "Please select an image between 1KB - 2MB and in an approved format(.jpg, .bmp, .png, .gif)";
                        TempData["attachmentmessage"] = Temporary;
                    }
                }
                var Temporary3 = "You cannot edit this ticket.  Please revisit your role assignment.  Tickets can only be edited by their creator, a developer assigned to the ticket, a project manager, or an administrator.";
                TempData["message"] = Temporary3;
                return(RedirectToAction("Details", "Tickets", new { id = Id }));
            }

            ViewBag.TicketId = new SelectList(db.Tickets, "Id", "SubmitterUserId", ticketAttachment.TicketId);
            ViewBag.UserId   = new SelectList(db.Users, "Id", "FirstName", ticketAttachment.UserId);
            return(View(ticketAttachment));
        }