Esempio n. 1
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));
        }
Esempio n. 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));
        }
Esempio n. 3
0
        public ActionResult DevProjIndex()
        {
            //find the id of the current user
            string devUserId = User.Identity.GetUserId();

            TicketIndexViewModel model = new TicketIndexViewModel();
            //use roles helper to check for the roles
            ProjectsHelper phelper = new ProjectsHelper();
            //user ProjectsHelper to get a list of projects the dev is on.
            List <Project> devProjects = phelper.ListUserProjects(devUserId).ToList();

            //use linq with selectmany to get all tickets on each project.
            if (devProjects.Count() == 0)
            {
                return(RedirectToAction("Index"));
            }
            var devProjTickets = devProjects.SelectMany(t => t.Tickets).AsQueryable();

            {
                var tickets = devProjTickets.Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                //tickets = tickets.Where(t => t.Project.Id == phelper.ListUserProjects(devUserId).id;

                model.DevTickets = tickets.ToList();
            }


            return(View(model));
        }
        // GET: Projects/Details/5
        public ActionResult Details(int?id)
        {
            ProjectDetailViewModel vm = new ProjectDetailViewModel();
            //AdminProjectViewModel vm = new AdminProjectViewModel();
            UserRolesHelper helper  = new UserRolesHelper();
            ProjectsHelper  phelper = new ProjectsHelper();

            var pSub = phelper.ProjectUsersByRole(id.Value, "Submitter");
            var pDev = phelper.ProjectUsersByRole(id.Value, "Developer");

            var pms = helper.UsersInRole("ProjectManager");

            vm.PMUsers     = new SelectList(pms, "Id", "FirstName");
            vm.TeamMembers = new SelectList(db.Users, "Id", "FullName");
            vm.Developers  = pDev;
            vm.Submitters  = pSub;
            vm.Project     = db.Projects.Find(id);


            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            //Project project = db.Projects.Find(id);
            if (vm.Project == null)
            {
                return(HttpNotFound());
            }
            return(View(vm));
        }
Esempio n. 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                    myProjects     = projectHelper.ListUserProjects(User.Identity.GetUserId());
            ProjectsHelper         projectsHelper = new ProjectsHelper();
            List <ApplicationUser> projectusers   = new List <ApplicationUser>();
            List <string>          projectDevIds  = new List <string>();

            foreach (Project project in myProjects)
            {
                projectDevIds = projectsHelper.UsersInRoleOnProject(project.Id, "Developer");
            }
            foreach (string devId in projectDevIds)
            {
                ApplicationUser devUser = db.Users.Find(devId);
                projectusers.Add(devUser);
            }
            ViewBag.AssignedToUserId = new SelectList(projectusers, "Id", "DisplayName", ticket.AssignedToUserId);



            return(View(ticket));
        }
Esempio n. 6
0
        public ActionResult Create()
        {
            var person   = User.Identity.GetUserId();
            var projHelp = new ProjectsHelper();
            var projects = projHelp.ListUserProjects(person);

            ViewBag.OwnerUserID      = User.Identity.GetUserId();
            ViewBag.ProjectID        = new SelectList(projects, "ID", "Name");
            ViewBag.TicketPriorityID = new SelectList(db.TicketPriorities, "ID", "Name");

            ViewBag.TicketTypeID = new SelectList(db.TicketTypes, "ID", "Name");
            return(View());
        }
Esempio n. 7
0
        public ActionResult AssignDev(int ticketId)
        {
            AssignDevViewModel vm     = new AssignDevViewModel();
            ProjectsHelper     helper = new ProjectsHelper();

            var tkt = db.Tickets.Find(ticketId);
            var dev = helper.ProjectUsersByRole(tkt.ProjectId, "Developer");

            vm.Developers = new SelectList(dev, "Id", "FirstName");
            vm.Ticket     = tkt;

            return(View(vm));
        }
        public ActionResult AddDEV(int id)
        {
            ProjectDevViewModel vm      = new ProjectDevViewModel();
            UserRolesHelper     helper  = new UserRolesHelper();
            ProjectsHelper      pHelper = new ProjectsHelper();

            var dev     = helper.UsersInRole("Developer");
            var projdev = pHelper.ProjectUsersByRole(id, "Developer").Select(u => u.Id).ToArray();

            vm.DevUsers = new MultiSelectList(dev, "Id", "FirstName", projdev);
            vm.Project  = db.Projects.Find(id);

            return(View(vm));
        }
Esempio n. 9
0
        // GET: Projects
        //[Authorize(Roles = "Admin, ProjectManager, Developer, Submitter")]
        public ActionResult Index()
        {
            if (User.IsInRole("Admin") || User.IsInRole("ProjectManager") || User.IsInRole("Developer") || User.IsInRole("Submitter"))
            {
                var            userId  = User.Identity.GetUserId();
                var            user    = db.Users.Find(userId);
                var            project = new List <Projects>();
                ProjectsHelper helper  = new ProjectsHelper(db);
                project = user.Projects.ToList();
                db.SaveChanges();
                return(View(project));
            }

            return(View());
        }
Esempio n. 10
0
        public JsonResult GetTicketsPerProjectData()
        {
            ProjectsHelper projectsHelper = new ProjectsHelper();
            var            dataSet        = new List <TicketPerProjectData>();
            var            projects       = projectsHelper.ListUserProjects(User.Identity.GetUserId());

            foreach (var project in projects)
            {
                dataSet.Add(new TicketPerProjectData {
                    Label = project.Name, Value = project.Tickets.Count()
                });
            }


            return(Json(dataSet));
        }
