Exemplo n.º 1
0
        public ActionResult ProjectWizard()
        {
            ViewBag.ProjectManagerId = new SelectList(rolesHelper.UsersInRole("Project Manager"), "Id", "FullName");
            ViewBag.DeveloperIds     = new MultiSelectList(rolesHelper.UsersInRole("Developer"), "Id", "FullName");
            ViewBag.SubmitterIds     = new MultiSelectList(rolesHelper.UsersInRole("Submitter"), "Id", "FullName");
            ViewBag.Errors           = "";
            var model = new ProjectWizardVM();

            return(View(model));
        }
Exemplo n.º 2
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Project project = db.Projects.Find(id);

            ViewBag.ProjectManagerId = new SelectList(rolesHelper.UsersInRole("ProjectManager"), "Id", "FullName");

            if (project == null)
            {
                return(HttpNotFound());
            }
            return(View(project));
        }
Exemplo n.º 3
0
        // GET: Tickets/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ticket ticket = db.Tickets.Find(id);

            if (ticket == null)
            {
                return(HttpNotFound());
            }
            ViewBag.DeveloperId      = new SelectList(rolesHelper.UsersInRole("Developer"), "Id", "FirstName", ticket.DeveloperId);
            ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
            ViewBag.SubmitterId      = new SelectList(db.Users, "Id", "FirstName", ticket.SubmitterId);
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
            ViewBag.TicketStatusId   = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId);
            ViewBag.TicketTypeId     = new SelectList(db.TicketType, "Id", "Name", ticket.TicketTypeId);
            return(View(ticket));
        }
