public ActionResult RemoveRole(string RemoveId, List<string> SelectedCurrentRoles) { if (ModelState.IsValid) { UserRolesHelper helper = new UserRolesHelper(db); var user = db.Users.Find(RemoveId); if (SelectedCurrentRoles != null) { foreach (var role in SelectedCurrentRoles) { helper.RemoveUserFromRole(RemoveId, role); } db.Entry(user).State = EntityState.Modified; db.Users.Attach(user); db.SaveChanges(); return RedirectToAction("AdminDashboard"); } else { return RedirectToAction("AdminDashboard"); } } return RedirectToAction("AdminDashboard"); }
public ActionResult Index() { // Find the user and a list of roles UserRolesHelper rolesHelper = new UserRolesHelper(db); var user = db.Users.Find(User.Identity.GetUserId()); var userRoles = rolesHelper.ListUserRoles(user.Id); var tickets = db.Tickets.Include(t => t.AssignedToUser).Include(t => t.OwnerUser).Include(t => t.Project).Include(t => t.TicketPriority).Include(t => t.TicketStatus).Include(t => t.TicketType); if (userRoles.Contains("Admin")) { return View(tickets.ToList()); } if (userRoles.Contains("Project Manager")) { return View(user.Projects.SelectMany(t => t.Tickets).ToList()); } if (userRoles.Contains("Developer") && userRoles.Contains("Submitter")) { return View(tickets.Where(t => (t.AssignedToUserId == user.Id) || (t.OwnerUserId == user.Id)).ToList()); } if (userRoles.Contains("Developer")) { return View(tickets.Where(t => t.AssignedToUserId == user.Id).ToList()); } if (userRoles.Contains("Submitter")) { return View(tickets.Where(t => t.OwnerUserId == user.Id).ToList()); } return RedirectToAction("Login", "Account"); }
public ActionResult EditUser(string id) { var user = db.Users.Find(id); AdminUserViewModel AdminModel = new AdminUserViewModel(); UserRolesHelper helper = new UserRolesHelper(db); var currentRoles = helper.ListUserRoles(id); var absentRoles = helper.ListAbsentUserRoles(id); AdminModel.AbsentRoles = new MultiSelectList(absentRoles); AdminModel.Roles = new MultiSelectList(currentRoles); AdminModel.User = user; return View(AdminModel); }
public ActionResult Index() { UserRolesHelper rolesHelper = new UserRolesHelper(db); var user = db.Users.Find(User.Identity.GetUserId()); var userRoles = rolesHelper.ListUserRoles(user.Id); if (userRoles.Contains("Admin")) { return View(db.Projects.ToList()); } if (userRoles.Contains("Project Manager") || (userRoles.Contains("Developer")) || (userRoles.Contains("Submitter"))) { return View(user.Projects.ToList()); } return RedirectToAction("Index"); }
public ActionResult Create(int? id) { ViewBag.TicketId = id; UserRolesHelper rolesHelper = new UserRolesHelper(db); var user = db.Users.Find(User.Identity.GetUserId()); var userRoles = rolesHelper.ListUserRoles(user.Id); Ticket ticket = db.Tickets.Find(id); ViewBag.Author = user.DisplayName; if (userRoles.Contains("Admin")) { return View(); } if (userRoles.Contains("Project Manager")) { if (ticket.Project.ApplicationUsers.Contains(user)) { return View(); } } if (userRoles.Contains("Developer")) { if (ticket.AssignedToUserId == user.Id) { return View(); } } if (userRoles.Contains("Submitter")) { if (ticket.OwnerUserId == user.Id) { return View(); } } return RedirectToAction("Login", "Account"); }
public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } //Find the user, roles, and ticket Id UserRolesHelper rolesHelper = new UserRolesHelper(db); var user = db.Users.Find(User.Identity.GetUserId()); var userRoles = rolesHelper.ListUserRoles(user.Id); Ticket ticket = db.Tickets.Find(id); if (ticket == null) { return HttpNotFound(); } //Security for URL hacking //If user is submitter or developer related to ticket, return that ticket if (user.Id == ticket.AssignedToUserId || user.Id == ticket.OwnerUserId) { return View(ticket); } //if user is Admin, return the view if (userRoles.Contains("Admin")) { return View(ticket); } if (userRoles.Contains("Project Manager")) { if (ticket.Project.ApplicationUsers.Contains(user)) { return View(ticket); } } if (userRoles.Contains("Developer") && userRoles.Contains("Submitter")) { if (ticket.AssignedToUserId == user.Id) { return View(ticket); } if (ticket.OwnerUserId == user.Id) { return View(ticket); } } if (userRoles.Contains("Developer")) { if (ticket.AssignedToUserId == user.Id) { return View(ticket); } } if (userRoles.Contains("Submitter")) { if (ticket.OwnerUserId == user.Id) { return View(ticket); } } return RedirectToAction("Login", "Account"); }
public async Task<ActionResult> Edit([Bind(Include = "Id,Title,Description,Created,Updated,ProjectId,TicketTypeId,TicketPriorityId,TicketStatusId,AssignedToUserId,OwnerUserId")] Ticket ticket) { var user = db.Users.Find(User.Identity.GetUserId()); UserRolesHelper rolesHelper = new UserRolesHelper(db); ProjectsHelper helper = new ProjectsHelper(db); StringBuilder sb = new StringBuilder(); //var ticketHistory = db.TicketHistory.Where(t => t.TicketId == ticket.Id).ToList(); var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id); if (ModelState.IsValid) { ticket.Updated = DateTimeOffset.Now; db.Entry(ticket).State = EntityState.Modified; db.SaveChanges(); //var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id); var newTicket = db.Tickets.Find(ticket.Id); if (oldTicket != ticket) { sb.AppendLine("Changes on " + DateTimeOffset.Now + ":"); sb.Append("<br />"); if (oldTicket.Title != ticket.Title) { sb.AppendLine("Title changed from " + oldTicket.Title + " to " + ticket.Title + "."); sb.Append("<br />"); } if (oldTicket.Description != ticket.Description) { sb.AppendLine("Description changed from " + oldTicket.Description + " to " + ticket.Description + "."); sb.Append("<br />"); } if (oldTicket.TicketStatusId != newTicket.TicketStatusId) { var newTicketStatus = db.TicketStatus.Where(s => s.Id == newTicket.TicketStatusId).Select(q => q.Name).FirstOrDefault(); sb.AppendLine("Status changed from " + oldTicket.TicketStatus.Name + " to " + newTicketStatus + "."); sb.Append("<br />"); } if (oldTicket.TicketPriorityId != ticket.TicketPriorityId) { var newTicketPriority = db.TicketPriority.Where(s => s.Id == newTicket.TicketPriorityId).Select(q => q.Name).FirstOrDefault(); sb.AppendLine("Priority changed from " + oldTicket.TicketPriority.Name + " to " + newTicketPriority + "."); sb.Append("<br />"); } if (oldTicket.TicketTypeId != ticket.TicketTypeId) { var newTicketType = db.TicketType.Where(s => s.Id == newTicket.TicketTypeId).Select(q => q.Name).FirstOrDefault(); sb.AppendLine("Type changed from " + oldTicket.TicketType.Name + " to " + newTicketType + "."); sb.Append("<br />"); } if (oldTicket.AssignedToUserId != ticket.AssignedToUserId) { var newTicketUserF = db.Users.Where(s => s.Id == newTicket.AssignedToUserId).Select(q => q.FirstName).FirstOrDefault(); var newTicketUserL = db.Users.Where(s => s.Id == newTicket.AssignedToUserId).Select(q => q.LastName).FirstOrDefault(); var oldTicketUserF = db.Users.Where(s => s.Id == oldTicket.AssignedToUserId).Select(q => q.FirstName).FirstOrDefault(); var oldTicketUserL = db.Users.Where(s => s.Id == oldTicket.AssignedToUserId).Select(q => q.LastName).FirstOrDefault(); sb.AppendLine("Assigned User changed from " + oldTicketUserF + " " + oldTicketUserL + " to " + newTicketUserF + " " + newTicketUserL + "."); sb.Append("<br />"); } var tHistory = new TicketHistory(); tHistory.TicketId = ticket.Id; tHistory.Body = sb.ToString(); db.TicketHistory.Add(tHistory); db.SaveChanges(); } else { db.SaveChanges(); } await UserManager.SendEmailAsync(ticket.AssignedToUserId, "Ticket Assigned/Modified", "You have been assigned a new ticket, or a ticket you are currently assigned to has been modified."); return RedirectToAction("Index"); } ViewBag.AssignedToUserId = new SelectList(rolesHelper.UsersInRole("Developer"), "Id", "DisplayName", ticket.AssignedToUserId); //ViewBag.OwnerUserId = new SelectList(db.Users, "Id", "DisplayName", ticket.OwnerUserId); ViewBag.ProjectId = new SelectList(helper.AssignedProjects(user.Id), "Id", "Title", ticket.ProjectId); ViewBag.TicketPriorityId = new SelectList(db.TicketPriority, "Id", "Name", ticket.TicketPriorityId); ViewBag.TicketStatusId = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId); ViewBag.TicketTypeId = new SelectList(db.TicketType, "Id", "Name", ticket.TicketTypeId); return View(ticket); }
public ActionResult Edit(int? id) { var user = db.Users.Find(User.Identity.GetUserId()); ProjectsHelper projectHelper = new ProjectsHelper(db); UserRolesHelper rolesHelper = new UserRolesHelper(db); var userRoles = rolesHelper.ListUserRoles(user.Id); Ticket ticket = db.Tickets.Find(id); if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } if (ticket == null) { return HttpNotFound(); } //This line specifies the users that are in the role of Developer- only developers can be assigned to a ticket ViewBag.AssignedToUserId = new SelectList(rolesHelper.UsersInRole("Developer"), "Id", "DisplayName", ticket.AssignedToUserId); ViewBag.OwnerUserId = new SelectList(db.Users, "Id", "DisplayName", ticket.OwnerUserId); //if User is assigned to project, then he can make a ticket for that project; ViewBag.ProjectId = new SelectList(projectHelper.AssignedProjects(user.Id), "Id", "Title", ticket.ProjectId); ViewBag.TicketPriorityId = new SelectList(db.TicketPriority, "Id", "Name", ticket.TicketPriorityId); ViewBag.TicketStatusId = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId); ViewBag.TicketTypeId = new SelectList(db.TicketType, "Id", "Name", ticket.TicketTypeId); if (userRoles.Contains("Project Manager")) { if (ticket.Project.ApplicationUsers.Contains(user)) { return View(ticket); } } if (userRoles.Contains("Developer")) { if (ticket.AssignedToUserId == user.Id) { return View(ticket); } } return RedirectToAction("Login", "Account"); }