Esempio n. 11
0
        public ActionResult AssignPM(AdminProjectViewModel adminVm)
        {
            if (ModelState.IsValid)
            {
                ProjectsHelper helper = new ProjectsHelper();
                var            prj    = db.Projects.Find(adminVm.Project.Id);
                prj.PMID = adminVm.SelectedUser;

                helper.AddUserToProject(prj.PMID, prj.Id);

                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            // return View(adminVm.Project.Id);
            return(View(adminVm));
        }
Esempio n. 12
0
 public ActionResult Create([Bind(Include = "Id,Title,Created,Updated,Body,UserId")] Projects project)
 {
     if (ModelState.IsValid)
     {
         ProjectsHelper helper = new ProjectsHelper(db);
         var            userId = User.Identity.GetUserId();
         var            user   = db.Users.Find(userId);
         project.Created = DateTimeOffset.Now;
         db.Projects.Add(project);
         helper.AssignedUser(userId, project.Id);
         db.Projects.Add(project);
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(project));
 }
        public ActionResult Index()
        {
            if (User.IsInRole("Developer"))
            {
                ProjectsHelper helper = new ProjectsHelper();
                var            userId = db.Users.SingleOrDefault(u => u.UserName == User.Identity.Name).Id;
                return(View(helper.ListUserProjects(userId)));
            }
            if (User.IsInRole("ProjectManager"))
            {
                ProjectsHelper helper = new ProjectsHelper();
                var            userId = db.Users.SingleOrDefault(u => u.UserName == User.Identity.Name).Id;
                return(View(helper.ListUserProjects(userId)));
            }

            return(View(db.Project.ToList()));
        }
Esempio n. 14
0
        public async Task <IActionResult> Index(FinishFormModel formModel)
        {
            Console.WriteLine("File Session Id: " + formModel.FileSessionId);

            // Set Status to Finializing
            var sessionResponse = SetSessionStatus(formModel.SessionId, "Finializing");

            // Initiate Snapshot
            var client   = new HttpAuthClient();
            var response = await StartSnapshot(formModel.SessionId, formModel.FileSessionId);

            var snapshotResponse = await WaitForSnapshotResponse(formModel.SessionId, formModel.FileSessionId);

            // Download Snapshot
            var snapshotStream = await DownloadSnapshot(snapshotResponse.DownloadURL);

            Console.WriteLine("Download URL: " + snapshotResponse.DownloadURL);

            // Delete Session
            response = await DeleteSession(formModel.SessionId);

            // Start Checkin
            var projectFilesResponse = await CheckinProjectFile(formModel.ProjectId, formModel.FileProjectId);

            var projectsHelper = new ProjectsHelper();
            var awsStrResponse = await projectsHelper.UploadToAWS(projectFilesResponse, snapshotStream);

            Console.WriteLine("AWS Response: " + awsStrResponse);


            // Confirm Checkin
            response = await ConfirmCheckin(formModel.ProjectId, formModel.FileProjectId);

            var flattenResponse = await StartFlattenJob(formModel.ProjectId, formModel.FileProjectId);

            // Get Shared Link
            var sharedLinkResponse = await GetShareLink(formModel.ProjectId, formModel.FileProjectId);

            var model = new FinishModel()
            {
                ProjectLink = sharedLinkResponse.ShareLink
            };

            return(View(model));
        }
        // GET: Projects
        public ActionResult Index(string proj)
        {
            var userId = User.Identity.GetUserId();

            ViewBag.UserId = userId;

            if (proj == "AllProjects")
            {
                TempData["activeTab"] = "All";
                return(View(db.Projects.ToList()));
            }
            else
            {
                var projHelper = new ProjectsHelper();
                var projList   = projHelper.ListUserProjects(userId);
                return(View(projList));
            }
        }
Esempio n. 16
0
        public ActionResult AssignDEV(int id)
        {
            UserRolesHelper URHelper = new UserRolesHelper();
            string          PM       = User.Identity.GetUserId();

            if (PM != db.Projects.Find(id).PMID &&
                URHelper.IsUserinRole(PM, "admin") != true)
            {
                return(RedirectToAction("Index"));
            }
            ProjectDEVViewModel vm      = new ProjectDEVViewModel();
            UserRolesHelper     helper  = new UserRolesHelper();
            ProjectsHelper      phelper = new ProjectsHelper();

            var dev     = helper.UsersInRole("Developer");
            var projdev = phelper.ProjectUsersByRole(id, "Developer").Select(u => u.Id).ToArray();

            vm.DevUsers = new MultiSelectList(dev, "Id", "DisplayName", projdev);
            vm.Project  = db.Projects.Find(id);

            return(View(vm));
        }
Esempio n. 17
0
        public ActionResult Edit(int?Id)
        {
            if (Id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Projects project = db.Projects.Find(Id);

            if (project == null)
            {
                return(HttpNotFound());
            }
            ProjectsHelper projectsHelper = new ProjectsHelper(db);
            var            userId         = User.Identity.GetUserId();

            if (!projectsHelper.HasProject(userId, project.Id))
            {
                TempData["Error"] = "Sorry, you do not have permission to access that project.";
                return(RedirectToAction("Index"));
            }
            return(View(project));
        }
Esempio n. 18
0
        public PartialViewResult AddUsers(int id, List <string> SelectedUsers)
        {
            ProjectsHelper helper = new ProjectsHelper();
            var            prj    = db.Projects.Find(id);

            foreach (var usr in prj.Users)
            {
                helper.RemoveUserFromProject(usr.Id, id);
            }

            foreach (var dev in SelectedUsers)
            {
                helper.AddUserToProject(dev, prj.Id);
            }

            ProjectsHelper         phelper = new ProjectsHelper();
            ProjectDetailViewModel model   = new ProjectDetailViewModel();

            model.Developers = phelper.ProjectUsersByRole(id, "Submitter");
            model.Submitters = phelper.ProjectUsersByRole(id, "Developer");
            return(PartialView("_TeamMembers", model));
        }
Esempio n. 19
0
        // GET: Projects/Details/5
        public ActionResult Details(int?Id, string userId)
        {
            if (Id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Projects project = db.Projects.Find(Id);

            if (project == null)
            {
                return(HttpNotFound());
            }
            var            tickets        = project.Tickets.OrderByDescending(t => t.Created).ToList();
            ProjectsHelper projectsHelper = new ProjectsHelper(db);

            userId = User.Identity.GetUserId();
            if (!projectsHelper.HasProject(userId, project.Id))
            {
                TempData["Error"] = "Sorry, you do not have permission to access that project.";
                return(RedirectToAction("Index"));
            }
            return(View(project));
        }
Esempio n. 20
0
        public ActionResult AddDEV(ProjectDevViewModel model)
        {
            ProjectsHelper helper = new ProjectsHelper();

            if (ModelState.IsValid)
            {
                var prj = db.Projects.Find(model.Project.Id);

                foreach (var usr in prj.Users)
                {
                    helper.RemoveUserFromProject(usr.Id, prj.Id);
                }

                foreach (var dev in model.SelectedUsers)
                {
                    helper.AddUserToProject(dev, model.Project.Id);
                }

                return(RedirectToAction("Details", new { id = model.Project.Id }));
            }

            return(View(model.Project.Id));
        }
Esempio n. 21
0
        //GET: Home/Dashboard/
        public ActionResult Dashboard(int?Id, int?projectId)
        {
            DashboardViewModel model = new DashboardViewModel();
            //get user Id
            var userId = User.Identity.GetUserId();
            var user   = db.Users.Find(userId);

            //filter list of projects according to user role
            if (User.IsInRole("Admin") || User.IsInRole("ProjectManager") || User.IsInRole("Developer") || User.IsInRole("Submitter"))
            {
                //list this user's projects
                ProjectsHelper phelper = new ProjectsHelper(db);
                var            project = phelper.ListProjects(userId).ToList();
                model.Projects = user.Projects.OrderByDescending(p => p.Created).ToList();
                //list this user's tickets
                TicketsHelper helper = new TicketsHelper(db);
                model.Tickets = helper.GetUserTickets(userId);
                var ticket = helper.ListTickets(userId).ToList();
                model.OpenTickets    = user.Projects.SelectMany(p => p.Tickets).Where(t => t.Status.Status == "Open").ToList();
                model.PendingTickets = user.Projects.SelectMany(p => p.Tickets).Where(t => t.Status.Status == "Pending").ToList();
                model.ClosedTickets  = user.Projects.SelectMany(p => p.Tickets).Where(t => t.Status.Status == "Closed").ToList();
            }
            return(View(model));
        }
Esempio n. 22
0
        private List <ProjectsData> GetProjectList()
        {
            List <ProjectsData> dataList = new List <ProjectsData>();

            try
            {
                ProjectsHelper dbHelper = new ProjectsHelper(_appSettings.Secrets.DbConnectionString);

                if ("M0000002".Equals(HttpContext.Session.GetString(Constants.Session.SystemRoleId)))
                {
                    dataList = dbHelper.SelectData(HttpContext.Session.GetString(Constants.Session.EmployeeId));
                }
                else
                {
                    dataList = dbHelper.SelectFullData();
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Error GetProjectList: {0}", ex.Message);
            }

            return(dataList);
        }
Esempio n. 23
0
        public ActionResult AssignDEV(ProjectDEVViewModel model)
        {
            ProjectsHelper helper = new ProjectsHelper();

            if (ModelState.IsValid)
            {
                var prj = db.Projects.Find(model.Project.Id);
                //this code removes all users currently on the project
                // foreach (var usr in prj.Users)
                //{
                //   helper.RemoveUserFromProject(usr.Id, prj.Id);
                //}
                //this code add all the selected users to the project
                foreach (var dev in model.SelectedUsers)
                {
                    helper.AddUserToProject(dev, model.Project.Id);
                }


                //the helper already saves the changes to the db
                return(RedirectToAction("Details", new { id = model.Project.Id }));
            }
            return(View(model));
        }
        protected override void Seed(SheilaWard_BugTracker.Models.ApplicationDbContext context)
        {
            var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context));  // Instantiates a RoleManager
            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            #region Roles
            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 Users
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Angela",
                    LastName    = "Smith",
                    DisplayName = "ADSmith",
                    AvatarUrl   = "/Avatars/AngieSmith.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Ares",
                    LastName    = "Eller",
                    DisplayName = "AEller",
                    AvatarUrl   = "/Avatars/AresEller.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Dave",
                    LastName    = "Rose",
                    DisplayName = "DRose",
                    AvatarUrl   = "/Avatars/DaveRose.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Cynthia",
                    LastName    = "Triplett",
                    DisplayName = "CCTriplett",
                    AvatarUrl   = "/Avatars/Cindy.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "James",
                    LastName    = "Cooley",
                    DisplayName = "JCooley",
                    AvatarUrl   = "/Avatars/cooley.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Lee",
                    LastName    = "Connelly",
                    DisplayName = "LConnelly",
                    AvatarUrl   = "/Avatars/LeeConnelly.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Sarvesh",
                    LastName    = "Patel",
                    DisplayName = "SPatel",
                    AvatarUrl   = "/Avatars/sarvesh.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Sheila",
                    LastName    = "Ward",
                    DisplayName = "SSWard",
                    AvatarUrl   = "/Avatars/sheila.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Sherri",
                    LastName    = "Creech",
                    DisplayName = "SCreech",
                    AvatarUrl   = "/Avatars/SCreech.jpg"
                }, "P@ssw0rd");
            }
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Teresa",
                    LastName    = "Shorter",
                    DisplayName = "TShorter",
                    AvatarUrl   = "/Avatars/teresa.jpg"
                }, "P@ssw0rd");
            }

            //Introduce my Demo Users...
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Admin",
                    DisplayName = "The Admin",
                    AvatarUrl   = "/Avatars/kartunix(1).png"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Project Manager",
                    DisplayName = "The PM",
                    AvatarUrl   = "/Avatars/kartunix(2).png"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Developer",
                    DisplayName = "The Dev",
                    AvatarUrl   = "/Avatars/kartunix(4).png"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Submitter",
                    DisplayName = "The Sub",
                    AvatarUrl   = "/Avatars/kartunix(3).png"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }
            #endregion

            #region AssignToRoles
            var sheilaId = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(sheilaId, "Admin");

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

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

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

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

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

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

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

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

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

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

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

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

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

            #endregion

            #region Project Creation
            DateTime P1Date = new DateTime(2019, 07, 12, 19, 00, 14, 16);
            DateTime P2Date = new DateTime(2019, 06, 23, 17, 06, 25, 32);
            DateTime P3Date = new DateTime(2019, 08, 04, 16, 23, 24, 22);
            DateTime P4Date = new DateTime(2019, 04, 12, 10, 45, 17, 26);
            DateTime P5Date = new DateTime(2019, 09, 23, 18, 04, 24, 06);
            context.Projects.AddOrUpdate(
                p => p.Name,
                new Project {
                Name = "Coder Foundry Blog", Description = "Blog exercise", Created = new DateTimeOffset(P1Date.Year, P1Date.Month, P1Date.Day, P1Date.Hour, P1Date.Minute, P1Date.Second, P1Date.Millisecond, new TimeSpan(2, 0, 0))
            },
                new Project {
                Name = "Portfolio Project", Description = "My Portfolio created during Coder Foundry", Created = new DateTimeOffset(P2Date.Year, P2Date.Month, P2Date.Day, P2Date.Hour, P2Date.Minute, P2Date.Second, P2Date.Millisecond, new TimeSpan(2, 0, 0))
            },
                new Project {
                Name = "Bug Tracker Project", Description = "System to track tickets in an IT system - can be bugs, or requests for enhancements or documentation", Created = new DateTimeOffset(P3Date.Year, P3Date.Month, P3Date.Day, P3Date.Hour, P3Date.Minute, P3Date.Second, P3Date.Millisecond, new TimeSpan(2, 0, 0))
            },
                new Project {
                Name = "YelpCamp Project", Description = "Create a new Blog in which multiple people can write posts", Created = new DateTimeOffset(P4Date.Year, P4Date.Month, P4Date.Day, P4Date.Hour, P4Date.Minute, P4Date.Second, P4Date.Millisecond, new TimeSpan(2, 0, 0))
            },
                new Project {
                Name = "Financial Portal", Description = "Keep up with your bills and track your budget", Created = new DateTimeOffset(P5Date.Year, P5Date.Month, P5Date.Day, P5Date.Hour, P5Date.Minute, P5Date.Second, P5Date.Millisecond, new TimeSpan(2, 0, 0))
            }
                );
            context.SaveChanges();
            #endregion

            #region Project Assignment
            var blogProjectId            = context.Projects.FirstOrDefault(p => p.Name == "Coder Foundry Blog").Id;
            var bugTrackerProjectId      = context.Projects.FirstOrDefault(p => p.Name == "Bug Tracker Project").Id;
            var portfolioProjectId       = context.Projects.FirstOrDefault(p => p.Name == "Portfolio Project").Id;
            var yelpCampProjectId        = context.Projects.FirstOrDefault(p => p.Name == "YelpCamp Project").Id;
            var financialPortalProjectId = context.Projects.FirstOrDefault(p => p.Name == "Financial Portal").Id;

            var projHelper = new ProjectsHelper();

            // Assign Sheila to projects
            projHelper.AddUserToProject(sheilaId, portfolioProjectId);
            projHelper.AddUserToProject(sheilaId, blogProjectId);
            projHelper.AddUserToProject(sheilaId, bugTrackerProjectId);
            projHelper.AddUserToProject(sheilaId, yelpCampProjectId);
            projHelper.AddUserToProject(sheilaId, financialPortalProjectId);

            // Assign Demo Admin to projects
            projHelper.AddUserToProject(adminId, portfolioProjectId);
            projHelper.AddUserToProject(adminId, blogProjectId);
            projHelper.AddUserToProject(adminId, bugTrackerProjectId);
            projHelper.AddUserToProject(adminId, yelpCampProjectId);
            projHelper.AddUserToProject(adminId, financialPortalProjectId);

            // Assign Angie to projects
            projHelper.AddUserToProject(angieId, blogProjectId);
            projHelper.AddUserToProject(PMId, portfolioProjectId);

            // Assign Dave to projects
            projHelper.AddUserToProject(daveId, bugTrackerProjectId);
            projHelper.AddUserToProject(daveId, yelpCampProjectId);

            // Assign Demo PM to projects
            projHelper.AddUserToProject(PMId, bugTrackerProjectId);
            projHelper.AddUserToProject(PMId, portfolioProjectId);
            projHelper.AddUserToProject(PMId, financialPortalProjectId);

            // Assign Teresa to projects
            projHelper.AddUserToProject(teresaId, blogProjectId);
            projHelper.AddUserToProject(teresaId, bugTrackerProjectId);

            // Assign Sherri to projects
            projHelper.AddUserToProject(sherriId, portfolioProjectId);

            // Assign Demo Submitter to projects
            projHelper.AddUserToProject(submitterId, yelpCampProjectId);
            projHelper.AddUserToProject(submitterId, portfolioProjectId);
            projHelper.AddUserToProject(submitterId, financialPortalProjectId);

            // Assign Ares to projects
            projHelper.AddUserToProject(aresId, blogProjectId);
            projHelper.AddUserToProject(aresId, financialPortalProjectId);

            // Assign Sarvesh to projects
            projHelper.AddUserToProject(sarveshId, portfolioProjectId);
            projHelper.AddUserToProject(sarveshId, financialPortalProjectId);

            // Assign Lee to projects
            projHelper.AddUserToProject(leeId, bugTrackerProjectId);

            // Assign Cindy to projects
            projHelper.AddUserToProject(cindyId, bugTrackerProjectId);

            // Assign Cooley to projects
            projHelper.AddUserToProject(cooleyId, portfolioProjectId);
            projHelper.AddUserToProject(cooleyId, blogProjectId);

            // Assign Demo Developer to projects
            projHelper.AddUserToProject(DevId, bugTrackerProjectId);
            projHelper.AddUserToProject(DevId, portfolioProjectId);
            projHelper.AddUserToProject(DevId, financialPortalProjectId);
            #endregion

            #region Ticket Priorities, Statuses, & Types (require Foreign Keys)
            context.TicketPriorities.AddOrUpdate(
                t => t.Name,
                new TicketPriority {
                Name = "None", Description = "Priority has not been determined"
            },
                new TicketPriority {
                Name = "Low", Description = "Lowest priority level"
            },
                new TicketPriority {
                Name = "Medium", Description = "Mid-level priority"
            },
                new TicketPriority {
                Name = "High", Description = "A high priority level requiring quick action"
            },
                new TicketPriority {
                Name = "Urgent", Description = "Highest priority level requiring immediate action"
            }
                );

            context.TicketStatuses.AddOrUpdate(
                t => t.Name,
                new TicketStatus {
                Name = "New/Unassigned", Description = "Has not been approved or has been tabled"
            },
                new TicketStatus {
                Name = "Inactive", Description = "Not currently being worked on"
            },
                new TicketStatus {
                Name = "Active/Assigned", Description = "Developer is currently working on ticket"
            },
                new TicketStatus {
                Name = "Withdrawn", Description = "Ticket has been withdrawn"
            },
                new TicketStatus {
                Name = "Completed", Description = "Development and Testing done, but not deployed"
            },
                new TicketStatus {
                Name = "Archived", Description = "Ticket is completed and all work delivered"
            }
                );

            context.TicketTypes.AddOrUpdate(
                t => t.Name,
                new TicketType {
                Name = "Defect", Description = "There is a defect in the application code or logic"
            },
                new TicketType {
                Name = "Documentation", Description = "There is a need for documentation/training on the application"
            },
                new TicketType {
                Name = "Enhancement", Description = "There is a request for more functionality for the application"
            }
                );

            context.SaveChanges();
            #endregion

            #region Ticket creation
            DateTime T1Date  = new DateTime(2019, 09, 03, 19, 00, 14, 16);
            DateTime T2Date  = new DateTime(2019, 08, 24, 18, 16, 13, 27);
            DateTime T3Date  = new DateTime(2019, 09, 09, 19, 00, 14, 16);
            DateTime T4Date  = new DateTime(2019, 07, 02, 19, 00, 14, 16);
            DateTime T5Date  = new DateTime(2019, 06, 25, 18, 16, 23, 34);
            DateTime T6Date  = new DateTime(2019, 08, 19, 20, 08, 37, 52);
            DateTime T7Date  = new DateTime(2019, 08, 21, 18, 55, 43, 16);
            DateTime T8Date  = new DateTime(2019, 10, 23, 18, 55, 43, 16);
            DateTime T9Date  = new DateTime(2019, 10, 23, 19, 17, 26, 12);
            DateTime T10Date = new DateTime(2019, 10, 18, 11, 57, 13, 19);
            DateTime U1Date  = new DateTime(2019, 09, 21, 10, 45, 23, 14);
            DateTime U2Date  = new DateTime(2019, 09, 17, 14, 22, 52, 05);
            DateTime U3Date  = new DateTime(2019, 10, 01, 16, 08, 19, 36);
            DateTime U6Date  = new DateTime(2019, 10, 03, 08, 45, 34, 18);
            DateTime U7Date  = new DateTime(2019, 10, 04, 14, 04, 43, 05);
            context.Tickets.AddOrUpdate(
                p => p.Title,
                new Ticket
            {
                ProjectId        = financialPortalProjectId,
                OwnerUserId      = submitterId,
                Title            = "Highlight links when active",
                Description      = "On the Household Dashboard, all links are active",
                PercentComplete  = 20,
                Created          = new DateTimeOffset(T10Date.Year, T10Date.Month, T10Date.Day, T10Date.Hour, T10Date.Minute, T10Date.Second, T10Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Urgent").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New/Unassigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id
            },
                new Ticket
            {
                ProjectId        = blogProjectId,
                OwnerUserId      = submitterId,
                AssignedToUserId = aresId,
                Title            = "Add Blog Information in Configuration File",
                Description      = "Blog Information was lost when database deleted, but images of blogs exist",
                PercentComplete  = 20,
                Created          = new DateTimeOffset(T9Date.Year, T9Date.Month, T9Date.Day, T9Date.Hour, T9Date.Minute, T9Date.Second, T9Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Urgent").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Active/Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id
            },
                new Ticket
            {
                ProjectId        = portfolioProjectId,
                OwnerUserId      = submitterId,
                AssignedToUserId = leeId,
                Title            = "Add button to clear input on Javascript Exercises",
                Description      = "Values in input forms do not clear out and we need a button to do that.",
                PercentComplete  = 40,
                Created          = new DateTimeOffset(T8Date.Year, T8Date.Month, T8Date.Day, T8Date.Hour, T8Date.Minute, T8Date.Second, T8Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Urgent").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Active/Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id
            },
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = submitterId,
                AssignedToUserId = DevId,
                Title            = "Make Icons turn red when active",
                Description      = "Make the Icons in the left navigation turn red when active",
                PercentComplete  = 100,
                Created          = new DateTimeOffset(T1Date.Year, T1Date.Month, T1Date.Day, T1Date.Hour, T1Date.Minute, T1Date.Second, T1Date.Millisecond, new TimeSpan(2, 0, 0)),
                Updated          = new DateTimeOffset(U1Date.Year, U1Date.Month, U1Date.Day, U1Date.Hour, U1Date.Minute, U1Date.Second, U1Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Low").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Archived").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Enhancement").Id,
                Archived         = true
            },
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = submitterId,
                AssignedToUserId = DevId,
                Title            = "Add Buttons for Table Downloads",
                Description      = "Add Copy, CSV, Excel, PDF, and Print buttons for tables",
                PercentComplete  = 100,
                Created          = new DateTimeOffset(T2Date.Year, T2Date.Month, T2Date.Day, T2Date.Hour, T2Date.Minute, T2Date.Second, T2Date.Millisecond, new TimeSpan(2, 0, 0)),
                Updated          = new DateTimeOffset(U2Date.Year, U2Date.Month, U2Date.Day, U2Date.Hour, U2Date.Minute, U2Date.Second, U2Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Completed").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Enhancement").Id,
            },
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = submitterId,
                AssignedToUserId = cooleyId,
                Title            = "Add Functionality to Edit Projects View",
                Description      = "On Edit Projects, give Admin/PM ability to assign people to projects",
                PercentComplete  = 100,
                Created          = new DateTimeOffset(T3Date.Year, T3Date.Month, T3Date.Day, T3Date.Hour, T3Date.Minute, T3Date.Second, T3Date.Millisecond, new TimeSpan(2, 0, 0)),
                Updated          = new DateTimeOffset(U3Date.Year, U3Date.Month, U3Date.Day, U3Date.Hour, U3Date.Minute, U3Date.Second, U3Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "None").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Completed").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Enhancement").Id,
            },
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = submitterId,
                AssignedToUserId = DevId,
                Title            = "Edit Configuration File for Demo Day",
                Description      = "Expand Seed Method to include data showing demo users and various priorities, statuses and types",
                PercentComplete  = 60,
                Created          = new DateTimeOffset(T3Date.Year, T3Date.Month, T3Date.Day, T3Date.Hour, T3Date.Minute, T3Date.Second, T3Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "None").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Active/Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Documentation").Id,
            },
                new Ticket
            {
                ProjectId        = portfolioProjectId,
                OwnerUserId      = sherriId,
                AssignedToUserId = cooleyId,
                Title            = "Activate Google Maps",
                Description      = "The Portfolio Project has a Google Maps area in the 'Contact' section that needs to be activated.",
                PercentComplete  = 50,
                Created          = new DateTimeOffset(T4Date.Year, T4Date.Month, T4Date.Day, T4Date.Hour, T4Date.Minute, T4Date.Second, T4Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Urgent").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Active/Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id,
            },
                new Ticket
            {
                ProjectId        = portfolioProjectId,
                OwnerUserId      = sherriId,
                AssignedToUserId = DevId,
                Title            = "Separate JavaScript Exercises",
                Description      = "Bobby wants the Javascript Exercises put in a different section than the Bug Tracker and the Blog.  He also wants them separated out into: Math, Factorial, Fizz-Buzz, and Palindrome.",
                PercentComplete  = 70,
                Created          = new DateTimeOffset(T5Date.Year, T5Date.Month, T5Date.Day, T5Date.Hour, T5Date.Minute, T5Date.Second, T5Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "High").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Active/Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id,
            },
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = teresaId,
                AssignedToUserId = cindyId,
                Title            = "Add List of Users to Project Details",
                Description      = "Add a list of all users on a particular project to that project's Detail page.",
                PercentComplete  = 25,
                Created          = new DateTimeOffset(T6Date.Year, T6Date.Month, T6Date.Day, T6Date.Hour, T6Date.Minute, T6Date.Second, T6Date.Millisecond, new TimeSpan(2, 0, 0)),
                Updated          = new DateTimeOffset(U6Date.Year, U6Date.Month, U6Date.Day, U6Date.Hour, U6Date.Minute, U6Date.Second, U6Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Withdrawn").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Enhancement").Id,
            },
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = teresaId,
                AssignedToUserId = cindyId,
                Title            = "Add List of Tickets to Project Details",
                Description      = "Add a list of all tickets on a particular project to that project's Detail page.",
                PercentComplete  = 45,
                Created          = new DateTimeOffset(T7Date.Year, T7Date.Month, T7Date.Day, T7Date.Hour, T7Date.Minute, T7Date.Second, T7Date.Millisecond, new TimeSpan(2, 0, 0)),
                Updated          = new DateTimeOffset(U7Date.Year, U7Date.Month, U7Date.Day, U7Date.Hour, U7Date.Minute, U7Date.Second, U7Date.Millisecond, new TimeSpan(2, 0, 0)),
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Inactive").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Enhancement").Id,
            }
                );
            #endregion
        }