Exemplo n.º 4
0
        protected override void Seed(IssueTracker.Models.ApplicationDbContext context)
        {
            //  This method will be called after migrating to the latest version.
            //  You can use the DbSet<T>.AddOrUpdate() helper extension method
            //  to avoid creating duplicate seed data.

            var roleManager = new RoleManager <IdentityRole>(
                new RoleStore <IdentityRole>(context));

            if (!context.Roles.Any(r => r.Name == "Admin"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "Admin"
                });
            }

            if (!context.Roles.Any(r => r.Name == "Project Manager"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "Project Manager"
                });
            }

            if (!context.Roles.Any(r => r.Name == "Developer"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "Developer"
                });
            }

            if (!context.Roles.Any(r => r.Name == "Submitter"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "Submitter"
                });
            }

            if (!context.Roles.Any(r => r.Name == "Guest"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "Guest"
                });
            }

            #endregion

            #region Users Creation
            var userManager       = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));
            var DemoAdminPassword = WebConfigurationManager.AppSettings["DemoAdminPassword"];
            var DemoPMPassword    = WebConfigurationManager.AppSettings["DemoPMPassword"];
            var DemoPM2Password   = WebConfigurationManager.AppSettings["DemoPM2Password"];
            var DemoDevPassword   = WebConfigurationManager.AppSettings["DemoDevPassword"];
            var DemoDev2Password  = WebConfigurationManager.AppSettings["DemoDev2Password"];
            var DemoSubPassword   = WebConfigurationManager.AppSettings["DemoSubPassword"];
            var DemoSub2Password  = WebConfigurationManager.AppSettings["DemoSub2Password"];


            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser()
                {
                    Email           = "*****@*****.**",
                    UserName        = "******",
                    FirstName       = "Admiral",
                    LastName        = "Grace Hopper",
                    AvatarPath      = "/Avatars/AdmHopperAvatar40x40.png",
                    LargeAvatarPath = "/Avatars/AdmiralHopper.png"
                }, DemoAdminPassword);;

                var userId = userManager.FindByEmail("*****@*****.**").Id;

                userManager.AddToRole(userId, "Admin");
            }
            ;

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser()
                {
                    Email      = "*****@*****.**",
                    UserName   = "******",
                    FirstName  = "Kamilah",
                    LastName   = "Taylor",
                    AvatarPath = "/Avatars/KamilahTAvatar40x40.png"
                }, DemoPMPassword);

                var userId = userManager.FindByEmail("*****@*****.**").Id;

                userManager.AddToRole(userId, "Project Manager");
            }
            ;


            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser()
                {
                    Email           = "*****@*****.**",
                    UserName        = "******",
                    FirstName       = "Katherine",
                    LastName        = "Goble Johnson",
                    AvatarPath      = "/Avatars/KathGJnsnAvatar40x40.png",
                    LargeAvatarPath = "/Avatars/KatherineJohnson.png"
                }, DemoPM2Password);

                var userId = userManager.FindByEmail("*****@*****.**").Id;

                userManager.AddToRole(userId, "Project Manager");
            }
            ;

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser()
                {
                    Email      = "*****@*****.**",
                    UserName   = "******",
                    FirstName  = "Maria",
                    LastName   = "Gutierrez",
                    AvatarPath = "/Avatars/MGutierrezAvatar40x40.png"
                }, DemoDevPassword);

                var userId = userManager.FindByEmail("*****@*****.**").Id;

                userManager.AddToRole(userId, "Developer");
            }
            ;

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser()
                {
                    Email           = "*****@*****.**",
                    UserName        = "******",
                    FirstName       = "Dorothy",
                    LastName        = "Vaughan",
                    AvatarPath      = "/Avatars/DorothyVaughanAvatar40x40.png",
                    LargeAvatarPath = "/Avatars/DorothyVaughn.png"
                }, DemoDev2Password);

                var userId = userManager.FindByEmail("*****@*****.**").Id;

                userManager.AddToRole(userId, "Developer");
            }
            ;

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser()
                {
                    Email      = "*****@*****.**",
                    UserName   = "******",
                    FirstName  = "Dr.",
                    LastName   = "Jamika Burge",
                    AvatarPath = "/Avatars/DrBurgeAvatar40x40.png"
                }, DemoSubPassword);

                var userId = userManager.FindByEmail("*****@*****.**").Id;

                userManager.AddToRole(userId, "Submitter");
            }
            ;

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser()
                {
                    Email           = "*****@*****.**",
                    UserName        = "******",
                    FirstName       = "Mary",
                    LastName        = "Jackson",
                    AvatarPath      = "/Avatars/MaryJacksonAvatar40x40.png",
                    LargeAvatarPath = "/Avatars/MaryJackson.png"
                }, DemoSub2Password);

                var userId = userManager.FindByEmail("*****@*****.**").Id;

                userManager.AddToRole(userId, "Submitter");
            }
            ;

            #endregion

            #region Role Assignment


            var adminId = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(adminId, "Admin");

            var projId = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(projId, "Project Manager");

            var projId2 = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(projId2, "Project Manager");

            var devId = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(devId, "Developer");

            var devId2 = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(devId2, "Developer");

            var subId = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(subId, "Submitter");

            var subId2 = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(subId2, "Submitter");

            #endregion

            context.SaveChanges();

            #region TicketType Seed
            context.TicketTypes.AddOrUpdate(
                tt => tt.Name,
                new TicketType()
            {
                Name = "Software"
            },
                new TicketType()
            {
                Name = "Hardware"
            },
                new TicketType()
            {
                Name = "UI"
            },
                new TicketType()
            {
                Name = "Defect"
            },
                new TicketType()
            {
                Name = "Feature Request"
            },
                new TicketType()
            {
                Name = "Other"
            }
                );

            #endregion

            #region TicketPriority Seed
            context.TicketPriorities.AddOrUpdate(
                tp => tp.Name,
                new TicketPriority()
            {
                Name = "Low"
            },
                new TicketPriority()
            {
                Name = "Medium"
            },
                new TicketPriority()
            {
                Name = "High"
            },
                new TicketPriority()
            {
                Name = "On Hold"
            }
                );

            #endregion

            #region TicketStatus Seed
            context.TicketStatuses.AddOrUpdate(
                ts => ts.Name,
                new TicketStatus()
            {
                Name = "Open"
            },
                new TicketStatus()
            {
                Name = "Assigned"
            },
                new TicketStatus()
            {
                Name = "Resolved"
            },
                new TicketStatus()
            {
                Name = "Reopened"
            },
                new TicketStatus()
            {
                Name = "Archived"
            }
                );

            #endregion

            #region Project Seed
            context.Projects.AddOrUpdate(
                p => p.Name,
                new Project()
            {
                Name = "SEO Crawler", Created = DateTime.Now.AddDays(-60), IsArchived = true
            },
                new Project()
            {
                Name = "eCommerce Build", Created = DateTime.Now.AddDays(-45)
            },
                new Project()
            {
                Name = "Distance Learning Build", Created = DateTime.Now.AddDays(-30)
            },
                new Project()
            {
                Name = "Podcasting Integration", Created = DateTime.Now.AddDays(-15)
            },
                new Project()
            {
                Name = "Federal Contracting Dashboard", Created = DateTime.Now.AddDays(-7)
            }
                );

            #endregion

            context.SaveChanges();

            #region Ticket Seed PREP

            List <Ticket>          ticketList      = new List <Ticket>();
            List <ApplicationUser> projectManagers = new List <ApplicationUser>();
            List <ApplicationUser> developers      = new List <ApplicationUser>();
            List <ApplicationUser> submitters      = new List <ApplicationUser>();

            projectManagers.AddRange(rolesHelper.UsersInRole("Project Manager"));
            developers.AddRange(rolesHelper.UsersInRole("Developer"));
            submitters.AddRange(rolesHelper.UsersInRole("Submitter"));
            #endregion

            #region Assign Users to Projects BY ROLE
            foreach (var project in context.Projects)
            {
                foreach (var user in rolesHelper.UsersInRole("Admin"))
                {
                    projectHelper.AddUserToProject(user.Id, project.Id);
                }

                projectHelper.AddUserToProject(projectManagers[random.Next(projectManagers.Count)].Id, project.Id);

                var firstDev  = developers[random.Next(developers.Count)].Id;
                var secondDev = developers[random.Next(developers.Count)].Id;
                while (firstDev == secondDev)
                {
                    secondDev = developers[random.Next(developers.Count)].Id;
                }
                projectHelper.AddUserToProject(firstDev, project.Id);
                projectHelper.AddUserToProject(secondDev, project.Id);

                var firstSub  = submitters[random.Next(submitters.Count)].Id;
                var secondSub = submitters[random.Next(submitters.Count)].Id;
                while (firstSub == secondSub)
                {
                    secondSub = submitters[random.Next(submitters.Count)].Id;
                }
                projectHelper.AddUserToProject(firstSub, project.Id);
                projectHelper.AddUserToProject(secondSub, project.Id);
            }
            #endregion

            #region Ticket Seed

            foreach (var project in context.Projects.ToList())
            {
                projectManagers = projectHelper.ListUsersOnProjectInRole("Project Manager", project.Id);
                developers      = projectHelper.ListUsersOnProjectInRole("Developer", project.Id);
                submitters      = projectHelper.ListUsersOnProjectInRole("Submitter", project.Id);
                foreach (var type in context.TicketTypes.ToList())
                {
                    foreach (var status in context.TicketStatuses.ToList())
                    {
                        foreach (var priority in context.TicketPriorities.ToList())
                        {
                            var developerId = developers[random.Next(developers.Count)].Id;
                            if (status.Name == "Open")
                            {
                                developerId = null;
                            }

                            var resolved = false;
                            var archived = false;
                            if (status.Name == "Resolved")
                            {
                                resolved = true;
                            }
                            if (status.Name == "Archived" || project.IsArchived)
                            {
                                archived = true;
                            }
                            var newTicket = new Ticket()
                            {
                                ProjectId        = project.Id,
                                TicketPriorityId = priority.Id,
                                TicketTypeId     = type.Id,
                                TicketStatusId   = status.Id,
                                SubmitterId      = submitters[random.Next(submitters.Count)].Id,
                                DeveloperId      = developerId,
                                Created          = DateTime.Now,
                                Issue            = $"Seeded issue on the {project.Name} project.",
                                IssueDescription = $"Issue description for the seeded ticket.",
                                IsResolved       = resolved,
                                IsArchived       = archived
                            };
                            ticketList.Add(newTicket);
                        }
                    }
                }
            }

            context.Tickets.AddRange(ticketList);
            context.SaveChanges();
            #endregion
        }