public ActionResult Edit(int id)
        {
            //if (id == null)
            //{
            //    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            //}

            Project project = db.Projects.Find(id);

            if (project == null)
            {
                return(HttpNotFound());
            }

            if (!(projectHelper.IsUserOnProject(User.Identity.GetUserId(), project.Id) && User.IsInRole("Project Manager")) && !(User.IsInRole("Administrator")))
            {
                return(HttpNotFound());
            }

            ViewBag.UserOn  = new MultiSelectList(projectHelper.UsersInProjNotInRole(id, "Project Manager"), "Id", "UserName");
            ViewBag.UserOff = new MultiSelectList(projectHelper.UsersNotOnProjOrInRole(id, "Project Manager"), "Id", "UserName");

            foreach (var pm in userHelper.UsersInRole("Project Manager"))
            {
                if (projectHelper.IsUserOnProject(pm.Id, id))
                {
                    ViewBag.CurrentPm = pm.UserName;
                }
            }

            ViewBag.PMs = new SelectList(userHelper.UsersInRole("Project manager"), "Id", "UserName");

            return(View(project));
        }
Example #2
0
        public ActionResult Create([Bind(Include = "Id,Title,Description,Created,Updated,ProjectId,TicketStatusId,TicketPriorityId,TicketTypeId,OwnerUserId,AssignedToUserId")] Ticket ticket)
        {
            if (ModelState.IsValid)
            {
                //add user to project when they create a ticket
                ProjectsHelper phelper = new ProjectsHelper();
                if (!phelper.IsUserOnProject(User.Identity.GetUserId(), ticket.ProjectId))
                {
                    phelper.AddUserToProject(User.Identity.GetUserId(), ticket.ProjectId);
                }

                ticket.OwnerUserId      = User.Identity.GetUserId();
                ticket.TicketPriorityId = db.TicketPrioritys.FirstOrDefault(n => n.Name == "Low").Id;
                //Give ticket initial status of "new"
                ticket.TicketStatusId = 2;
                ticket.Created        = DateTimeOffset.Now;
                db.Tickets.Add(ticket);
                db.SaveChanges();
                return(RedirectToAction("Details", "Projects", new { id = ticket.ProjectId }));
            }
            //Identity framework chooses the name of the database, which is "Users", but the actual class name is "ApplicationUser"
            ViewBag.AssignedToUserId = new SelectList(db.Users, "Id", "FirstName", ticket.AssignedToUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId);
            ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
            ViewBag.TicketPriorityId = new SelectList(db.TicketPrioritys, "Id", "Name", ticket.TicketPriorityId);
            ViewBag.TicketStatusId   = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId);
            ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);
            return(View(ticket));
        }
Example #3
0
        public ActionResult Details(int?id, bool flag)
        {
            var projectId = 0;

            if (id != null)
            {
                projectId = (int)id;
            }
            if (User.IsInRole("Admin") || projectsHelper.IsUserOnProject(User.Identity.GetUserId(), projectId))
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                Project project = db.Projects.Find(id);
                if (project == null)
                {
                    return(HttpNotFound());
                }
                //var user = db.Users.Find(User.Identity.GetUserId());
                //ViewBag.HighestUserRole = userRole.GetHighestRole(user.Id);
                ViewBag.UserIndexFlag = flag;
                return(View(project));
            }
            return(RedirectToAction("UserIndex"));
        }
Example #4
0
        // GET: Projects for a User
        public ActionResult UserProjectsOnly()
        {
            var userID = User.Identity.GetUserId();
            //pass in userId, check their role, and then show them relevant projects.
            //admin and PM see all projects
            var projs = db.Projects.ToList();
            List <ProjectPMViewModel> model = new List <ProjectPMViewModel>();

            foreach (var p in projs)
            {
                ProjectsHelper Phelper = new ProjectsHelper();
                if (Phelper.IsUserOnProject(userID, p.Id))
                {
                    ProjectPMViewModel vm = new ProjectPMViewModel();
                    vm.Project = p;
                    //this works because the PMID is just the User.Id, which is the primary key of Users
                    //this code adds the user
                    vm.ProjectManager = p.PMID != null?db.Users.Find(p.PMID) : null;

                    model.Add(vm);
                }
            }


            return(View(model));
        }
Example #5
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ticket ticket = db.Tickets.Find(id);

            if (ticket == null)
            {
                return(HttpNotFound());
            }
            var sub = rHelp.IsUserInRole(User.Identity.GetUserId(), "Submitter") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoSubmitter");

            if (sub)
            {
                if (ticket.SubmitterId != User.Identity.GetUserId())
                {
                    return(View("Error"));
                }
            }
            var dev = rHelp.IsUserInRole(User.Identity.GetUserId(), "Developer") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoDeveloper");

            if (dev)
            {
                if (ticket.DeveloperId != User.Identity.GetUserId())
                {
                    return(View("Error"));
                }
            }
            var pm = rHelp.IsUserInRole(User.Identity.GetUserId(), "Project_Manager") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoProject_Manager");

            if (pm)
            {
                if (!pHelp.IsUserOnProject(User.Identity.GetUserId(), ticket.ProjectId))
                {
                    return(View("Error"));
                }
            }
            return(View(ticket));
        }