Esempio n. 25
0
        protected override void Seed(Bug_Tracker.Models.ApplicationDbContext context)
        {
            var roleManager = new RoleManager <IdentityRole>(
                new RoleStore <IdentityRole>(context));

            if (!context.Roles.Any(r => r.Name == "NewUser"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "NewUser"
                });
            }
            if (!context.Roles.Any(r => r.Name == "Admin"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "Admin"
                });
            }
            if (!context.Roles.Any(r => r.Name == "PM"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "PM"
                });
            }
            if (!context.Roles.Any(r => r.Name == "Dev"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "Dev"
                });
            }
            if (!context.Roles.Any(r => r.Name == "Sub"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "Sub"
                });
            }
            if (!context.Roles.Any(r => r.Name == "DemoAdmin"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "DemoAdmin"
                });
            }
            if (!context.Roles.Any(r => r.Name == "DemoPM"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "DemoPM"
                });
            }
            if (!context.Roles.Any(r => r.Name == "DemoDev"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "DemoDev"
                });
            }
            if (!context.Roles.Any(r => r.Name == "DemoSub"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "DemoSub"
                });
            }
            var userStore    = new UserStore <ApplicationUser>(context);
            var userManager  = new UserManager <ApplicationUser>(userStore);
            var demoPassword = WebConfigurationManager.AppSettings["DemoPassword"];

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Allison",
                    LastName    = "Tsatsa",
                    DisplayName = "Admin",
                    AvatarPath  = "/Avatars/process-thinking-svg-png-icon-download-6.png"
                };

                userManager.Create(user, "ABC&456");

                userManager.AddToRoles(user.Id, "Admin");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))

            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Ricki",
                    LastName    = "Lake",
                    DisplayName = "DemoAdmin",
                    AvatarPath  = "/Avatars/download.jpg"
                };

                userManager.Create(user, demoPassword);

                userManager.AddToRoles(user.Id, "DemoAdmin");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Drew",
                    LastName    = "Russell",
                    DisplayName = "Walking Glow Stick",
                    AvatarPath  = "/Avatars/avatar_boy2.png"
                };

                userManager.Create(user, "ABC&456");

                userManager.AddToRoles(user.Id, "PM");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Mark",
                    LastName    = "Wahlburg",
                    DisplayName = "DemoPM",
                    AvatarPath  = "/Avatars/download.jpg"
                };

                userManager.Create(user, demoPassword);

                userManager.AddToRoles(user.Id, "DemoPM");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "IP",
                    LastName    = "Freely",
                    DisplayName = "IP Freely"
                };

                userManager.Create(user, "ABC&456");

                userManager.AddToRoles(user.Id, "Dev");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "John",
                    LastName    = "Smith",
                    DisplayName = "Johnnie",
                    AvatarPath  = "/Avatars/download.jpg"
                };

                userManager.Create(user, demoPassword);

                userManager.AddToRoles(user.Id, "Dev");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Chester",
                    LastName    = "Copperpot",
                    DisplayName = "Chester Copperpot"
                };

                userManager.Create(user, "ABC&456");

                userManager.AddToRoles(user.Id, "Dev");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "TyMay",
                    LastName    = "Iavanother",
                    DisplayName = "TyMay"
                };

                userManager.Create(user, "ABC&456");

                userManager.AddToRoles(user.Id, "Sub");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Sub",
                    DisplayName = "DemoSub"
                };

                userManager.Create(user, "ABC&456");

                userManager.AddToRoles(user.Id, "DemoSub");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "David",
                    LastName    = "Tenant",
                    DisplayName = "DemoSub",
                    AvatarPath  = "/Avatars/download.jpg"
                };

                userManager.Create(user, demoPassword);

                userManager.AddToRoles(user.Id, "DemoSub");
            }
            //  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.

            #region Load Up Ticket Type

            context.TicketTypes.AddOrUpdate(
                t => t.Name,
                new TicketType {
                Name = "Defect", Description = "Classic Bug"
            },
                new TicketType {
                Name = "New Functionality", Description = "Would like additional application functionality"
            },
                new TicketType {
                Name = "Other", Description = "Issue of another kind"
            }
                );

            #endregion

            #region Load Up Ticket Priority

            context.TicketPriorities.AddOrUpdate(
                t => t.Name,
                new TicketPriority {
                Name = "Low", Description = "Can Wait"
            },
                new TicketPriority {
                Name = "Medium", Description = "Get to Soon"
            },
                new TicketPriority {
                Name = "High", Description = "Immediately, if not sooner."
            }
                );;

            #endregion

            #region Load Up Ticket Status

            context.TicketStatuses.AddOrUpdate(
                t => t.Name,
                new TicketStatus {
                Name = "New", Description = "Newly created"
            },
                new TicketStatus {
                Name = "Assigned", Description = "Assigned  to a Developer"
            },
                new TicketStatus {
                Name = "Unassigned", Description = "Not yet assigned  to a Developer"
            },
                new TicketStatus {
                Name = "Reassigned", Description = "Assigned  to a new Developer"
            },
                new TicketStatus {
                Name = "Closed", Description = "Ticket has been resolved"
            });

            #endregion
            #region Seed a Demo Project

            context.Projects.AddOrUpdate(
                t => t.Name,
                new Project {
                Name    = "Demo Project",
                Created = DateTime.Now
            });

            #endregion

            #region Seed a Demo Ticket
            var demoProject          = context.Projects.FirstOrDefault(p => p.Name == "Demo Project").Id;
            var demoTicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id;
            var demoTicketPriorityId = context.TicketPriorities.FirstOrDefault(pr => pr.Name == "High").Id;
            var demoTicketStatusId   = context.TicketStatuses.FirstOrDefault(pr => pr.Name == "New").Id;
            var demoSubmitterId      = context.Users.FirstOrDefault(u => u.Email == "*****@*****.**").Id;
            var projectsHelper       = new ProjectsHelper();
            projectsHelper.AddUserToProject(demoSubmitterId, demoProject);

            context.Tickets.AddOrUpdate(
                t => t.Title,
                new Ticket {
                Title            = "Demo Ticket",
                Created          = DateTime.Now,
                ProjectId        = demoProject,
                TicketTypeId     = demoTicketTypeId,
                TicketPriorityId = demoTicketPriorityId,
                TicketStatusId   = demoTicketStatusId,
                SubmitterId      = demoSubmitterId
            });
            context.SaveChanges();

            #endregion

            #region PROJECTS & TICKETS
            var rand        = new Random();
            var rolesHelper = new RoleHelper();
            var projHelper  = new ProjectsHelper();

            var submitters = rolesHelper.UsersInRole("Sub").ToList();
            submitters.AddRange(rolesHelper.UsersInRole("Admin").ToList());
            var seedTicketTypeId     = context.TicketTypes.Select(t => t.Id).ToList();
            var seedTicketPriorityId = context.TicketPriorities.Select(t => t.Id).ToList();
            var seedTicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New").Id;

            for (int i = 1; i <= 10; i++)
            {
                var seededProjectName = $"Project {21 - i} (Seeded)";

                ApplicationDbContext db = new ApplicationDbContext();
                db.Projects.AddOrUpdate(t => t.Name, new Project
                {
                    Name        = seededProjectName,
                    Description = "This is a demo Project that has been seeded.",
                    Created     = DateTime.Now.AddDays(-i * 3)
                });
                db.SaveChanges();

                var seededProject = db.Projects.FirstOrDefault(p => p.Name == seededProjectName);
                var seedSub       = submitters[rand.Next(0, submitters.Count)];

                seededProject.Users.Add(seedSub);

                for (int j = 1; j <= 5; j++)
                {
                    ApplicationDbContext dbcontext = new ApplicationDbContext();
                    dbcontext.Tickets.AddOrUpdate(t => t.Title, new Ticket
                    {
                        Title            = $"Ticket {i}.{j}",
                        ProjectId        = seededProject.Id,
                        Description      = "This is a seeded demo Ticket.",
                        TicketTypeId     = seedTicketTypeId[rand.Next(0, seedTicketTypeId.Count)],
                        TicketPriorityId = seedTicketPriorityId[rand.Next(0, seedTicketPriorityId.Count)],
                        TicketStatusId   = seedTicketStatusId,
                        SubmitterId      = seedSub.Id,
                        Created          = DateTime.Now
                    });
                    dbcontext.SaveChanges();
                }
            }
            #endregion
        }
