public ActionResult AssignUser([Bind(Include = "Id,Name")] Project project, /*List<int> Projects,*/ List <string> Devs, List <string> Subs) { if (ModelState.IsValid) { //Assign the user to the selected role //Determine if the user currently occupies a project, and if so remove them from it var UsersOnProject = projectHelper.UsersOnProject(project.Id).ToList(); foreach (var user in UsersOnProject) { if (!rolesHelper.IsUserInRole(user.Id, "Project Manager")) { projectHelper.RemoveUserFromProject(user.Id, project.Id); } } if (Devs != null) { foreach (var devId in Devs) { projectHelper.AddUserToProject(devId, project.Id); } } if (Subs != null) { foreach (var subId in Subs) { projectHelper.AddUserToProject(subId, project.Id); } } return(RedirectToAction("Details", "Projects", new { Id = project.Id })); } return(View()); }
public ActionResult ProjectWizard(ProjectWizardVM model) { #region Fail Cases if (model.Name == null) { TempData["ProjectErrors"] += "<p class=\"text-danger\">You must define a Project Name</p>"; } if (model.Details == null) { TempData["ProjectErrors"] += "<p class=\"text-danger\">You must define Project Details</p>"; } if (model.ProjectManagerId == null) { TempData["ProjectErrors"] += "<p class=\"text-danger\">You must select a Project Manager</p>"; } if (model.DeveloperIds.Count == 0) { TempData["ProjectErrors"] += "<p class=\"text-danger\">You must select at least one Developer</p>"; } if (model.SubmitterIds.Count == 0) { TempData["ProjectErrors"] += "<p class=\"text-danger\">You must select at least one Submitter</p>"; } #endregion if (ModelState.IsValid) { Project project = new Project(); if (db.Projects.Any(p => p.Name == model.Name)) { TempData["ProjectErrors"] += "<p class=\"text-danger\">A Project with this name already exists</p>"; return(Redirect(Request.UrlReferrer.ToString())); } project.Name = model.Name; project.Details = model.Details; project.Created = DateTime.Now; project.IsArchived = false; db.Projects.Add(project); db.SaveChanges(); TempData["ProjectErrors"] += "Success"; projHelp.AddUserToProject(model.ProjectManagerId, project.Id); foreach (var userId in model.DeveloperIds) { projHelp.AddUserToProject(userId, project.Id); } foreach (var userId in model.SubmitterIds) { projHelp.AddUserToProject(userId, project.Id); } //return Redirect(returnUrl); return(Redirect(Request.UrlReferrer.ToString())); } else { return(Redirect(Request.UrlReferrer.ToString())); } }
public ActionResult ProjectWizard(ProjectWizardVM model) { #region fail cases ViewBag.Errors = ""; if (model.ProjectManagerId == null) { ViewBag.Errors += "<p> You must select a Project Manager</p>"; } if (model.DeveloperIds.Count < 1) { ViewBag.Errors += "<p> You must select at least one Developer </p>"; } if (model.SubmitterIds.Count < 1) { ViewBag.Errors += "<p> You must select at least one Submmiter</p>"; } if (ViewBag.Errors.Length > 0) { ViewBag.ProjectManagerId = new SelectList(roleHelper.UsersInRole("ProjectManager"), "Id", "FullName"); ViewBag.DeveloperIds = new MultiSelectList(roleHelper.UsersInRole("Developer"), "Id", "FullName"); ViewBag.SubmitterIds = new MultiSelectList(roleHelper.UsersInRole("Submitter"), "Id", "FullName"); return(View(model)); } #endregion if (ModelState.IsValid) { Project project = new Project(); project.Name = model.Name; project.Description = model.Description; project.Created = DateTime.Now; project.DueDate = DateTime.Now.AddDays(+100); project.IsArchive = false; db.Projects.Add(project); db.SaveChanges(); projectHelper.AddUserToProject(model.ProjectManagerId, project.Id); foreach (var userId in model.DeveloperIds) { projectHelper.AddUserToProject(userId, project.Id); } foreach (var userId in model.SubmitterIds) { projectHelper.AddUserToProject(userId, project.Id); } notificationHelper.NewProjectCreated(project); return(RedirectToAction("Index")); } else { ViewBag.ProjectManagerId = new SelectList(roleHelper.UsersInRole("ProjectManager"), "Id", "FullName"); ViewBag.DeveloperIds = new MultiSelectList(roleHelper.UsersInRole("Developer"), "Id", "FullName"); ViewBag.SubmitterIds = new MultiSelectList(roleHelper.UsersInRole("Submitter"), "Id", "FullName"); return(View(model)); } }
//public ActionResult ManageProjects(List<int> projects, string userId) public ActionResult ManageProjects(List <int> projects, string userId) { foreach (var project in projHelper.ListUserProjects(userId).ToList()) { projHelper.RemoveUserFromProject(userId, project.Id); } if (projects != null) { foreach (var projectId in projects) { projHelper.AddUserToProject(userId, projectId); } } return(RedirectToAction("UserIndex")); }
public ActionResult ManageUserProjects(string userId, List <int> addProjectIds, List <int> removeProjectIds) { if (addProjectIds != null) { foreach (var projectId in addProjectIds) { projHelper.AddUserToProject(userId, projectId); } } if (removeProjectIds != null) { foreach (var projectId in removeProjectIds) { projHelper.RemoveUserFromProject(userId, projectId); } } return(Redirect(Request.UrlReferrer.ToString())); }
public ActionResult AssignProject(int project, string ProjectManager, List <string> Developers, List <string> Submitters) { if (ModelState.IsValid) { var projUsers = projHelper.UsersOnProject(project); foreach (var user in projUsers.ToList()) { projHelper.RemoveUserFromProject(user.Id, project); } if (User.IsInRole("Admin")) { projHelper.AddUserToProject(ProjectManager, project); } if (ProjectManager == null) { User.Identity.GetUserId(); } if (Developers != null) { foreach (var user in Developers) { projHelper.AddUserToProject(user, project); } } if (Submitters != null) { foreach (var user in Submitters) { projHelper.AddUserToProject(user, project); } } return(RedirectToAction("AP", "Projects")); } return(RedirectToAction("AP", "Projects")); }
public ActionResult AssignPMs(/*[Bind(Include = "Id,ProjectId")]*/ List <int> Projects, string PMs) { if (ModelState.IsValid) { //Assign the user to the selected role //Determine if the user currently occupies a role, and if so remove them form it foreach (var project in projectHelper.ListUserProjects(PMs)) { projectHelper.RemoveUserFromProject(PMs, project.Id); } foreach (var projectId in Projects) { projectHelper.AddUserToProject(PMs, projectId); } return(RedirectToAction("Index", "Home")); } return(View()); }
public ActionResult ManageProjectUsers(List <int> projects, string projectManagerId, List <string> developers, List <string> submitters) { if (projects != null) { foreach (var projectId in projects) { //Remove everyone from this project foreach (var user in projectHelper.UsersOnProject(projectId).ToList()) { projectHelper.RemoveUserFromProject(user.Id, projectId); } //Add back PM if possible if (!string.IsNullOrEmpty(projectManagerId)) { projectHelper.AddUserToProject(projectManagerId, projectId); } if (developers != null) { foreach (var developerId in developers) { projectHelper.AddUserToProject(developerId, projectId); } } if (submitters != null) { foreach (var submitterId in submitters) { projectHelper.AddUserToProject(submitterId, projectId); } } } } return(RedirectToAction("ManageProjectUsers")); }
public ActionResult Edit([Bind(Include = "Id,FirstName,LastName,Email,PhoneNumber,Picture,DisplayName")] ApplicationUser applicationUser, HttpPostedFileBase image, string Roles, List <int> Projects) { if (ModelState.IsValid) { if (ImageUploadValidator.IsWebFriendlyImage(image)) { var fileName = Path.GetFileName(image.FileName); image.SaveAs(Path.Combine(Server.MapPath("~/Images/"), fileName)); applicationUser.Picture = "/Images/" + fileName; } applicationUser.UserName = applicationUser.Email; //Assign the user to the selected role //Determine if the user currently occupies a role, and if so remove them form it foreach (var role in rolesHelper.ListUserRoles(applicationUser.Id)) { rolesHelper.RemoveUserFromRole(applicationUser.Id, role); } if (Roles != null) { rolesHelper.AddUserToRole(applicationUser.Id, Roles); } //Add user to the new selected role foreach (var proj in projectHelper.ListUserProjects(applicationUser.Id)) { projectHelper.RemoveUserFromProject(applicationUser.Id, proj.Id); } if (Projects != null) { foreach (var projectId in Projects) { projectHelper.AddUserToProject(applicationUser.Id, projectId); } } //db.Entry(applicationUser).State = EntityState.Unchanged; db.Users.Attach(applicationUser); db.Entry(applicationUser).Property(p => p.FirstName).IsModified = true; db.Entry(applicationUser).Property(p => p.LastName).IsModified = true; db.Entry(applicationUser).Property(p => p.Email).IsModified = true; db.Entry(applicationUser).Property(p => p.PhoneNumber).IsModified = true; db.Entry(applicationUser).Property(p => p.DisplayName).IsModified = true; db.Entry(applicationUser).Property(p => p.UserName).IsModified = true; db.Entry(applicationUser).Property(p => p.Picture).IsModified = true; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(applicationUser)); }
public ActionResult ProjectAssign(int Id, List <string> PA) { if (PA == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var projectHelper = new ProjectHelper(); foreach (var user in db.Users) { projectHelper.RemoveUserToProject(user.Id, Id); } foreach (var userId in PA) { projectHelper.AddUserToProject(userId, Id); } return(RedirectToAction("Index", "Projects")); }
public ActionResult Create([Bind(Include = "Id,Name,Description")] Project project) { if (ModelState.IsValid) { db.Projects.Add(project); db.SaveChanges(); if (User.IsInRole("Project Manager")) { projectHelper.AddUserToProject(User.Identity.GetUserId(), project.Id); } return(RedirectToAction("Index", "Home")); } return(View(project)); }
public async Task <ActionResult> EditUsers([Bind(Include = "Users,Project,SelectedUsers")] ProjectViewModel model, TicketNotification ticketNotification) { ProjectHelper helper = new ProjectHelper(); foreach (var user in db.Users) { if (helper.IsUserOnProject(user.Id, model.Project.Id)) { helper.RemoveUserFromProject(user.Id, model.Project.Id); } } foreach (var user in model.SelectedUsers) { if (!helper.IsUserOnProject(user, model.Project.Id)) { helper.AddUserToProject(user, model.Project.Id); //userManager.SendEmailAsync(user, "Notification", "You have been added to project " + model.Project.Name); var callbackUrl = Url.Action("Details", "Projects", new { id = model.Project.Id }, protocol: Request.Url.Scheme); try { EmailService ems = new EmailService(); IdentityMessage msg = new IdentityMessage(); ApplicationUser usr = db.Users.Find(user); msg.Body = "You have been added to a Project." + Environment.NewLine + "Please click the following link to view the details" + "<a href=\"" + callbackUrl + "\">PROJECT</a>"; msg.Destination = usr.Email; msg.Subject = "BugTracker"; await ems.SendMailAsync(msg); } catch (Exception ex) { await Task.FromResult(0); } } } return(RedirectToAction("Index")); }
public ActionResult ManageProjectUsers(int id, string projectmanagers, List <string> msdevs, List <string> mssubs) { //Remove users from project if they are already on one. foreach (var user in projectHelper.UsersOnProject(id).ToList()) { //{ // projectHelper.RemoveUserFromProject(user.Id, id); //} //Add back PM if possible if (!string.IsNullOrEmpty(projectmanagers)) { projectHelper.AddProjectManagerToProject(projectmanagers, id); projectHelper.AddUserToProject(projectmanagers, id); } } if (msdevs != null) { foreach (var developerId in msdevs) { projectHelper.AddUserToProject(developerId, id); } } if (mssubs != null) { foreach (var submitterId in mssubs) { projectHelper.AddUserToProject(submitterId, id); } } //Remove everyone from this project //foreach (var user in projectHelper.UsersOnProject(model.Project.Id).ToList()) //{ // projectHelper.RemoveUserFromProject(user.Id, model.Project.Id); //} //Add back PM if possible // if (!string.IsNullOrEmpty(model.ProjectManager.Id)) // { // //projectHelper.AddUserToProject(projectManagerId, projectId); //projectHelper.AddProjectManagerToProject() // } // if (developers != null) // { // foreach(var developerId in developers) // { // projectHelper.AddUserToProject(developerId, projectId); // } // } // if (submitters != null) // { // foreach (var submitterId in submitters) // { // projectHelper.AddUserToProject(submitterId, projectId); // } // } // } //} return(RedirectToAction("ManageProjectUsers")); }
public ActionResult Seed() { var dev = db.Users.FirstOrDefault(x => x.Email == "*****@*****.**"); var sub = db.Users.FirstOrDefault(x => x.Email == "*****@*****.**"); var manager = db.Users.FirstOrDefault(x => x.Email == "*****@*****.**"); db.Projects.Add(new Project { Name = "The keyboard warrior", Description = "React and Node ecommerse site.", Archived = false }); db.Projects.Add(new Project { Name = "Portfolio", Description = "Jquery and bootstrap site.", Archived = false }); db.Projects.Add(new Project { Name = "Blog", Description = "MVC5 blog.", Archived = false }); db.Projects.Add(new Project { Name = "BugTracker", Description = "MVC5 role based functionality app.", Archived = false }); db.Projects.Add(new Project { Name = "Financial Planner", Description = "MVC5 portion of the fianancial planner.", Archived = false }); db.SaveChanges(); var projects = db.Projects; foreach (var project in projects) { ProjectHelper.AddUserToProject(dev.Id, project.Id); ProjectHelper.AddUserToProject(sub.Id, project.Id); ProjectHelper.AddUserToProject(manager.Id, project.Id); } var key = db.Projects.FirstOrDefault(m => m.Name == "The keyboard warrior"); var port = db.Projects.FirstOrDefault(m => m.Name == "Portfolio"); var blog = db.Projects.FirstOrDefault(m => m.Name == "Blog"); var bt = db.Projects.FirstOrDefault(m => m.Name == "BugTracker"); var fp = db.Projects.FirstOrDefault(m => m.Name == "Financial Planner"); db.Tickets.Add(new Ticket { Title = "Issue hosting project", Description = "The store does not render when hosted", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = key.Id, Created = DateTime.Now.AddDays(-75), TicketPriorityId = 4, TicketStatusId = 4, TicketTypeId = 5 }); db.Tickets.Add(new Ticket { Title = "Local storage cart.", Description = "Cart won't update on local storage.", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = key.Id, Created = DateTime.Now.AddDays(-76), TicketPriorityId = 2, TicketStatusId = 4, TicketTypeId = 5 }); db.Tickets.Add(new Ticket { Title = "Stripe", Description = "Add stripe payment processor", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = key.Id, Created = DateTime.Now.AddDays(-76), TicketPriorityId = 1, TicketStatusId = 6, TicketTypeId = 4 }); db.Tickets.Add(new Ticket { Title = "Site down", Description = "Website showing 404", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = key.Id, Created = DateTime.Now.AddDays(-40), TicketPriorityId = 4, TicketStatusId = 5, TicketTypeId = 8 }); db.Tickets.Add(new Ticket { Title = "Update", Description = "Add new project", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = port.Id, Created = DateTime.Now.AddDays(-1), TicketPriorityId = 2, TicketStatusId = 2, TicketTypeId = 9 }); db.Tickets.Add(new Ticket { Title = "Email", Description = "Add email to contact form", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = port.Id, Created = DateTime.Now.AddDays(-60), TicketPriorityId = 2, TicketStatusId = 4, TicketTypeId = 2 }); db.Tickets.Add(new Ticket { Title = "Live link drawer", Description = "Drawer with live links", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = port.Id, Created = DateTime.Now.AddDays(-65), TicketPriorityId = 2, TicketStatusId = 4, TicketTypeId = 2 }); db.Tickets.Add(new Ticket { Title = "Crop images", Description = "Crop images to equal size.", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = port.Id, Created = DateTime.Now.AddDays(-67), TicketPriorityId = 3, TicketStatusId = 4, TicketTypeId = 2 }); db.Tickets.Add(new Ticket { Title = "Post email animation", Description = "Animation confirmation for email", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = port.Id, Created = DateTime.Now.AddDays(-55), TicketPriorityId = 2, TicketStatusId = 6, TicketTypeId = 4 }); db.Tickets.Add(new Ticket { Title = "New Blog post", Description = "Write a new blog posts", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = blog.Id, Created = DateTime.Now.AddDays(0), TicketPriorityId = 3, TicketStatusId = 2, TicketTypeId = 9 }); db.Tickets.Add(new Ticket { Title = "New Blog post", Description = "Write a new blog posts", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = blog.Id, Created = DateTime.Now.AddDays(-50), TicketPriorityId = 3, TicketStatusId = 4, TicketTypeId = 9 }); db.Tickets.Add(new Ticket { Title = "New Blog post", Description = "Write a new blog posts", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = blog.Id, Created = DateTime.Now.AddDays(-30), TicketPriorityId = 3, TicketStatusId = 4, TicketTypeId = 9 }); db.Tickets.Add(new Ticket { Title = "Fix Teaxt wrap", Description = "Consider if the user enter random charactors", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = blog.Id, Created = DateTime.Now.AddDays(-45), TicketPriorityId = 2, TicketStatusId = 4, TicketTypeId = 2 }); db.Tickets.Add(new Ticket { Title = "Comment section", Description = "Style comment section.", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = blog.Id, Created = DateTime.Now.AddDays(-40), TicketPriorityId = 3, TicketStatusId = 4, TicketTypeId = 2 }); db.Tickets.Add(new Ticket { Title = "Archive", Description = "Archive tickets and projects", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = bt.Id, Created = DateTime.Now.AddDays(-25), TicketPriorityId = 2, TicketStatusId = 4, TicketTypeId = 4 }); db.Tickets.Add(new Ticket { Title = "Hard delete", Description = "Use sweet alert to with hard delete", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = bt.Id, Created = DateTime.Now.AddDays(-20), TicketPriorityId = 3, TicketStatusId = 4, TicketTypeId = 4 }); db.Tickets.Add(new Ticket { Title = "Final Check", Description = "Walk threw check everything", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = bt.Id, Created = DateTime.Now.AddDays(-15), TicketPriorityId = 4, TicketStatusId = 4, TicketTypeId = 1 }); db.Tickets.Add(new Ticket { Title = "Scaling Issues", Description = "Nav doesn't change and tables are off the screen", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = bt.Id, Created = DateTime.Now.AddDays(-9), TicketPriorityId = 3, TicketStatusId = 4, TicketTypeId = 4 }); db.Tickets.Add(new Ticket { Title = "Seed methods.", Description = "Need to write better seed methods.", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = bt.Id, Created = DateTime.Now.AddDays(0), TicketPriorityId = 3, TicketStatusId = 3, TicketTypeId = 5 }); db.Tickets.Add(new Ticket { Title = "Scafold and set up invite", Description = "Week 9 deliverables", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = fp.Id, Created = DateTime.Now.AddDays(-5), TicketPriorityId = 4, TicketStatusId = 4, TicketTypeId = 2 }); db.Tickets.Add(new Ticket { Title = "Budget and transaction", Description = "Week 10 deliverables", OwnerUserId = sub.Id, AssignedToUserId = dev.Id, ProjectId = fp.Id, Created = DateTime.Now.AddDays(-1), TicketPriorityId = 4, TicketStatusId = 2, TicketTypeId = 2 }); db.SaveChanges(); return(RedirectToAction("Index", "Home")); }
public async Task <ActionResult> CreateNewUser(CreateNewUserViewModel model, List <int> AllProjects, string RoleName) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, AvatarPath = WebConfigurationManager.AppSettings["DefaultAvatarPath"], PhoneNumber = model.PhoneNumber }; if (model.Avatar != null) { if (FileUploadValidator.IsWebFriendlyImage(model.Avatar)) { var fileName = FileStamp.MakeUnique(model.Avatar.FileName); var serverFolder = WebConfigurationManager.AppSettings["DefaultAvatarFolder"]; model.Avatar.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName)); user.AvatarPath = $"{serverFolder}{fileName}"; } } var result = await UserManager.CreateAsync(user, Membership.GeneratePassword(12, 1)); if (result.Succeeded) { roleHelper.AddUserToRole(user.Id, RoleName); foreach (var projectId in AllProjects) { projectHelper.AddUserToProject(user.Id, projectId); } // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); try { var from = "BugTracker Admin<*****@*****.**>"; var email = new MailMessage(from, model.Email) { Subject = "Confirm Your Account", Body = "Please confirm your account by Clicking here <a href=\"" + callbackUrl + "\">here</a> ", IsBodyHtml = true }; var svc = new EmailService(); await svc.SendAsync(email); //return View(new EmailModel()); } catch (Exception ex) { Console.WriteLine(ex.Message); await Task.FromResult(0); } //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); return(RedirectToAction("Login", "Account")); } AddErrors(result); } // If we got this far, something failed, redisplay form ViewBag.AllProjects = new MultiSelectList(db.Projects.ToList(), "Id", "Name"); ViewBag.RoleName = new SelectList(db.Roles, "Name", "Name", "Default"); return(View(model)); }