public ActionResult AssignTickets(int id) { var model = new TicketAssignViewModel(); model.Id = id; var ticket = db.Tickets.FirstOrDefault(t => t.Id == id); model.Developers = RoleManager("Developer"); var userIdsAssignedToTicket = ticket.Users.Select(t => t.Id).ToList(); model.DeveloperList = new SelectList(model.Developers, "Id", "FullName", userIdsAssignedToTicket); return(View(model)); }
public ActionResult AssignDevelopers(TicketAssignViewModel model) { var ticket = db.Tickets.FirstOrDefault(p => p.Id == model.Id); ticket.AssignId = model.SelectedUser; db.SaveChanges(); // Send Notification if (ticket.AssignId != null) { EmailSendingExtensions.SendNotification(ticket, "Assign"); } return(RedirectToAction("Index")); }
public ActionResult AssignTickets(TicketAssignViewModel model) { var ticket = db.Tickets.FirstOrDefault(p => p.Id == model.Id); if (model.SelectedUsers != null) { foreach (var userId in model.SelectedUsers) { var user = db.Users.FirstOrDefault(p => p.Id == userId); ticket.AssigneeId = userId; } } //STEP 4: Save changes to the database db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult TicketAssignToDeveloper(TicketAssignViewModel model) { //STEP 1: Find the project var ticket = db.Tickets.FirstOrDefault(t => t.Id == model.Id); ////STEP 2: Remove all assigned users from ticket //var assignedUsers = ticket.Users.ToList(); //foreach (var userA in assignedUsers) //{ // ticket.Users.Remove(userA); //} //STEP 3: Assign users to the ticket if (model.SelectedUsers != null) { foreach (var users in model.SelectedUsers) { var user = db.Users.FirstOrDefault(t => t.Id == users); ticket.Users.Add(user); ticket.AssigneeId = user.Id; } } //STEP 4: Save changes to the database if (ticket.AssigneeId != null) { var user = db.Users.FirstOrDefault(p => p.Id == ticket.AssigneeId); //Plug in your email service here to send an email. var newEmailService = new PersonalEmail(); var newMail = new MailMessage(WebConfigurationManager.AppSettings["emailto"], user.Email) { Body = "You are assigned to new ticket, check your ticket", Subject = "Check your ticket", IsBodyHtml = true }; newEmailService.Warning(newMail); } db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult AssignTickets(TicketAssignViewModel model) { //STEP 1: Find the Ticket var ticket = db.Tickets.FirstOrDefault(t => t.Id == model.Id); //STEP 2: Remove all assigned users from this ticket var assignedUsers = ticket.Users.ToList(); foreach (var user in assignedUsers) { ticket.Users.Remove(user); } //STEP 3: Assign users to the ticket if (model.SelectedDeveloper != null) { foreach (var userId in model.SelectedDeveloper) { var user = db.Users.FirstOrDefault(t => t.Id == userId); ticket.Users.Add(user); ticket.AssignedToUserId = user.Id; } } //STEP 4: Save changes to the database db.SaveChanges(); if (ticket.AssignedToUserId != null) { Notify(ticket); } return(RedirectToAction("Index")); }
public async Task <ActionResult> Unassign([Bind(Include = "UserId,ticketId")] TicketAssignViewModel model) { Ticket ticket = db.Tickets.Find(model.ticketId); var userId = User.Identity.GetUserId(); var currentUser = db.Users.Find(userId); if (!URManager.UserIsInRole(userId, "Administrator")) { if (!(ticket.Project.InChargeOfId == userId)) { return(RedirectToAction("Login", "Account")); } } if ("Unassigned" != db.TicketStatuses.Find(ticket.TicketStatusId).Name) { TicketHistoryEvent th = new TicketHistoryEvent { TicketId = ticket.Id, Property = "Status", NewValue = "Unassigned", OldValue = db.TicketStatuses.Find(ticket.TicketStatusId).Name, ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)), UserId = User.Identity.GetUserId() }; db.TicketHistoryEvents.Add(th); db.SaveChanges(); } var user = db.Users.Find(model.UserId); if (!(ticket.AssignedToId == null || ticket.AssignedToId == "" || ticket.AssignedToId == "N/A")) { TicketHistoryEvent th1 = new TicketHistoryEvent { TicketId = ticket.Id, Property = "Assigned To", NewValue = "N/A", OldValue = db.Users.Find(ticket.AssignedToId).FirstName + " " + db.Users.Find(ticket.AssignedToId).LastName, ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)), UserId = User.Identity.GetUserId() }; db.TicketHistoryEvents.Add(th1); db.SaveChanges(); //email notification try { var from = "ReSolve Bugtracker<*****@*****.**>"; var to = db.Users.Find(ticket.AssignedToId).Email; var email = new MailMessage(from, to) { Subject = "You were unassigned", Body = $"You were unassigned from ticket: <strong>{ticket.Title}</strong> by {currentUser.FirstName} {currentUser.LastName}.", IsBodyHtml = true }; var svc = new PersonalEmail(); await svc.SendAsync(email); ViewBag.Message = "Email has been sent"; } catch (Exception e) { Console.WriteLine(e.Message); await Task.FromResult(0); } } ticket.AssignedToId = null; db.Entry(ticket).Property("AssignedToId").IsModified = true; db.SaveChanges(); int ticketStatusId = db.TicketStatuses.FirstOrDefault(ts => ts.Name == "Unassigned").Id; ticket.TicketStatusId = ticketStatusId; db.Entry(ticket).Property("TicketStatusId").IsModified = true; db.SaveChanges(); return(RedirectToAction("Details", new { id = ticket.Id })); }
public async Task <ActionResult> Assign([Bind(Include = "UserId,ticketId")] TicketAssignViewModel model) { Ticket ticket = db.Tickets.Find(model.ticketId); var currentUser = db.Users.Find(User.Identity.GetUserId()); //make sure user is eligable for assignment if (ModelState.IsValid && URManager.UsersInRole("Developer").Where(u => ticket.Project.Users.Select(u1 => u1.Id).Contains(u.Id)).Select(u2 => u2.Id).Contains(model.UserId)) { if ("Assigned" != db.TicketStatuses.Find(ticket.TicketStatusId).Name) { TicketHistoryEvent th = new TicketHistoryEvent { TicketId = ticket.Id, Property = "Status", NewValue = "Assigned", OldValue = db.TicketStatuses.Find(ticket.TicketStatusId).Name, ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)), UserId = User.Identity.GetUserId() }; db.TicketHistoryEvents.Add(th); db.SaveChanges(); } var user = db.Users.Find(model.UserId); if (ticket.AssignedToId == null || ticket.AssignedToId == "" || ticket.AssignedToId == "N/A") { TicketHistoryEvent th1 = new TicketHistoryEvent { TicketId = ticket.Id, Property = "Assigned To", NewValue = user.FirstName + " " + user.LastName, OldValue = "N/A", ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)), UserId = User.Identity.GetUserId() }; db.TicketHistoryEvents.Add(th1); db.SaveChanges(); } else if (user.FirstName + " " + user.LastName != db.Users.Find(ticket.AssignedToId).FirstName + " " + db.Users.Find(ticket.AssignedToId).LastName) { TicketHistoryEvent th1 = new TicketHistoryEvent { TicketId = ticket.Id, Property = "Assigned To", NewValue = user.FirstName + " " + user.LastName, OldValue = db.Users.Find(ticket.AssignedToId).FirstName + " " + db.Users.Find(ticket.AssignedToId).LastName, ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)), UserId = User.Identity.GetUserId() }; db.TicketHistoryEvents.Add(th1); db.SaveChanges(); //email notification try { var from = "ReSolve Bugtracker<*****@*****.**>"; var to = db.Users.Find(ticket.AssignedToId).Email; var email = new MailMessage(from, to) { Subject = "You were unassigned", Body = $"You were unassigned from ticket: <strong>{ticket.Title}</strong> by {currentUser.FirstName} {currentUser.LastName}.", IsBodyHtml = true }; var svc = new PersonalEmail(); await svc.SendAsync(email); ViewBag.Message = "Email has been sent"; } catch (Exception e) { Console.WriteLine(e.Message); await Task.FromResult(0); } } ticket.AssignedToId = model.UserId; db.Entry(ticket).Property("AssignedToId").IsModified = true; db.SaveChanges(); int ticketStatusId = db.TicketStatuses.FirstOrDefault(ts => ts.Name == "Assigned").Id; ticket.TicketStatusId = ticketStatusId; db.Entry(ticket).Property("TicketStatusId").IsModified = true; db.SaveChanges(); //email notification try { var from = "ReSolve Bugtracker<*****@*****.**>"; var to = user.Email; var email = new MailMessage(from, to) { Subject = "New Ticket Assignment", Body = $"You were assigned to ticket: <strong>{ticket.Title}</strong> by {currentUser.FirstName} {currentUser.LastName}. Ticket Details can be found <a href='http://kferretti-bugtracker.azurewebsites.net/Tickets/Details/{ticket.Id}'>here</a>.", IsBodyHtml = true }; var svc = new PersonalEmail(); await svc.SendAsync(email); ViewBag.Message = "Email has been sent"; } catch (Exception e) { Console.WriteLine(e.Message); await Task.FromResult(0); } } return(RedirectToAction("Details", new { id = ticket.Id })); }