Esempio n. 26
0
        protected override void Seed(BugTracker.Models.ApplicationDbContext context)
        {
            #region Ticket Priorities, Ticket Statutes, ticket Type

            context.TicketPriorities.AddOrUpdate(
                t => t.Name,
                new TicketPriority {
                Name = "Urgent", Description = "Highest Priority, requiring immediate attention"
            },
                new TicketPriority {
                Name = "High", Description = " second Highest Priority, requiring hasty attention"
            },
                new TicketPriority {
                Name = "Medium", Description = "Normal Priority, requiring moderate attention, below urgent and high"
            },
                new TicketPriority {
                Name = "Low", Description = "Little action is needed"
            },
                new TicketPriority {
                Name = "None", Description = "Not a Priority"
            },
                new TicketPriority {
                Name = "Unassigned", Description = "unassigned"
            }
                );

            context.TicketStatuses.AddOrUpdate(
                t => t.Name,
                new TicketStatus {
                Name = "New UnAssigned", Description = "Unassigned to Developer"
            },
                new TicketStatus {
                Name = "Assigned", Description = "Assigned to Developer"
            },
                new TicketStatus {
                Name = "In progress", Description = "Being worked on by Developer"
            },
                new TicketStatus {
                Name = "Reassigned", Description = "Has been reassigned to a different Developer"
            },
                new TicketStatus {
                Name = "Unassigned", Description = "Has no Developer assigned to it"
            },
                new TicketStatus {
                Name = "Completed", Description = "Completed!"
            }
                );

            context.TicketTypes.AddOrUpdate(
                t => t.Name,
                new TicketType {
                Name = "Defective", Description = "Something is broken making the entire program to malfunction"
            },
                new TicketType {
                Name = "Functionality Bug", Description = "A bug affecting the functionality of the website"
            },
                new TicketType {
                Name = "Functionality Request", Description = "A request to change or add functionaliy to the program"
            },
                new TicketType {
                Name = "Visual Bug", Description = "Non-Aligned visuals, or meshing of Z-index, etc"
            },
                new TicketType {
                Name = "Visual Request", Description = "A request to add new visual features to the program"
            },
                new TicketType {
                Name = "Low Prority", Description = "Issues that do not require immediate attention"
            }
                );

            context.SaveChanges();

            #endregion

            //  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.
            #region User & 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"
                });
            }

            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "sarvesh",
                    LastName    = "patel",
                    DisplayName = "Sarvesh Patel"
                }, "Abc#123321");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Admin",
                    LastName    = "patel",
                    DisplayName = "Admin Patel"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

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

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

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

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

            userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Jack",
                    LastName    = "Dorsie",
                    DisplayName = "Jack Dorsie"
                }, "Abc#123321");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Submitter",
                    LastName    = "patel",
                    DisplayName = "Submitter Patel"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

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

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

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

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

            userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Nancy",
                    LastName    = "Patel",
                    DisplayName = "Nancy Patel"
                }, "Abc#123321");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "ProjectManager",
                    LastName    = "patel",
                    DisplayName = "ProjectManager Patel"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

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

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

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

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

            userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Jason",
                    LastName    = "Smith",
                    DisplayName = "Jason Smith"
                }, "Abc#123321");
            }
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Developer",
                    LastName    = "patel",
                    DisplayName = "Developer Patel"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

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

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



            #endregion

            #region Projection Creation
            context.Projects.AddOrUpdate(
                p => p.Name,
                new Project {
                Name = "SP Blog", Description = "This is the SP Blog project that is online.", Created = DateTime.Now
            },
                new Project {
                Name = "Portfolio", Description = "This is the Portfolio project that is online.", Created = DateTime.Now
            },
                new Project {
                Name = "CMS1", Description = "This is the CMS1 project that is online.", Created = DateTime.Now
            },
                new Project {
                Name = "Bug Tracker", Description = "This is the BugTracker project that is online.", Created = DateTime.Now
            }
                );

            context.SaveChanges();

            #endregion

            #region Project assignment
            var blogProjectId = context.Projects.FirstOrDefault(p => p.Name == "SP Blog").Id;
            var bugTrackerId  = context.Projects.FirstOrDefault(p => p.Name == "Bug Tracker").Id;
            var cmsId         = context.Projects.FirstOrDefault(p => p.Name == "CMS1").Id;

            var projectHelper = new ProjectsHelper();

            projectHelper.AddUserToProject(pmId, blogProjectId);
            projectHelper.AddUserToProject(dvId, blogProjectId);
            projectHelper.AddUserToProject(sbId, blogProjectId);
            projectHelper.AddUserToProject(adId, blogProjectId);

            projectHelper.AddUserToProject(DemoAdmin, blogProjectId);
            projectHelper.AddUserToProject(DemoSubmitter, blogProjectId);
            projectHelper.AddUserToProject(DemoProjectManager, blogProjectId);
            projectHelper.AddUserToProject(DemoDeveloper, blogProjectId);

            projectHelper.AddUserToProject(pmId, bugTrackerId);
            projectHelper.AddUserToProject(dvId, bugTrackerId);
            projectHelper.AddUserToProject(sbId, bugTrackerId);
            projectHelper.AddUserToProject(adId, bugTrackerId);

            projectHelper.AddUserToProject(DemoAdmin, bugTrackerId);
            projectHelper.AddUserToProject(DemoSubmitter, bugTrackerId);
            projectHelper.AddUserToProject(DemoProjectManager, bugTrackerId);
            projectHelper.AddUserToProject(DemoDeveloper, bugTrackerId);


            projectHelper.AddUserToProject(pmId, cmsId);
            projectHelper.AddUserToProject(dvId, cmsId);
            projectHelper.AddUserToProject(sbId, cmsId);
            projectHelper.AddUserToProject(adId, cmsId);

            projectHelper.AddUserToProject(DemoAdmin, cmsId);
            projectHelper.AddUserToProject(DemoSubmitter, cmsId);
            projectHelper.AddUserToProject(DemoProjectManager, cmsId);
            projectHelper.AddUserToProject(DemoDeveloper, cmsId);

            #endregion


            #region Ticket Creation

            //  var ticketHelper = new TicketHelper();

            context.Tickets.AddOrUpdate(
                p => p.Title,

                new Ticket
            {
                ProjectId        = blogProjectId,
                OwnerUserId      = sbId,
                Title            = "Seeded Ticket #1",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New UnAssigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Visual Bug").Id,
            },

                new Ticket
            {
                ProjectId        = blogProjectId,
                OwnerUserId      = sbId,
                AssignedToUserId = dvId,
                Title            = "Seeded Ticket #2",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defective").Id,
            },

                new Ticket
            {
                ProjectId        = bugTrackerId,
                OwnerUserId      = sbId,
                Title            = "Seeded Ticket #3",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New UnAssigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Visual Bug").Id,
            },

                new Ticket
            {
                ProjectId        = bugTrackerId,
                OwnerUserId      = sbId,
                AssignedToUserId = dvId,
                Title            = "Seeded Ticket #4",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defective").Id,
            },

                new Ticket
            {
                ProjectId        = cmsId,
                OwnerUserId      = sbId,
                Title            = "Seeded Ticket #5",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New UnAssigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Visual Bug").Id,
            },

                new Ticket
            {
                ProjectId        = cmsId,
                OwnerUserId      = sbId,
                AssignedToUserId = dvId,
                Title            = "Seeded Ticket #6",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defective").Id,
            });

            #endregion
        }