Example #6
0
        public ActionResult ManageProjectLevelUsers(List <string> userIds, int projectId)
        {
            if (userIds != null)
            {
                //var projMembersIds = projHelper.UsersOnProject(projectId).Select(u => u.Id).ToList();

                //foreach(var memberId in projMembersIds)
                //{
                //    projHelper.RemoveUserFromProject(memberId, projectId);
                //}

                foreach (var userId in userIds)
                {
                    if (!projHelper.IsUserOnProject(userId, projectId))
                    {
                        projHelper.AddUserToProject(userId, projectId);
                        if (rolesHelper.IsUserInRole(userId, "ProjectManager"))
                        {
                            var proj = db.Projects.Find(projectId);
                            proj.ProjectManagerId = userId;
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        projHelper.RemoveUserFromProject(userId, projectId);
                        if (rolesHelper.IsUserInRole(userId, "ProjectManager"))
                        {
                            var proj = db.Projects.Find(projectId);
                            proj.ProjectManagerId = null;
                            db.SaveChanges();
                        }
                    }
                }
            }

            return(RedirectToAction("ManageProjectLevelUsers", new { id = projectId }));
        }
        protected override void Seed(Falcon_Bug_Tracker.Models.ApplicationDbContext context)
        {
            #region Role Creation
            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 == "ProjectManager"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "ProjectManager"
                });
            }

            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"
                });
            }
            #endregion
            #region User Creation
            var userManager = new UserManager <ApplicationUser>(
                new UserStore <ApplicationUser>(context));
            var demoPassword = WebConfigurationManager.AppSettings["DemoPassword"];

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName       = "******",
                    Email          = "*****@*****.**",
                    FirstName      = "Josh",
                    LastName       = "Casteel",
                    AvatarPath     = "/Images/Avatars/avatar_default.png",
                    EmailConfirmed = true
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName       = "******",
                    Email          = "*****@*****.**",
                    FirstName      = "Michael",
                    LastName       = "Trueman",
                    AvatarPath     = "/Images/Avatars/avatar_default.png",
                    EmailConfirmed = true
                }, demoPassword);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Jenny",
                    LastName   = "Gump",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, demoPassword);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Eleanor",
                    LastName   = "Shellstrop",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, demoPassword);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Darren",
                    LastName   = "Richardson",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, demoPassword);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName       = "******",
                    Email          = "*****@*****.**",
                    FirstName      = "Jon",
                    LastName       = "Snow",
                    AvatarPath     = "/Images/Avatars/avatar_default.png",
                    EmailConfirmed = true
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "John",
                    LastName   = "Locke",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Jack",
                    LastName   = "Shepard",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Jake",
                    LastName   = "Sully",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Kate",
                    LastName   = "Austen",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "James",
                    LastName   = "Ford",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Ben",
                    LastName   = "Linus",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Juliet",
                    LastName   = "Burke",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Karen",
                    LastName   = "Blonde",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Arya",
                    LastName   = "Stark",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Hugo",
                    LastName   = "Reyes",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Sayid",
                    LastName   = "Jarrah",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName   = "******",
                    Email      = "*****@*****.**",
                    FirstName  = "Claire",
                    LastName   = "Littleton",
                    AvatarPath = "/Images/Avatars/avatar_default.png"
                }, "Abc&123!");
            }

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

            var DemoPM = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(DemoPM, "ProjectManager");

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

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

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

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

            var PMId1 = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(PMId1, "ProjectManager");

            var PMId2 = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(PMId2, "ProjectManager");

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

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

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

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

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

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

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

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

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

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

            #endregion
            #region Tickets Properties
            context.TicketTypes.AddOrUpdate(
                t => t.Name,
                new TicketType {
                Name = "Software"
            },
                new TicketType {
                Name = "Hardware"
            },
                new TicketType {
                Name = "UI"
            },
                new TicketType {
                Name = "Defect"
            },
                new TicketType {
                Name = "Other"
            }
                );

            context.TicketPriorities.AddOrUpdate(
                t => t.Name,
                new TicketPriority {
                Name = "Critical"
            },
                new TicketPriority {
                Name = "High"
            },
                new TicketPriority {
                Name = "Low"
            },
                new TicketPriority {
                Name = "On Hold"
            }
                );

            context.TicketStatuses.AddOrUpdate(
                t => t.Name,
                new TicketStatus {
                Name = "Open"
            },
                new TicketStatus {
                Name = "Assigned"
            },
                new TicketStatus {
                Name = "Resolved"
            },
                new TicketStatus {
                Name = "Reopened"
            },
                new TicketStatus {
                Name = "Archived"
            }
                );
            #endregion
            #region Project Creation
            context.Projects.AddOrUpdate(
                p => p.Name,
                new Project()
            {
                Name = "First Demo", Description = "The first demo project seed", Created = DateTime.Now.AddDays(-3)
            },
                new Project()
            {
                Name = "Second Demo", Description = "The second demo project seed", Created = DateTime.Now.AddDays(-7)
            },
                new Project()
            {
                Name = "Third Demo", Description = "The third demo project seed", Created = DateTime.Now.AddDays(-15)
            },
                new Project()
            {
                Name = "Fourth Demo", Description = "The fourth demo project seed", Created = DateTime.Now.AddDays(-45)
            },
                new Project()
            {
                Name = "Fifth Demo", Description = "The fifth demo project seed", Created = DateTime.Now.AddDays(-60)
            }
                );
            context.SaveChanges();
            #endregion


            Random        rand             = new Random();
            var           ticketPriorityId = context.TicketPriorities.Select(t => t.Id).ToList();
            var           ticketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Open").Id;
            var           ticketTypeId     = context.TicketTypes.Select(t => t.Id).ToList();
            var           projectId        = context.Projects.Select(p => p.Id).ToList();
            List <string> submitters       = rolehelper.UsersInRole("Submitter").Select(u => u.Id).ToList();
            for (var i = 1; i <= 20; i++)
            {
                int    randProj      = context.Projects.Find(rand.Next(1, (context.Projects.Count() + 1))).Id;
                string randSubmitter = submitters[rand.Next(0, submitters.Count())];
                if (!projHelper.IsUserOnProject(randSubmitter, randProj))
                {
                    projHelper.AddUserToProject(randSubmitter, randProj);
                }

                context.Tickets.AddOrUpdate(
                    t => t.Title,
                    new Ticket()
                {
                    Title            = $"Seeded Issue {i}",
                    Description      = $"Description for Project {randProj}",
                    Created          = DateTime.Now.AddDays(rand.Next(0, 20)),
                    SubmitterId      = randSubmitter,
                    ProjectId        = randProj,
                    TicketPriorityId = ticketPriorityId[rand.Next(0, ticketPriorityId.Count())],
                    TicketTypeId     = ticketTypeId[rand.Next(0, ticketTypeId.Count())],
                    TicketStatusId   = ticketStatusId
                });
            }
        }
