public ActionResult ProjectUser(ProjectUserViewModel model) { ProjectAssignHelper projectAH = new ProjectAssignHelper(); foreach (var userId in db.Users.Select(r => r.Id).ToList()) { projectAH.RemoveUserFromProject(userId, model.AssignProjectId); } foreach (var userId in model.SelectedUsers) { projectAH.AddUserToProject(userId, model.AssignProjectId); } return(RedirectToAction("Index")); }
// GET: Projects/Edit/5 public ActionResult Edit(int?id) { UserRolesHelper helper = new UserRolesHelper(db); ProjectAssignHelper ph = new ProjectAssignHelper(); if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Project project = db.Projects.Find(id); if (project == null) { return(HttpNotFound()); } if (!helper.IsUserInRole(User.Identity.GetUserId(), "Administrator") || !helper.IsUserInRole(User.Identity.GetUserId(), "Admin") || !helper.IsUserInRole(User.Identity.GetUserId(), "Project Manager1") || !helper.IsUserInRole(User.Identity.GetUserId(), "Project Manager2") || !helper.IsUserInRole(User.Identity.GetUserId(), "Project Manager3")) { if (!db.Users.Find(User.Identity.GetUserId()).Projects.Contains(project)) { return(RedirectToAction("Index")); } } List <ApplicationUser> PMList = new List <ApplicationUser>(); var PM1 = helper.UsersInRole("Project Manager1"); var PM2 = helper.UsersInRole("Project Manager2"); var PM3 = helper.UsersInRole("Project Manager3"); PM1.Concat(PM2).Concat(PM3); List <string> Statuses = new List <string>(); foreach (var statusname in db.Projects) { if (!Statuses.Contains(statusname.ProjectStatus)) { Statuses.Add(statusname.ProjectStatus); } } ViewBag.ProjectStatusId = new SelectList(db.ProjectStatuses, "Id", "Name"); ViewBag.ProjectManagerId = new SelectList(PM1, "Id", "FirstName"); return(View(project)); }
// ***************************************************************************************************************** // GET: /Manage/UpdateProfile public ActionResult UpdateProfile() { var myUserId = User.Identity.GetUserId(); ProjectAssignHelper projecthelper = new ProjectAssignHelper(); UserRolesHelper rolehelper = new UserRolesHelper(db); UpdateProfileViewModel profile = new UpdateProfileViewModel { NewFirstName = db.Users.Find(User.Identity.GetUserId()).FirstName, NewLastName = db.Users.Find(User.Identity.GetUserId()).LastName, NewDisplayName = db.Users.Find(User.Identity.GetUserId()).DisplayName }; // Get Project Assignments profile.UserProjects = projecthelper.ListProjectsForUser(myUserId); // Get Role Assignments profile.UserRoles = rolehelper.ListUserRoles(myUserId).ToArray(); return(View(profile)); }
public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Ticket ticket = db.Tickets.Find(id); if (ticket == null) { return(HttpNotFound()); } ProjectAssignHelper helper = new ProjectAssignHelper(); Project project = db.Projects.Find(ticket.ProjectId); var user = db.Users.Find(User.Identity.GetUserId()); if (User.IsInRole("Admin")) { return(View(ticket)); } else if (User.IsInRole("ProjectManager")) { if (helper.IsUserOnProject(user.Id, project.Id) == true) //defaults to true, == true not necessary { return(View(ticket)); } } else if (User.IsInRole("Developer") && ticket.AssignToUserId == user.Id) { return(View(ticket)); } else if (User.IsInRole("Submitter") && ticket.OwnerUserId == user.Id) { return(View(ticket)); } else { return(RedirectToAction("Index", "Projects")); } return(RedirectToAction("Index", "Tickets", null)); }
public ActionResult ProjectUser(ProjectUserViewModels model) { // submit assign and it goes through here, we need to go through users assigned in database and put in the users selected ProjectAssignHelper projectassignhelper = new ProjectAssignHelper(); //var project = db.Projects.Find(model.AssignProject.Id); No need for this since we don't need to find project in db by Id foreach (var userId in db.Users.Select(r => r.Id).ToList()) // remove all users from project { projectassignhelper.RemoveUserFromProject(userId, model.AssignProjectId); } foreach (var userId in model.SelectedUsers) // add back the ones you want { projectassignhelper.AddUserToProject(userId, model.AssignProjectId); ProjectUser projectuser = new ProjectUser(); projectuser.ProjectId = model.AssignProjectId; projectuser.UserId = userId; db.ProjectUsers.Add(projectuser); db.SaveChanges(); } return(RedirectToAction("Details", new { id = model.AssignProjectId })); }
public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Project project = db.Projects.Find(id); if (project == null) { return(HttpNotFound()); } ProjectAssignHelper helper = new ProjectAssignHelper(); var user = db.Users.Find(User.Identity.GetUserId()); if (!User.IsInRole("Admin") && helper.IsUserOnProject(user.Id, project.Id) == false) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ViewBag.UserTimeZone = db.Users.Find(User.Identity.GetUserId()).TimeZone; return(View(project)); }
// GET: Projects/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Project project = db.Projects.Find(id); if (project == null) { return(HttpNotFound()); } ProjectAssignHelper helper = new ProjectAssignHelper(); var user = db.Users.Find(User.Identity.GetUserId()); if (helper.IsUserOnProject(user.Id, project.Id) == true || User.IsInRole("Admin") || User.IsInRole("ProjectManager")) { return(View(project)); } else { return(RedirectToAction("Index")); } }
public async Task <ActionResult> Create([Bind(Include = "Id,TicketId,Comment")] TicketComment ticketComment, int Id) { if (ModelState.IsValid) { UserRolesHelper helper = new UserRolesHelper(db); ProjectAssignHelper ph = new ProjectAssignHelper(); var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); var ticket = db.Tickets.Find(Id); TicketNotification TN = new TicketNotification(); TN.TicketId = ticket.Id; TN.UserId = ticket.AssignedToUserId; TN.User = ticket.AssignedToUser; db.TicketNotifications.Add(TN); var message = new IdentityMessage { Body = "The ticket" + " " + ticket.Title + " " + "from project" + " " + ticket.Project.Name + " " + "has been commented on by" + " " + user.FirstName + user.LastName + "." + " " + "Please see your ticket comments to view the comment.", Subject = "Your ticket has been commented on.", Destination = TN.User.Email }; EmailService email = new EmailService(); await email.SendAsync(message); var userroleAdmin = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator"); var userroleProjectManager1 = helper.IsUserInRole(userId, "Project Manager1"); var userroleProjectManager2 = helper.IsUserInRole(userId, "Project Manager2"); var userroleProjectManager3 = helper.IsUserInRole(userId, "Project Manager3"); var userroleDeveloper1 = helper.IsUserInRole(userId, "Developer1"); var userroleDeveloper2 = helper.IsUserInRole(userId, "Developer2"); var userroleDeveloper3 = helper.IsUserInRole(userId, "Developer3"); var userroleDeveloper4 = helper.IsUserInRole(userId, "Developer4"); var userroleSubmitter = helper.IsUserInRole(userId, "Submitter"); int ticketid = Id; int projectid = ticket.Project.Id; if (userroleAdmin || userroleProjectManager1 && ph.IsUserOnAProject(userId, projectid) || userroleProjectManager2 && ph.IsUserOnAProject(userId, projectid) || userroleProjectManager3 && ph.IsUserOnAProject(userId, projectid) || userroleDeveloper1 && ticket.AssignedToUserId == userId || userroleDeveloper2 && ticket.AssignedToUserId == userId || userroleDeveloper3 && ticket.AssignedToUserId == userId || userroleDeveloper4 && ticket.AssignedToUserId == userId || userroleSubmitter && ticket.SubmitterUserId == userId) { ticketComment.Ticket = ticket; ticketComment.UserId = userId; ticketComment.User = user; ticketComment.TicketId = ticket.Id; string y = ""; ticketComment.CreatedDate = DateTime.UtcNow; TimeSpan elapsed = DateTime.UtcNow - ticketComment.CreatedDate; double hours = elapsed.TotalHours; double minutes = elapsed.TotalMinutes; string s = elapsed.ToString(); db.TicketComments.Add(ticketComment); db.SaveChanges(); return(RedirectToAction("Details", "Tickets", new { id = Id })); } else { var Temporary = "You cannot add comments to this ticket. Please revisit your role assignment. Tickets can only be commented on by their creator, a developer assigned to the ticket, a project manager, or an administrator."; TempData["message"] = Temporary; } } return(RedirectToAction("Details", "Tickets", new { id = Id })); }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } // TempData["UserPreferences"] is read in at Start of Action var userPref = (UserPreferencesViewModel)TempData["UserPreferences"]; Ticket ticket = db.Tickets.Find(id); if (ticket == null) { return(HttpNotFound()); } var devRoleId = db.Roles.First(r => r.Name == "Developer").Id; var projectuserslist = projecthelper.ListUsersOnProject(ticket.ProjectId).Where(p => p.Roles.Any(d => d.RoleId == devRoleId)); ViewBag.AssignedToUserId = new SelectList(projectuserslist, "Id", "DisplayName", ticket.AssignedToUserId); /* SelectList(IEnumerable, String, String, Object) * Initializes a new instance of the SelectList class by using the specified items for the list, * the data value field, the data text field, and a selected value. */ ViewBag.ProjectId = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId); ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId); ViewBag.TicketStatusId = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId); ViewBag.TicketTypeId = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId); ViewBag.OwnerUserId = new SelectList(db.Users, "Id", "DisplayName", ticket.OwnerUserId); var myUserId = User.Identity.GetUserId(); bool mySubTicket = false; if (User.IsInRole("Submitter") && (ticket.OwnerUserId == myUserId)) { mySubTicket = true; ViewBag.MyEditSub = mySubTicket; } bool myDevTicket = false; if (User.IsInRole("Developer") && (ticket.AssignedToUserId == myUserId)) { myDevTicket = true; ViewBag.MyEditSub = myDevTicket; } bool myPMTicket = false; if (User.IsInRole("ProjectManager")) { ProjectAssignHelper projecthelper = new ProjectAssignHelper(); myPMTicket = projecthelper.IsUserTheProjectManager(myUserId, ticket.ProjectId); ViewBag.MyEditSub = myPMTicket; } ViewBag.MyEditTicket = false; if (User.IsInRole("Admin") || myPMTicket == true || myDevTicket == true || mySubTicket == true) { ViewBag.MyEditTicket = true; } // TempData["UserPreferences"] is rewritten at End of Action TempData["UserPreferences"] = userPref; ViewBag.FilterByTickets = userPref.FilterByTickets; ViewBag.FilterByStatus = userPref.FilterByStatus; return(View(ticket)); }
public ActionResult LayoutPartial() { var currentuser = db.Users.Find(User.Identity.GetUserId()); if (currentuser != null) { UserRolesHelper uh = new UserRolesHelper(db); UsersRolesViewModel vm = new UsersRolesViewModel(); vm.User = db.Users.Find(User.Identity.GetUserId()); vm.Roles = uh.ListUserRoles(vm.User.Id); UserRolesHelper helper = new UserRolesHelper(db); ProjectAssignHelper ph = new ProjectAssignHelper(); var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); var userroleAdmin = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator"); var userroleDeveloper = helper.IsUserInRole(userId, "Developer1") || helper.IsUserInRole(userId, "Developer2") || helper.IsUserInRole(userId, "Developer3") || helper.IsUserInRole(userId, "Developer4"); var userroleProjectManager = helper.IsUserInRole(userId, "Project Manager1") || helper.IsUserInRole(userId, "Project Manager2") || helper.IsUserInRole(userId, "Project Manager3"); var userroleSubmitter = helper.IsUserInRole(userId, "Submitter"); List <Project> DeveloperProjects = new List <Project>(); List <ApplicationUser> Developers = helper.UsersInRole("Developer1").Concat(helper.UsersInRole("Developer2")).Concat(helper.UsersInRole("Developer3")).Concat(helper.UsersInRole("Developer4")).ToList(); List <Project> userprojects = new List <Project>(); foreach (var project in db.Projects) { if (ph.IsUserOnAProject(userId, project.Id)) { userprojects.Add(project); } } ViewBag.projectcount = userprojects.Count(); List <Ticket> usertickets = new List <Ticket>(); if (helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator")) { foreach (var ticket in db.Tickets) { usertickets.Add(ticket); } ViewBag.ticketcount = usertickets.Count(); } else if (userroleProjectManager) { List <Project> UserProjects = new List <Project>(); foreach (var x in db.Projects) { if (ph.IsUserOnAProject(userId, x.Id)) { UserProjects.Add(x); } } foreach (var project in UserProjects) { foreach (var ticket in project.Tickets) { usertickets.Add(ticket); } } var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); } else if (userroleDeveloper) { List <Project> UserProjects = new List <Project>(); foreach (var x in db.Projects) { if (ph.IsUserOnAProject(userId, x.Id)) { UserProjects.Add(x); } } foreach (var project in UserProjects) { foreach (var ticket in project.Tickets) { usertickets.Add(ticket); } } var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived"); ViewBag.ticketcount = nonarchivedtickets.Count(); } else if (userroleSubmitter) { var tickets = db.Tickets.Where(t => t.SubmitterUserId == userId).ToList(); var nonarchivedtickets = tickets.Where(t => t.TicketStatus.Name != "Archived"); ViewBag.ticketcount = nonarchivedtickets.Count(); } return(PartialView("~/Areas/BugTracker/Views/Shared/_LayoutPartial.cshtml", vm)); } return(RedirectToAction("Index", "Home", new { area = "BugTracker" })); }
public ActionResult Landing() { List <TicketData> TicketChartList = new List <TicketData>(); TicketData TicketData1 = new TicketData(); var dateago = DateTime.Now.Date.AddDays(-7).ToString("d"); var dateago2 = DateTime.Now.Date.AddDays(-6).ToString("d"); var dateago3 = DateTime.Now.Date.AddDays(-5).ToString("d"); var dateago4 = DateTime.Now.Date.AddDays(-4).ToString("d"); var dateago5 = DateTime.Now.Date.AddDays(-3).ToString("d"); var dateago6 = DateTime.Now.Date.AddDays(-2).ToString("d"); var dateago7 = DateTime.Now.Date.AddDays(-1).ToString("d"); var tickets = new List <Ticket>(); foreach (var ticket in db.Tickets) { if (ticket.CreatedDate.ToString("d") == dateago) { tickets.Add(ticket); } } TicketData1.DayofWeek = DateTime.Now.Date.AddDays(-7).DayOfWeek.ToString(); if (tickets.Count() != 0) { TicketData1.StatusA = tickets.Where(t => t.TicketPriority.Name == "Urgent").Count(); TicketData1.StatusB = tickets.Where(t => t.TicketPriority.Name == "Normal").Count(); TicketData1.StatusC = tickets.Where(t => t.TicketPriority.Name == "Low").Count(); TicketChartList.Add(TicketData1); } else { TicketData1.StatusA = 0; TicketData1.StatusB = 0; //makes sense go ahead and apply this to every case ok TicketData1.StatusC = 0; TicketChartList.Add(TicketData1); } var tickets2 = new List <Ticket>(); foreach (var ticket in db.Tickets) { if (ticket.CreatedDate.ToString("d") == dateago2) { tickets2.Add(ticket); } } TicketData TicketData3 = new TicketData(); TicketData3.DayofWeek = DateTime.Now.Date.AddDays(-6).DayOfWeek.ToString(); if (tickets2.Count() != 0) { TicketData3.StatusA = tickets2.Where(t => t.TicketPriority.Name == "Urgent").Count(); TicketData3.StatusB = tickets2.Where(t => t.TicketPriority.Name == "Normal").Count(); TicketData3.StatusC = tickets2.Where(t => t.TicketPriority.Name == "Low").Count(); TicketChartList.Add(TicketData3); } else { TicketData3.StatusA = 0; TicketData3.StatusB = 0; TicketData3.StatusC = 0; TicketChartList.Add(TicketData3); } var tickets3 = new List <Ticket>(); foreach (var ticket in db.Tickets) { if (ticket.CreatedDate.ToString("d") == dateago3) { tickets3.Add(ticket); } } TicketData TicketData4 = new TicketData(); TicketData4.DayofWeek = DateTime.Now.Date.AddDays(-5).DayOfWeek.ToString(); if (tickets3.Count() != 0) { TicketData4.StatusA = tickets3.Where(t => t.TicketPriority.Name == "Urgent").Count(); TicketData4.StatusB = tickets3.Where(t => t.TicketPriority.Name == "Normal").Count(); TicketData4.StatusC = tickets3.Where(t => t.TicketPriority.Name == "Low").Count(); TicketChartList.Add(TicketData4); } else { TicketData4.StatusA = 0; TicketData4.StatusB = 0; TicketData4.StatusC = 0; TicketChartList.Add(TicketData4); } var tickets4 = new List <Ticket>(); foreach (var ticket in db.Tickets) { if (ticket.CreatedDate.ToString("d") == dateago4) { tickets4.Add(ticket); } } TicketData TicketData5 = new TicketData(); TicketData5.DayofWeek = DateTime.Now.Date.AddDays(-4).DayOfWeek.ToString(); if (tickets4.Count() != 0) { TicketData5.StatusA = tickets4.Where(t => t.TicketPriority.Name == "Urgent").Count(); TicketData5.StatusB = tickets4.Where(t => t.TicketPriority.Name == "Normal").Count(); TicketData5.StatusC = tickets4.Where(t => t.TicketPriority.Name == "Low").Count(); TicketChartList.Add(TicketData5); } else { TicketData5.StatusA = 0; TicketData5.StatusB = 0; TicketData5.StatusC = 0; TicketChartList.Add(TicketData5); } var tickets5 = new List <Ticket>(); foreach (var ticket in db.Tickets) { if (ticket.CreatedDate.ToString("d") == dateago5) { tickets5.Add(ticket); } } TicketData TicketData6 = new TicketData(); TicketData6.DayofWeek = DateTime.Now.Date.AddDays(-3).DayOfWeek.ToString(); if (tickets5.Count() != 0) { TicketData6.StatusA = tickets5.Where(t => t.TicketPriority.Name == "Urgent").Count(); TicketData6.StatusB = tickets5.Where(t => t.TicketPriority.Name == "Normal").Count(); TicketData6.StatusC = tickets5.Where(t => t.TicketPriority.Name == "Low").Count(); TicketChartList.Add(TicketData6); } else { TicketData6.StatusA = 0; TicketData6.StatusB = 0; TicketData6.StatusC = 0; TicketChartList.Add(TicketData6); } var tickets6 = new List <Ticket>(); foreach (var ticket in db.Tickets) { if (ticket.CreatedDate.ToString("d") == dateago6) { tickets6.Add(ticket); } } TicketData TicketData7 = new TicketData(); TicketData7.DayofWeek = DateTime.Now.Date.AddDays(-2).DayOfWeek.ToString(); if (tickets6.Count() != 0) { TicketData7.StatusA = tickets6.Where(t => t.TicketPriority.Name == "Urgent").Count(); TicketData7.StatusB = tickets6.Where(t => t.TicketPriority.Name == "Normal").Count(); TicketData7.StatusC = tickets6.Where(t => t.TicketPriority.Name == "Low").Count(); TicketChartList.Add(TicketData7); } else { TicketData7.StatusA = 0; TicketData7.StatusB = 0; TicketData7.StatusC = 0; TicketChartList.Add(TicketData7); } var tickets7 = new List <Ticket>(); foreach (var ticket in db.Tickets) { if (ticket.CreatedDate.ToString("d") == dateago7) { tickets7.Add(ticket); } } TicketData TicketData8 = new TicketData(); TicketData8.DayofWeek = DateTime.Now.Date.AddDays(-1).DayOfWeek.ToString(); if (tickets7.Count() != 0) { TicketData8.StatusA = tickets7.Where(t => t.TicketPriority.Name == "Urgent").Count(); TicketData8.StatusB = tickets7.Where(t => t.TicketPriority.Name == "Normal").Count(); TicketData8.StatusC = tickets7.Where(t => t.TicketPriority.Name == "Low").Count(); TicketChartList.Add(TicketData8); } else { TicketData8.StatusA = 0; TicketData8.StatusB = 0; TicketData8.StatusC = 0; TicketChartList.Add(TicketData8); } List <UserData2> UserChartList = new List <UserData2>(); UserRolesHelper UH = new UserRolesHelper(db); UserData2 User1 = new UserData2(); var AdminCount = UH.UsersInRole("Admin").Count(); User1.label = "Administrator"; User1.value = AdminCount; UserChartList.Add(User1); UserData2 User2 = new UserData2(); var DevCount1 = UH.UsersInRole("Developer1").Count(); var DevCount2 = UH.UsersInRole("Developer2").Count(); var DevCount3 = UH.UsersInRole("Developer3").Count(); var DevCount4 = UH.UsersInRole("Developer4").Count(); User2.label = "Developers"; User2.value = DevCount1 + DevCount2 + DevCount3 + DevCount4; UserChartList.Add(User2); UserData2 User3 = new UserData2(); var PMCount1 = UH.UsersInRole("Project Manager1").Count(); var PMCount2 = UH.UsersInRole("Project Manager2").Count(); var PMCount3 = UH.UsersInRole("Project Manager3").Count(); User3.label = "Project Managers"; User3.value = PMCount1 + PMCount2 + PMCount3; UserChartList.Add(User3); UserData2 User4 = new UserData2(); var SubmitterCount = UH.UsersInRole("Submitter").Count(); User4.label = "Submitter"; User4.value = SubmitterCount; UserChartList.Add(User4); ViewBag.ArrData2 = UserChartList.ToArray(); ViewBag.ArrData = TicketChartList.ToArray(); UserRolesHelper helper = new UserRolesHelper(db); ProjectAssignHelper ph = new ProjectAssignHelper(); var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); var userroleAdmin = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator"); var userroleDeveloper = helper.IsUserInRole(userId, "Developer1") || helper.IsUserInRole(userId, "Developer2") || helper.IsUserInRole(userId, "Developer3") || helper.IsUserInRole(userId, "Developer4"); var userroleProjectManager = helper.IsUserInRole(userId, "Project Manager1") || helper.IsUserInRole(userId, "Project Manager2") || helper.IsUserInRole(userId, "Project Manager3"); var userroleSubmitter = helper.IsUserInRole(userId, "Submitter"); List <Project> DeveloperProjects = new List <Project>(); List <ApplicationUser> Developers = helper.UsersInRole("Developer1").Concat(helper.UsersInRole("Developer2")).Concat(helper.UsersInRole("Developer3")).Concat(helper.UsersInRole("Developer4")).ToList(); List <Ticket> usertickets = new List <Ticket>(); List <Project> userprojects = new List <Project>(); if (helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator")) { foreach (var project in db.Projects) { if (ph.IsUserOnAProject(userId, project.Id)) { userprojects.Add(project); } } foreach (var ticket in db.Tickets) { usertickets.Add(ticket); } var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned"); ViewBag.unassignedticketcount = unassignedtickets.Count(); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); ViewBag.projectcount = userprojects.Count(); ViewBag.message = "in the Bug Tracker system currently."; ViewBag.ticketmessage = "in the Bug Tracker system currently."; ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system"; if (urgenttickets.Count() == 0) { ViewBag.urgentmessage = "There are no urgent tickets."; } else { ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them."; } return(View(userprojects)); } else if (userroleProjectManager) { foreach (var x in db.Projects) { if (ph.IsUserOnAProject(userId, x.Id)) { userprojects.Add(x); } } foreach (var project in userprojects) { foreach (var ticket in project.Tickets) { usertickets.Add(ticket); } } var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned"); ViewBag.unassignedticketcount = unassignedtickets.Count(); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); ViewBag.projectcount = userprojects.Count(); ViewBag.ticketmessage = "for projects that you're working on."; ViewBag.message = "that you're working on."; ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system"; if (urgenttickets.Count() == 0) { ViewBag.urgentmessage = "There are no urgent tickets."; } else { ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them."; } return(View(userprojects)); } else if (userroleDeveloper) { foreach (var x in db.Projects) { if (ph.IsUserOnAProject(userId, x.Id)) { userprojects.Add(x); } } foreach (var project in userprojects) { foreach (var ticket in project.Tickets) { usertickets.Add(ticket); } } var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned"); ViewBag.unassignedticketcount = unassignedtickets.Count(); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); var urgentticketscount = urgenttickets.Count(); ViewBag.projectcount = userprojects.Count(); ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system"; ViewBag.ticketmessage = "for projects that you're working on."; ViewBag.message = "that you're working on."; if (urgentticketscount == 0) { ViewBag.urgentmessage = "There are no urgent tickets."; } else { ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them."; } return(View(userprojects)); } else if (userroleSubmitter) { var submittertickets = db.Tickets.Where(t => t.SubmitterUserId == userId).ToList(); var nonarchivedtickets = submittertickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned"); ViewBag.unassignedticketcount = unassignedtickets.Count(); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); ViewBag.projectcount = userprojects.Count(); ViewBag.ticketmessage = "that you've submitted."; ViewBag.projectmessage = "N/A"; ViewBag.urgentmessage = "N/A"; ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system"; var projects = db.Projects.ToList(); return(View(projects)); } return(RedirectToAction("Index", "Home")); }
// GET: Projects public ActionResult Index() { UserRolesHelper helper = new UserRolesHelper(db); ProjectAssignHelper ph = new ProjectAssignHelper(); var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); var userroleAdmin = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator"); var userroleDeveloper = helper.IsUserInRole(userId, "Developer1") || helper.IsUserInRole(userId, "Developer2") || helper.IsUserInRole(userId, "Developer3") || helper.IsUserInRole(userId, "Developer4"); var userroleProjectManager = helper.IsUserInRole(userId, "Project Manager1") || helper.IsUserInRole(userId, "Project Manager2") || helper.IsUserInRole(userId, "Project Manager3"); var userroleSubmitter = helper.IsUserInRole(userId, "Submitter"); List <Project> DeveloperProjects = new List <Project>(); List <ApplicationUser> Developers = helper.UsersInRole("Developer1").Concat(helper.UsersInRole("Developer2")).Concat(helper.UsersInRole("Developer3")).Concat(helper.UsersInRole("Developer4")).ToList(); var projects = db.Projects.Include(p => p.Users).ToList(); ViewBag.user = user.FirstName + " " + user.LastName; List <Ticket> usertickets = new List <Ticket>(); List <Project> userprojects = new List <Project>(); if (helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator")) { foreach (var project in db.Projects) { userprojects.Add(project); } foreach (var ticket in db.Tickets) { usertickets.Add(ticket); } var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned"); ViewBag.unassignedticketcount = unassignedtickets.Count(); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); ViewBag.projectcount = userprojects.Count(); ViewBag.message = "in the Bug Tracker system currently."; ViewBag.ticketmessage = "in the Bug Tracker system currently."; ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system"; if (urgenttickets.Count() == 0) { ViewBag.urgentmessage = "There are no urgent tickets."; } else { ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them."; } return(View(userprojects)); } else if (userroleProjectManager) { foreach (var x in db.Projects) { if (ph.IsUserOnAProject(userId, x.Id)) { userprojects.Add(x); } } foreach (var project in userprojects) { foreach (var ticket in project.Tickets) { usertickets.Add(ticket); } } var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned"); ViewBag.unassignedticketcount = unassignedtickets.Count(); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); ViewBag.projectcount = userprojects.Count(); ViewBag.ticketmessage = "for projects that you're working on."; ViewBag.message = "that you're working on."; ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system"; if (urgenttickets.Count() == 0) { ViewBag.urgentmessage = "There are no urgent tickets."; } else { ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them."; } return(View(userprojects)); } else if (userroleDeveloper) { foreach (var x in db.Projects) { if (ph.IsUserOnAProject(userId, x.Id)) { userprojects.Add(x); } } foreach (var project in userprojects) { foreach (var ticket in project.Tickets) { usertickets.Add(ticket); } } var nonarchivedtickets = usertickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned"); ViewBag.unassignedticketcount = unassignedtickets.Count(); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); var urgentticketscount = urgenttickets.Count(); ViewBag.projectcount = userprojects.Count(); ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system"; ViewBag.ticketmessage = "for projects that you're working on."; ViewBag.message = "that you're working on."; if (urgentticketscount == 0) { ViewBag.urgentmessage = "There are no urgent tickets."; } else { ViewBag.urgentmessage = "Please attend to these tickets if you are assigned to them."; } return(View(userprojects)); } else if (userroleSubmitter) { var tickets = db.Tickets.Where(t => t.SubmitterUserId == userId).ToList(); foreach (var x in db.Projects) { if (ph.IsUserOnAProject(userId, x.Id)) { userprojects.Add(x); } } var nonarchivedtickets = tickets.Where(t => t.TicketStatus.Name != "Archived"); var urgenttickets = nonarchivedtickets.Where(t => t.TicketPriority.Name == "Urgent"); var unassignedtickets = nonarchivedtickets.Where(t => t.TicketStatus.Name == "Unassigned"); ViewBag.unassignedticketcount = unassignedtickets.Count(); ViewBag.ticketcount = nonarchivedtickets.Count(); ViewBag.urgentticketcount = urgenttickets.Count(); ViewBag.projectcount = userprojects.Count(); ViewBag.ticketmessage = "that you've submitted."; ViewBag.projectmessage = "N/A"; ViewBag.urgentmessage = "N/A"; ViewBag.unassignedmessage = "Unassigned tickets in the Bug Tracker system"; return(View(userprojects)); } return(RedirectToAction("Index", "Home")); }
public ActionResult Index() { var id = User.Identity.GetUserId(); ProjectAssignHelper helper = new ProjectAssignHelper(); var result = helper.ListUserProjects(id); ViewBag.UserTimeZone = db.Users.Find(User.Identity.GetUserId()).TimeZone; var thisMonth = System.DateTime.Now; var lastMonth = System.DateTime.Now.AddMonths(-1); var monthsAgo2 = System.DateTime.Now.AddMonths(-2); var monthsAgo3 = System.DateTime.Now.AddMonths(-3); var monthsAgo4 = System.DateTime.Now.AddMonths(-4); var monthsAgo5 = System.DateTime.Now.AddMonths(-5); ViewBag.ThisMonth = thisMonth.ToString("MMMM"); ViewBag.LastMonth = lastMonth.ToString("MMMM"); ViewBag.MonthsAgo2 = monthsAgo2.ToString("MMMM"); ViewBag.MonthsAgo3 = monthsAgo3.ToString("MMMM"); ViewBag.MonthsAgo4 = monthsAgo4.ToString("MMMM"); ViewBag.MonthsAgo5 = monthsAgo5.ToString("MMMM"); ViewBag.TicketsAddedThisMonth = db.Tickets.Where(t => t.Created.Month == thisMonth.Month && t.Created.Year == thisMonth.Year).Count(); ViewBag.TicketsAddedLastMonth = db.Tickets.Where(t => t.Created.Month == lastMonth.Month && t.Created.Year == lastMonth.Year).Count(); ViewBag.TicketsAdded2MonthsAgo = db.Tickets.Where(t => t.Created.Month == monthsAgo2.Month && t.Created.Year == monthsAgo2.Year).Count(); ViewBag.TicketsAdded3MonthsAgo = db.Tickets.Where(t => t.Created.Month == monthsAgo3.Month && t.Created.Year == monthsAgo3.Year).Count(); ViewBag.TicketsAdded4MonthsAgo = db.Tickets.Where(t => t.Created.Month == monthsAgo4.Month && t.Created.Year == monthsAgo4.Year).Count(); ViewBag.TicketsAdded5MonthsAgo = db.Tickets.Where(t => t.Created.Month == monthsAgo5.Month && t.Created.Year == monthsAgo5.Year).Count(); var completedThisMonth = new List <Ticket>(); var completedLastMonth = new List <Ticket>(); var completed2MonthsAgo = new List <Ticket>(); var completed3MonthsAgo = new List <Ticket>(); var completed4MonthsAgo = new List <Ticket>(); var completed5MonthsAgo = new List <Ticket>(); var completedTickets = db.Tickets.Where(t => t.TicketStatus.Name == "Completed").ToList(); foreach (var ticket in completedTickets) { var ticketCompletedHistory = ticket.Histories.Last(t => t.Property == "Status" && t.NewValue == "Completed"); if (ticketCompletedHistory != null) { if (ticketCompletedHistory.Created.Month == thisMonth.Month && ticketCompletedHistory.Created.Year == thisMonth.Year) { completedThisMonth.Add(ticket); } else if (ticketCompletedHistory.Created.Month == lastMonth.Month && ticketCompletedHistory.Created.Year == lastMonth.Year) { completedLastMonth.Add(ticket); } else if (ticketCompletedHistory.Created.Month == monthsAgo2.Month && ticketCompletedHistory.Created.Year == monthsAgo2.Year) { completed2MonthsAgo.Add(ticket); } else if (ticketCompletedHistory.Created.Month == monthsAgo3.Month && ticketCompletedHistory.Created.Year == monthsAgo3.Year) { completed3MonthsAgo.Add(ticket); } else if (ticketCompletedHistory.Created.Month == monthsAgo4.Month && ticketCompletedHistory.Created.Year == monthsAgo4.Year) { completed4MonthsAgo.Add(ticket); } else if (ticketCompletedHistory.Created.Month == monthsAgo5.Month && ticketCompletedHistory.Created.Year == monthsAgo5.Year) { completed5MonthsAgo.Add(ticket); } } } ViewBag.TicketsCompletedThisMonth = completedThisMonth.Count(); ViewBag.TicketsCompletedLastMonth = completedLastMonth.Count(); ViewBag.TicketsCompleted2MonthsAgo = completed2MonthsAgo.Count(); ViewBag.TicketsCompleted3MonthsAgo = completed3MonthsAgo.Count(); ViewBag.TicketsCompleted4MonthsAgo = completed4MonthsAgo.Count(); ViewBag.TicketsCompleted5MonthsAgo = completed5MonthsAgo.Count(); return(View(result)); }
public async Task <ActionResult> Create([Bind(Include = "Id,UserId,Description,CreatedDate")] TicketAttachment ticketAttachment, HttpPostedFileBase File, int Id) { UserRolesHelper helper = new UserRolesHelper(db); ProjectAssignHelper ph = new ProjectAssignHelper(); var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); var ticket = db.Tickets.Find(Id); if (ModelState.IsValid) { if (helper.IsUserInRole(userId, "Administrator") || helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Project Manager1") && ph.IsUserOnAProject(userId, ticket.Project.Id) || helper.IsUserInRole(userId, "Project Manager2") && ph.IsUserOnAProject(userId, ticket.Project.Id) || helper.IsUserInRole(userId, "Project Manager3") && ph.IsUserOnAProject(userId, ticket.Project.Id) || helper.IsUserInRole(userId, "Developer1") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer2") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer3") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer4") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Submitter") && ticket.SubmitterUserId == userId) { if (File != null) { TicketNotification TN = new TicketNotification(); TN.TicketId = ticket.Id; TN.UserId = ticket.AssignedToUserId; TN.User = ticket.AssignedToUser; db.TicketNotifications.Add(TN); var message = new IdentityMessage { Body = "The ticket" + " " + ticket.Title + " " + "from project" + " " + ticket.Project.Name + " " + "has been edited by" + " " + user.FirstName + user.LastName + "." + " " + "Please see the ticket history to view the specific change.", Subject = "Your ticket has been edited", Destination = TN.User.Email }; EmailService email = new EmailService(); await email.SendAsync(message); if (FileUploadValidator.IsWebFriendlyFile(File)) { var fileName = Path.GetFileName(File.FileName); var customName = string.Format(Guid.NewGuid() + fileName); File.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), customName)); ticketAttachment.FilePath = "/Uploads/" + customName; string filename = ticketAttachment.FilePath.ToString(); string word = ".docx"; string excel = ".xls"; string excelx = "xlsx"; string pdf = ".pdf"; string jpeg = ".jpeg"; string bmp = ".bmp"; string gif = ".gif"; string zip = ".zip"; string rar = ".rar"; string ticketmessage = ""; if (filename.Contains(word)) { ticketmessage = "This is a Word Document"; } else if (filename.Contains(excel)) { ticketmessage = "This is an Excel File"; } else if (filename.Contains(pdf)) { ticketmessage = "This is an PDF File"; } else if (filename.Contains(jpeg)) { ticketmessage = "This is a JPEG File"; } else if (filename.Contains(bmp)) { ticketmessage = "This is a BMP File"; } else if (filename.Contains(gif)) { ticketmessage = "This is a .gif File"; } else if (filename.Contains(zip)) { ticketmessage = "This is an ZIP File"; } else if (filename.Contains(rar)) { ticketmessage = "This is a RAR File"; } else if (filename.Contains(excelx)) { ticketmessage = "This is an .xlsx File"; } ticketAttachment.CreatedDate = DateTimeOffset.Now; var ticketdatestring = ticketAttachment.CreatedDate.ToString("MM-dd-yyyy"); ticketAttachment.TicketId = Id; ticketAttachment.Description = ticketmessage + " " + "added by" + " " + user.FirstName + " " + user.LastName + " " + "on" + " " + ticketdatestring + "."; ticketAttachment.UserId = userId; db.TicketAttachments.Add(ticketAttachment); db.SaveChanges(); } int id = Id; return(RedirectToAction("Details", "Tickets", new { id = id })); } else { var Temporary = "Please select an image between 1KB - 2MB and in an approved format(.jpg, .bmp, .png, .gif)"; TempData["attachmentmessage"] = Temporary; } } var Temporary3 = "You cannot edit this ticket. Please revisit your role assignment. Tickets can only be edited by their creator, a developer assigned to the ticket, a project manager, or an administrator."; TempData["message"] = Temporary3; return(RedirectToAction("Details", "Tickets", new { id = Id })); } ViewBag.TicketId = new SelectList(db.Tickets, "Id", "SubmitterUserId", ticketAttachment.TicketId); ViewBag.UserId = new SelectList(db.Users, "Id", "FirstName", ticketAttachment.UserId); return(View(ticketAttachment)); }
// GET: Tickets/Edit/5 public ActionResult Edit(int?id) { Ticket ticket = db.Tickets.Find(id); if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (User.IsInRole("Admin") || User.IsInRole("ProjectManager")) { ViewBag.TicketStatusId = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId); } else { ViewBag.TicketStatusId = new SelectList(new[] { ticket.TicketStatus }, "Id", "Name", ticket.TicketStatusId); } var user = db.Users.Find(User.Identity.GetUserId()); ProjectAssignHelper helper = new ProjectAssignHelper(); UserRoleHelper userhelper = new UserRoleHelper(); if (ticket == null) { return(HttpNotFound()); } List <ApplicationUser> devlist = new List <ApplicationUser>(); var projectdev = helper.ListUsersOnProject(ticket.ProjectId); foreach (var dev in projectdev) { if (userhelper.IsUserInRole(dev.Id, "Developer") == true) { devlist.Add(dev); } } ViewBag.AssignToUserId = new SelectList(devlist, "Id", "FirstName", ticket.AssignToUserId); ViewBag.OwnerUserId = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId); ViewBag.ProjectId = new SelectList(helper.ListUserProjects(user.Id), "Id", "Title"); ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId); ViewBag.TicketStatusId = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId); ViewBag.TicketTypeId = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId); if (User.IsInRole("Admin")) { return(View(ticket)); } else if (User.IsInRole("ProjectManager")) { if (helper.IsUserOnProject(user.Id, ticket.ProjectId) == true) //defaults to true, == true not necessary { return(View(ticket)); } } else if (User.IsInRole("Developer") && ticket.AssignToUserId == user.Id) { return(View(ticket)); } else if (User.IsInRole("Submitter") && ticket.OwnerUserId == user.Id) { return(View(ticket)); } else { return(RedirectToAction("Index", "Home")); } return(RedirectToAction("Index", "Tickets", null)); }
public ActionResult Create(Project project, List <string> Developers) { ProjectAssignHelper PA = new ProjectAssignHelper(); if (ModelState.IsValid) { int openId = db.ProjectStatuses.FirstOrDefault(p => p.Name == "Open").Id; project.ProjectStatusId = openId; project.ProjectStartDate = DateTime.Now; var user = db.Users.Find(project.ProjectManagerId); project.ProjectManagerName = user.FirstName + " " + user.LastName; db.Projects.Add(project); db.SaveChanges(); if (project.ProjectManagerId != null) { PA.AddUserToAProject(project.ProjectManagerId, project.Id); } db.SaveChanges(); if (Developers != null) { foreach (var userId in Developers) { helper.AddUserToAProject(userId, project.Id); } db.SaveChanges(); } return(RedirectToAction("Index")); } List <ApplicationUser> ProjectManagerId = new List <ApplicationUser>(); List <ApplicationUser> DeveloperId = new List <ApplicationUser>(); UserRolesHelper uhHelper = new UserRolesHelper(db); var PMs = uhHelper.UsersInRole("Project Manager1"); var PMs2 = uhHelper.UsersInRole("Project Manager2"); var PMs3 = uhHelper.UsersInRole("Project Manager3"); var AD = uhHelper.UsersInRole("Admin"); var AD2 = uhHelper.UsersInRole("Administrator"); foreach (var PM in PMs) { ProjectManagerId.Add(PM); } foreach (var PM in PMs2) { ProjectManagerId.Add(PM); } foreach (var PM in PMs3) { ProjectManagerId.Add(PM); } var Devs1 = uhHelper.UsersInRole("Developer1"); var Devs2 = uhHelper.UsersInRole("Developer2"); var Devs3 = uhHelper.UsersInRole("Developer3"); var Devs4 = uhHelper.UsersInRole("Developer4"); foreach (var dev in Devs1) { DeveloperId.Add(dev); } foreach (var dev in Devs2) { DeveloperId.Add(dev); } foreach (var dev in Devs3) { DeveloperId.Add(dev); } foreach (var dev in Devs4) { DeveloperId.Add(dev); } ViewBag.Users = new MultiSelectList(DeveloperId, "Id", "FullName"); ViewBag.ProjectManagerId = new SelectList(ProjectManagerId, "Id", "FullName"); var modelErrors = new List <string>(); foreach (var modelState in ModelState.Values) { foreach (var modelError in modelState.Errors) { modelErrors.Add(modelError.ErrorMessage); } } ViewBag.Errors = modelErrors; return(View()); }