Esempio n. 27
0
        //public ActionResult Edit([Bind(Include = "Id,Title,Description,Created,Updated,ProjectId,TicketStatusId,TicketPriorityId,TicketTypeId,OwnerUserId,AssignedToUserId")] Ticket ticket)
        public async Task <ActionResult> Edit([Bind(Include = "Id,Title,Description,Created,Updated,ProjectId,TicketStatusId,TicketPriorityId,TicketTypeId,OwnerUserId,AssignedToUserId")] Ticket ticket)
        {
            //retrieve original ticket from database, but do not cache it in this dbcontext. This will be the "oldTicket"
            var oldTicket = this.db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id);


            if (ModelState.IsValid)
            {
                //Sets ticket status according to whether it's been assigned or not.
                // rewrite to use switch statement
                if (ticket.AssignedToUserId != null && ticket.TicketStatusId == 2)
                {
                    ticket.TicketStatusId = 1;
                }
                if (ticket.AssignedToUserId == null && ticket.TicketStatusId == 1)
                {
                    ticket.TicketStatusId = 2;
                    if (User.IsInRole("Admin"))
                    {
                        ticket.AssignedToUserId = User.Identity.GetUserId();
                    }
                    else
                    {
                        ticket.AssignedToUserId = ticket.Project.PMID;
                    }
                }

                if (ticket.AssignedToUserId == null && ticket.TicketStatusId == 3)
                {
                    //ticket.AssignedToUserId = User.Identity.GetUserId();
                    ticket.AssignedToUserId = ticket.Project.PMID;
                    //this.db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id);
                }
                if (ticket.AssignedToUserId != null && ticket.OwnerUserId != null)
                {
                    //Use ProjectsHelper to
                    //add developer to project once they are assigned to a ticket
                    ProjectsHelper phelper = new ProjectsHelper();
                    phelper.AddUserToProject(ticket.AssignedToUserId, ticket.ProjectId);
                    phelper.AddUserToProject(ticket.OwnerUserId, ticket.ProjectId);
                }
                if (ticket.OwnerUserId == null)
                {
                    ticket.OwnerUserId = User.Identity.GetUserId();
                }

                ticket.Updated = DateTimeOffset.Now;



                db.Entry(ticket).State = EntityState.Modified;
                db.SaveChanges();


                //ticketshelper to create the ticket history
                if (TicketsHelper.HasTicketChanged(oldTicket, ticket))
                {
                    TicketsHelper.AddTicketHistory(oldTicket, ticket);
                }

                //Send the relevant data to create notifications
                await this.tixHelper.GenerateNotifications(oldTicket, ticket);

                //return to ticket details so user can see updated changes.
                return(RedirectToAction("Details", "Tickets", new { id = ticket.Id }));
            }
            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));
        }