Example #8
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Project project = db.Projects.Find(id);
            var     ticket  = db.Tickets.Where(t => t.ProjectId == project.Id).ToList();

            if (project == null)
            {
                return(View("Error"));
            }
            var pm = rHelp.IsUserInRole(User.Identity.GetUserId(), "Project_Manager") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoProject_Manager");

            if (pm)
            {
                if (!pHelp.IsUserOnProject(User.Identity.GetUserId(), project.Id))
                {
                    return(View("Error"));
                }
            }
            var dev = rHelp.IsUserInRole(User.Identity.GetUserId(), "Developer") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoDeveloper");

            if (dev)
            {
                if (!pHelp.IsUserOnProject(User.Identity.GetUserId(), project.Id))
                {
                    return(View("Error"));
                }
            }
            var sub = rHelp.IsUserInRole(User.Identity.GetUserId(), "Submitter") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoSubmitter");

            if (sub)
            {
                if (!pHelp.IsUserOnProject(User.Identity.GetUserId(), project.Id))
                {
                    return(View("Error"));
                }
            }

            ViewBag.ProjectId = id;

            var AdminId = db.Users.ToList().Where(u => u.Id == User.Identity.GetUserId());

            if (User.IsInRole("Admin") || User.IsInRole("DemoAdmin"))
            {
                ViewBag.AdminId = new SelectList(AdminId, "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Admin", "DemoAdmin").FirstOrDefault());
            }
            else
            {
                ViewBag.AdminId = new SelectList(rHelp.UsersIn2Roles("Admin", "DemoAdmin"), "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Admin", "DemoAdmin").FirstOrDefault());
            }
            ViewBag.ProjectManagerId = new SelectList(rHelp.UsersIn2Roles("Project_Manager", "DemoProject_Manager"), "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Project_Manager", "DemoProject_Manager").FirstOrDefault());
            ViewBag.Developers       = new MultiSelectList(rHelp.UsersIn2Roles("Developer", "DemoDeveloper"), "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Developer", "DemoDeveloper"));
            ViewBag.Submitters       = new MultiSelectList(rHelp.UsersIn2Roles("Submitter", "DemoSubmitter"), "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Submitter", "DemoSubmitter"));
            var meh = new ProjectDetailsViewModel();

            meh.Projects   = project;
            meh.TicketList = ticket;
            return(View(meh));
        }