Esempio n. 28
0
        public DashboardModel(ProjectsHelper.UserModel userModel, ApplicationDbContext db)
        {
            // Load up the data for display on dashboard
            // For everyone, show Notifications...
            //
            // Get Notifications info...
            //
            var notifies = db.TicketNotifications.Where(n => n.UserId == userModel.User.Id && !n.HasBeenRead);
            NumNewNotifications = notifies.Count();
            if (NumNewNotifications > 0)
            {
                MyNewNotifications = notifies
                    .OrderBy(n => n.Created)
                    .Take(MaxNotifications)
                    .Select(n => new DashboardItem()
                    {
                        Id = n.Id,
                        TicketId = n.TicketId,
                        Type = n.Type,
                        Date = n.Created
                    })
                    .ToArray<DashboardItem>();
                // Now, fill out Description field for each...
                for (int i = 0; i < MyNewNotifications.Length; i++)
                {
                    var notice = db.TicketNotifications.Find(MyNewNotifications[i].Id);
                    MyNewNotifications[i].Description = notice.ToDescription();
                }
            }

            if (userModel.IsAdmin || userModel.IsGuest)
            {
                userModel.DashboardTitle = userModel.IsGuest ? "Dashboard - Guest" : "Dashboard - Admin";
            }
            else if (userModel.IsPM)
            {
                userModel.DashboardTitle = "Dashboard - Project Manager";
            }
            else if (userModel.IsDeveloper)
            {
                userModel.DashboardTitle = "Dashboard - Developer";
                //
                // Get Projects info...
                //
                var projects = db.Users.Find(userModel.User.Id).Projects;
                NumProjects = projects.Count;
                if (NumProjects > 0)
                {
                    MyProjects = db.Users.Find(userModel.User.Id)
                        .Projects.Take(MaxTopProjects)
                        .Select(p => new DashboardItem() { Id = p.Id, Name = p.Name,
                            CountHours = p.Tickets.Sum(h => h.HoursToComplete),
                            CountItems = p.Tickets.Count})
                        .ToArray<DashboardItem>();
                }

                //
                // Get Tickets info...
                //
                var tickets = db.Tickets
                    .Where(t => t.AssignedToDevId == userModel.User.Id
                        && t.TicketStatusId != (int)TS.Status.Resolved
                        && t.TicketStatusId >= (int)TS.Status.AssignedToDev);
                if ((NumActiveTickets = tickets.Count()) > 0)
                {
                    // Get new tickets, then setup info on active tickets
                    var newTickets = tickets.Where(t => t.TicketStatusId == (int)TS.Status.AssignedToDev);
                    NumNewTickets = newTickets.Count();
                    MyNewTickets = newTickets
                        .Take(MaxTopNewTickets)
                        .Select(n => new DashboardItem()
                        {
                            Id = n.Id,
                            Name = n.Title,
                            Description = n.TicketType.Name + "-" + n.TicketPriority.Name + "-" + n.SkillRequired.Name,
                            CountHours = n.HoursToComplete
                        })
                        .ToArray<DashboardItem>();

                    // And get details on new tickets
                    DashboardItem di = new DashboardItem("Newly assigned/to pull", "MyNew");
                    if (NumNewTickets > 0)
                    {
                        di.CountItems = NumNewTickets;
                        di.CountHours = newTickets.Sum(t => t.HoursToComplete);
                    }
                    MyActiveTickets.Add(di);

                    // Show total tickets in development
                    di = new DashboardItem("In development", "MyInDevelopment");
                    var inDev = tickets.Where(t => t.TicketStatusId == (int)TS.Status.InDevelopment);
                    if ((di.CountItems = inDev.Count()) > 0)
                        di.CountHours = inDev.Sum(hrs => hrs.HoursToComplete);
                    MyActiveTickets.Add(di);

                    // Get the tickets according to due date/time
                    DateTimeOffset now = DateTimeOffset.UtcNow;
                    DateTimeOffset start, end;
                    start = now.AddDays(-1);
                    di = new DashboardItem("Overdue", "MyOverdue");
                    var due = tickets.Where(t => t.DueDate >= start && t.DueDate < now);
                    if ((di.CountItems = due.Count()) > 0)
                        di.CountHours = due.Sum(t => t.HoursToComplete);
                    MyActiveTickets.Add(di);

                    end = now.AddDays(1);
                    di = new DashboardItem("Due within 24 hours", "MyDue24");
                    due = tickets.Where(t => t.DueDate >= now && t.DueDate < end);
                    if ((di.CountItems = due.Count()) > 0)
                        di.CountHours = due.Sum(t => t.HoursToComplete);
                    MyActiveTickets.Add(di);

                    di = new DashboardItem("Due within 7 days", "MyDue7");
                    end = now.AddDays(7);
                    due = tickets.Where(t => t.DueDate >= now && t.DueDate < end);
                    if ((di.CountItems = due.Count()) > 0)
                        di.CountHours = due.Sum(t => t.HoursToComplete);
                    MyActiveTickets.Add(di);

                    di = new DashboardItem("Due within 30 days", "MyDue30");
                    end = now.AddDays(30);
                    due = tickets.Where(t => t.DueDate >= now && t.DueDate < end);
                    if ((di.CountItems = due.Count()) > 0)
                        di.CountHours = due.Sum(t => t.HoursToComplete);
                    MyActiveTickets.Add(di);

                    // Get number of tickets in test...
                    di = new DashboardItem("Sent to testing", "MyTesting");
                    due = tickets.Where(t => t.TicketStatusId >= (int)TS.Status.ReadyToTest);
                    if ((di.CountItems = due.Count()) > 0)
                        di.CountHours = due.Sum(t => t.HoursToComplete);
                    MyActiveTickets.Add(di);
                }
            }
            else
            {
                // Do this for anybody...
            }
        }
Esempio n. 29
0
        protected override void Seed(BugTracker.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 == "MasterAdmin"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "MasterAdmin"
                });
            }

            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"
                });
            }

            UserManager <ApplicationUser> userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));


            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                ApplicationUser masterUser = new ApplicationUser()
                {
                    DisplayName = "Master",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    AvatarURL   = "/Uploads/Master-joda-icon.png"
                };
                userManager.Create(masterUser, "PassWord");
            }



            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                ApplicationUser projMUser = new ApplicationUser()
                {
                    DisplayName = "Project Manager",
                    FirstName   = "James",
                    LastName    = "Cooley",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    AvatarURL   = "/Uploads/cooleylink.JPEG"
                };

                userManager.Create(projMUser, "PassWord");
            }

            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                ApplicationUser devUser = new ApplicationUser()
                {
                    DisplayName = "Developer",
                    FirstName   = "John",
                    LastName    = "Snow",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    AvatarURL   = "/img/profiles/a.jpg"
                };

                userManager.Create(devUser, "PassWord");
            }

            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                ApplicationUser subUser = new ApplicationUser()
                {
                    DisplayName = "Submitter",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Ashley",
                    LastName    = "Singleton",
                    AvatarURL   = "/img/profiles/2.png"
                };

                userManager.Create(subUser, "PassWord");
            }

            context.SaveChanges();
            //Initialize

            ApplicationUser maU = context.Users.FirstOrDefault(r => r.Email == "*****@*****.**");

            if (maU != null)
            {
                userManager.AddToRole(maU.Id, "MasterAdmin");
            }



            ApplicationUser pmU = context.Users.FirstOrDefault(r => r.Email == "*****@*****.**");

            if (pmU != null)
            {
                userManager.AddToRole(pmU.Id, "Project Manager");
            }

            ApplicationUser devU = context.Users.FirstOrDefault(r => r.Email == "*****@*****.**");

            if (devU != null)
            {
                userManager.AddToRole(devU.Id, "Developer");
            }

            ApplicationUser subU = context.Users.FirstOrDefault(r => r.Email == "*****@*****.**");

            if (subU != null)
            {
                userManager.AddToRole(subU.Id, "Submitter");
            }


            context.SaveChanges();


            //demo users
            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                ApplicationUser demoadminUser = new ApplicationUser()
                {
                    DisplayName = "Demo Admin",
                    FirstName   = "John",
                    LastName    = "Stewart",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    AvatarURL   = "/Uploads/Master-joda-icon.png"
                };

                userManager.Create(demoadminUser, "PassWord");
            }


            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                ApplicationUser demoprojectUser = new ApplicationUser()
                {
                    DisplayName = "Demo Project Manager",
                    FirstName   = "Eric",
                    LastName    = "Temple",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    AvatarURL   = "/Uploads/Profile-512.png"
                };

                userManager.Create(demoprojectUser, "PassWord");
            }

            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                ApplicationUser demosubUser = new ApplicationUser()
                {
                    DisplayName = "Demo Submitter",
                    FirstName   = "Malcom",
                    LastName    = "Mueller",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    AvatarURL   = "/Uploads/sub.png"
                };

                userManager.Create(demosubUser, "PassWord");
            }

            if (!context.Users.Any(r => r.UserName == "*****@*****.**"))
            {
                ApplicationUser demodevUser = new ApplicationUser()
                {
                    DisplayName = "Demo Developer",
                    FirstName   = "Ashton",
                    LastName    = "Farmer",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    AvatarURL   = "/Uploads/profile-picture-icon-11.jpg"
                };

                userManager.Create(demodevUser, "PassWord");
            }

            context.SaveChanges();

            //initialize demo users
            ApplicationUser demoadU = context.Users.FirstOrDefault(r => r.Email == "*****@*****.**");

            if (demoadU != null)
            {
                userManager.AddToRole(demoadU.Id, "Admin");
            }

            ApplicationUser demopmU = context.Users.FirstOrDefault(r => r.Email == "*****@*****.**");

            if (demopmU != null)
            {
                userManager.AddToRole(demopmU.Id, "Project Manager");
            }

            ApplicationUser demosubU = context.Users.FirstOrDefault(r => r.Email == "*****@*****.**");

            if (demosubU != null)
            {
                userManager.AddToRole(demosubU.Id, "Submitter");
            }

            ApplicationUser demodevU = context.Users.FirstOrDefault(r => r.Email == "*****@*****.**");

            if (demodevU != null)
            {
                userManager.AddToRole(demodevU.Id, "Developer");
            }

            context.SaveChanges();


            //Seed name and descriptions tables
            context.TicketTypes.AddOrUpdate(t => t.Name, new TicketType {
                Name = "Bug", Description = "An error has occurred that resulted in either a database issue or file issue"
            },
                                            new TicketType {
                Name = "Defect", Description = "An error has occurred that resulted in either an display issue or presentation issue"
            },
                                            new TicketType {
                Name = "Feature Request", Description = "A client has called requesting new features"
            },
                                            new TicketType {
                Name = "Documentation Request", Description = "A client has called requesting additional documentation"
            },
                                            new TicketType {
                Name = "Training Request", Description = "A client has called in to request a schedule training appointment"
            },
                                            new TicketType {
                Name = "Complaint", Description = "A client has called in to make a general complaint"
            },
                                            new TicketType {
                Name = "Other", Description = "A call has been received that requires prompt follow up"
            });

            context.SaveChanges();


            context.TicketStatuses.AddOrUpdate(t => t.Name, new TicketStatus {
                Name = "New / Unassigned", Description = "New ticket that has not been assigned", Value = 0
            },
                                               new TicketStatus {
                Name = "Unassigned", Description = "Ticket that has not been assigned", Value = 0
            },
                                               new TicketStatus {
                Name = "Assigned", Description = "The ticket has been assigned", Value = 15
            },
                                               new TicketStatus {
                Name = "Assigned / In Progress", Description = "Ticket that has been assigned and in progress", Value = 40
            },
                                               new TicketStatus {
                Name = "Resolved", Description = "Completed Ticket by assigned developer", Value = 75
            },
                                               new TicketStatus {
                Name = "Archived", Description = "Ticket has been completed and approved by Manager", Value = 100
            });


            context.SaveChanges();


            context.TicketPriorities.AddOrUpdate(t => t.Name, new TicketPriority {
                Name = "Low", Description = "Requires attention. Developers should complete if there are no Medium/High/Urgent priority tickets"
            },
                                                 new TicketPriority {
                Name = "Medium", Description = "Requires Normal attention. Developers should complete if there are no High/Urgent priority tickets"
            },
                                                 new TicketPriority {
                Name = "High", Description = "Requires Urgent attention. Developers should focus on completing before medium/low priority tickets"
            },
                                                 new TicketPriority {
                Name = "URGENT", Description = "Highest Demand. Developers should abandon all unfinished task and focus on current ticket"
            });



            context.Projects.AddOrUpdate(t => t.Name, new Project {
                Name = "Portfolio", Description = "This project is a collection of projects in the process of development. Currently has bootstrap exercises, access to Blogsite, BugTracker, and Cash Portal"
            },
                                         new Project {
                Name = "Blog Site", Description = "This project is a display of blogs that accepts and allows users to comment on post. Admin of site can also create post. Displays the ability to use encapsulation,inheritance, interfaces and etc"
            },
                                         new Project {
                Name = "BugTracker", Description = "This project is a display of all previous project skill-set. This application can be use in procurement processes or to track the status of issues amongst levels of authorization"
            },
                                         new Project {
                Name = "Cash Portal", Description = "This project is a budget application. Designed to give users the ability to create budgets for their household"
            });

            context.SaveChanges();

            var blogSiteId    = context.Projects.FirstOrDefault(p => p.Name == "Blog Site").Id;
            var portfolioId   = context.Projects.FirstOrDefault(p => p.Name == "Portfolio").Id;
            var bugTradkerId  = context.Projects.FirstOrDefault(p => p.Name == "BugTracker").Id;
            var cashportalId  = context.Projects.FirstOrDefault(p => p.Name == "Cash Portal").Id;
            var projectHelper = new ProjectsHelper();

            projectHelper.AddUserToProject(demopmU.Id, blogSiteId);
            projectHelper.AddUserToProject(demodevU.Id, blogSiteId);
            projectHelper.AddUserToProject(demosubU.Id, blogSiteId);


            projectHelper.AddUserToProject(pmU.Id, blogSiteId);
            projectHelper.AddUserToProject(devU.Id, blogSiteId);
            projectHelper.AddUserToProject(subU.Id, blogSiteId);

            projectHelper.AddUserToProject(pmU.Id, cashportalId);
            projectHelper.AddUserToProject(devU.Id, cashportalId);
            projectHelper.AddUserToProject(subU.Id, cashportalId);


            projectHelper.AddUserToProject(demopmU.Id, portfolioId);
            projectHelper.AddUserToProject(demodevU.Id, portfolioId);
            projectHelper.AddUserToProject(demosubU.Id, portfolioId);

            projectHelper.AddUserToProject(demopmU.Id, bugTradkerId);
            projectHelper.AddUserToProject(demodevU.Id, bugTradkerId);
            projectHelper.AddUserToProject(demosubU.Id, bugTradkerId);

            context.SaveChanges();


            context.Tickets.AddOrUpdate(
                p => p.Title,
                new Ticket
            {
                ProjectId        = blogSiteId,
                OwnerUserId      = demosubU.Id,
                Title            = "New Things",
                Description      = "Clients have requested that the blog site project have more functionality",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New / Unassigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Feature Request").Id,
            },
                new Ticket
            {
                ProjectId        = portfolioId,
                OwnerUserId      = demosubU.Id,
                AssignedToUserId = demodevU.Id,
                Title            = "Notify",
                Description      = "Clients have requested that the portfolio be updated with new projects",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Feature Request").Id,
            },
                new Ticket
            {
                ProjectId        = bugTradkerId,
                OwnerUserId      = demosubU.Id,
                AssignedToUserId = demodevU.Id,
                Title            = "Estimated Time of Publish?",
                Description      = "Clients Wants to be notified when Developers have finish the first version of the release",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "High").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "Assigned / In Progress").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Other").Id,
            });



            context.SaveChanges();
        }
Esempio n. 30
0
        protected override void Seed(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.
            #region
            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"
                });
            }
            #endregion


            var userManager = new UserManager <ApplicationUser>(
                new UserStore <ApplicationUser>(context));

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Bryant",
                    LastName    = "Caldwell",
                    DisplayName = "C-Wellionaire"
                }, "Abc&123");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Joe",
                    LastName    = "Schmo",
                    DisplayName = "Twich"
                }, "Abc&123");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Joe",
                    LastName    = "Schmo",
                    DisplayName = "Twich"
                }, "Abc&123");
            }


            //Introduction to the Demo Users....
            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Admin",
                    DisplayName = "Demo Admin"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Project Manager",
                    DisplayName = "The PM"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Developer",
                    DisplayName = "The Dev"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Demo",
                    LastName    = "Submitter",
                    DisplayName = "The Sub"
                }, WebConfigurationManager.AppSettings["DemoUserPassword"]);
            }


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

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

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

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

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

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


            context.Projects.AddOrUpdate(
                p => p.Name,
                new Project {
                Name = "Spock IT Blog", Description = "This is the Spock Blog project that is now out in the wild.", Created = DateTime.Now
            },
                new Project {
                Name = "Spock Portfolio", Description = "This is the Portfolio project that is now out in the wild.", Created = DateTime.Now
            },
                new Project {
                Name = "Spock BugTracker", Description = "This is the Spock BugTracker project that is now out in the wild.", Created = DateTime.Now
            }
                );

            context.SaveChanges();


            #region Project Assignment
            var blogProjectId       = context.Projects.FirstOrDefault(p => p.Name == "Spock IT Blog").Id;
            var bugTrackerProjectId = context.Projects.FirstOrDefault(p => p.Name == "Spock BugTracker").Id;

            var projectHelper = new ProjectsHelper();

            //Assign all three users to the Blog project
            projectHelper.AddUserToProject(pmId, blogProjectId);
            projectHelper.AddUserToProject(devId, blogProjectId);
            projectHelper.AddUserToProject(subId, blogProjectId);

            //Assign all three users to the Blog project
            projectHelper.AddUserToProject(pmId, bugTrackerProjectId);
            projectHelper.AddUserToProject(devId, bugTrackerProjectId);
            projectHelper.AddUserToProject(subId, bugTrackerProjectId);
            #endregion

            #region Priority, Status & Type creation (required FK's for a Ticket)
            context.TicketPriorities.AddOrUpdate(
                t => t.Name,
                new TicketPriority {
                Name = "Immediate", Description = "Highest priority level requiring immediate action"
            },
                new TicketPriority {
                Name = "High", Description = "A high priority level requiring quick action"
            },
                new TicketPriority {
                Name = "Medium", Description = ""
            },
                new TicketPriority {
                Name = "Low", Description = ""
            },
                new TicketPriority {
                Name = "None", Description = ""
            }
                );

            context.TicketStatuses.AddOrUpdate(
                t => t.Name,
                new TicketStatus {
                Name = "New / UnAssigned", Description = ""
            },
                new TicketStatus {
                Name = "UnAssigned", Description = ""
            },
                new TicketStatus {
                Name = "New / Assigned", Description = ""
            },
                new TicketStatus {
                Name = "Assigned", Description = ""
            },
                new TicketStatus {
                Name = "In Progress", Description = ""
            },
                new TicketStatus {
                Name = "Completed", Description = ""
            },
                new TicketStatus {
                Name = "Archived", Description = ""
            }
                );

            context.TicketTypes.AddOrUpdate(
                t => t.Name,
                new TicketType {
                Name = "Bug", Description = "An error has occurred that resulted in either the application crashing or the user seeing error information"
            },
                new TicketType {
                Name = "Defect", Description = "An error has occurred that resulted in either a miscalculation or an in correct workflow"
            },
                new TicketType {
                Name = "Feature Request", Description = "A client has called in asking for new functionality in an existing application"
            },
                new TicketType {
                Name = "Documentation Request", Description = "A client has called in asking for new documentation to be created for the existing application"
            },
                new TicketType {
                Name = "Training Request", Description = "A client has called in asking to schedule a training session"
            },
                new TicketType {
                Name = "Complaint", Description = "A client has called in to make a general complaint about our application"
            },
                new TicketType {
                Name = "Other", Description = "A call has been received that requires follow up but is outside the usual parameters for a request"
            }
                );

            context.SaveChanges();
            #endregion

            #region Ticket creation
            context.Tickets.AddOrUpdate(
                p => p.Title,
                //1 unassigned Bug on the Blog project
                //1 assigned Defect on the Blog project
                new Ticket
            {
                ProjectId        = blogProjectId,
                OwnerUserId      = subId,
                Title            = "Seeded Ticket #1",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New / UnAssigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Bug").Id,
            },
                new Ticket
            {
                ProjectId        = blogProjectId,
                OwnerUserId      = subId,
                AssignedToUserId = devId,
                Title            = "Seeded Ticket #2",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New / Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id,
            },

                //1 unassigned Bug on the BugTracker
                //1 assigned Defect on the BugTracker
                //1 unassigned Bug on the Blog project
                //1 assigned Defect on the Blog project
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = subId,
                Title            = "Seeded Ticket #3",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New / UnAssigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Bug").Id,
            },
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = subId,
                AssignedToUserId = devId,
                Title            = "Seeded Ticket #4",
                Description      = "Testing a seeded Ticket",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatuses.FirstOrDefault(t => t.Name == "New / Assigned").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id,
            });
        }
Esempio n. 31
0
        protected override void Seed(BugTracker.Models.ApplicationDbContext context)
        {
            var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context));

            #region Create roles

            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 == "DemoAdmin"))
            {
                roleManager.Create(new IdentityRole {
                    Name = "DemoAdmin"
                });
            }

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

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

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

            #region Create users
            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "christophe",
                    LastName    = "madoz",
                    DisplayName = "Administrator"
                }, WebConfigurationManager.AppSettings["my password"]);
            }


            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Pascal",
                    LastName    = "madoz",
                    DisplayName = "Project Manager"
                }, "Abc&123");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Alain",
                    LastName    = "madoz",
                    DisplayName = "Developer"
                }, "Abc&123");
            }


            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "John",
                    LastName    = "madoz",
                    DisplayName = "Submitter"
                }, "Abc&123");
            }

            if (!context.Users.Any(u => u.Email == "*****@*****.**"))
            {
                userManager.Create(new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    FirstName   = "Steve",
                    LastName    = "clayton",
                    DisplayName = "steve Clayton"
                }, "Abc&123");
            }

            #endregion

            #region Add users to roles
            var adminId = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(adminId, "Admin");

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

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

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


            var userId = userManager.FindByEmail("*****@*****.**").Id;
            userManager.AddToRole(userId, "Submitter");
            #endregion

            #region loading lookup date

            context.TicketPriorities.AddOrUpdate(item => item.Name,

                                                 new TicketPriority()
            {
                Name = "High", Description = "The issue needs to be resolve within 3 days."
            },
                                                 new TicketPriority()
            {
                Name = "Low", Description = "The issue can be resolved within 2 weeks."
            },
                                                 new TicketPriority()
            {
                Name = "Medium", Description = "The issue can be resolved within 1 week."
            },
                                                 new TicketPriority()
            {
                Name = "Urgent", Description = "Crutial problem with the system which needs to be resolve within 1 day."
            }
                                                 );

            context.TicketStatus.AddOrUpdate(t => t.Name,
                                             new TicketStatus()
            {
                Name = "open", Description = "A newly created or simply unassinged ticket"
            },
                                             new TicketStatus()
            {
                Name = "Assigned", Description = "A ticket that has been assigned but not yet started"
            },
                                             new TicketStatus()
            {
                Name = "In Progress", Description = "A ticket that has been assigned and is currently being working on"
            },
                                             new TicketStatus()
            {
                Name = "Resolved", Description = "A ticket that has been resolved."
            },
                                             new TicketStatus()
            {
                Name = "Archived", Description = "A ticket that has been archived."
            }
                                             );

            context.TicketTypes.AddOrUpdate(t => t.Name,
                                            new TicketType()
            {
                Name = "Defect", Description = "A defect in the software has been identified"
            },
                                            new TicketType()
            {
                Name = "Feature Request", Description = "I user has made a request to add a feature to the software."
            },
                                            new TicketType()
            {
                Name = "Training request", Description = "A new employee has made a request to get a training for a specific feature in the system."
            }
                                            );

            #endregion

            #region Project Creation
            context.Projects.AddOrUpdate(
                p => p.Name,
                new Project()
            {
                Name = "Blog Project", Description = "This is the Blog project ready for use.", Created = DateTime.Now
            },
                new Project()
            {
                Name = "Portfolio", Description = "This is the Portfolio project which is ready for use.", Created = DateTime.Now
            },
                new Project()
            {
                Name = "BugTracker", Description = "This is the BugTracker project.", Created = DateTime.Now
            }
                );

            context.SaveChanges();
            #endregion


            #region Project Assignment
            var blogProjectId       = context.Projects.FirstOrDefault(p => p.Name == "Blog Project").Id;
            var bugTrackerProjectId = context.Projects.FirstOrDefault(p => p.Name == "BugTracker").Id;

            var projectHelper = new ProjectsHelper();

            //Assign all three users to the Blog project
            projectHelper.AddUserToProject(adminId, blogProjectId);
            projectHelper.AddUserToProject(projectMangerId, blogProjectId);
            projectHelper.AddUserToProject(developerId, blogProjectId);

            //Assign all three users to the Blog project
            projectHelper.AddUserToProject(adminId, bugTrackerProjectId);
            projectHelper.AddUserToProject(projectMangerId, bugTrackerProjectId);
            projectHelper.AddUserToProject(developerId, bugTrackerProjectId);
            #endregion



            #region Ticket creation
            context.Tickets.AddOrUpdate(
                p => p.Title,
                new Ticket
            {
                ProjectId        = blogProjectId,
                OwnerUserId      = submitterId,
                Title            = "Ticket Test one",
                Description      = "Ticket project one",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "High").Id,
                TicketStatusId   = context.TicketStatus.FirstOrDefault(t => t.Name == "open").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id,
            },
                new Ticket
            {
                ProjectId        = blogProjectId,
                OwnerUserId      = submitterId,
                AssignedToUserId = developerId,
                Title            = "Ticket Test Two",
                Description      = "Ticket project one with issues",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Medium").Id,
                TicketStatusId   = context.TicketStatus.FirstOrDefault(t => t.Name == "In Progress").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id,
            },


                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = submitterId,
                Title            = "Ticket Test Three",
                Description      = "Ticket project one with issues",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Urgent").Id,
                TicketStatusId   = context.TicketStatus.FirstOrDefault(t => t.Name == "open").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id,
            },
                new Ticket
            {
                ProjectId        = bugTrackerProjectId,
                OwnerUserId      = submitterId,
                AssignedToUserId = developerId,
                Title            = "Ticket Test Four",
                Description      = "Ticket project one with issues",
                Created          = DateTime.Now,
                TicketPriorityId = context.TicketPriorities.FirstOrDefault(t => t.Name == "Low").Id,
                TicketStatusId   = context.TicketStatus.FirstOrDefault(t => t.Name == "Resolved").Id,
                TicketTypeId     = context.TicketTypes.FirstOrDefault(t => t.Name == "Defect").Id,
            });



            #endregion
        }