public async Task <ActionResult> Edit([Bind(Include = "Id,Title,Body,Description,Created,ProjectId,TicketTypeId,TicketPriorityId,TicketStatusId,OwnerUserId,AssignedUserId")] Ticket ticket, IdentityMessage message, List <string> users) { var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id); if (ModelState.IsValid) { var ticketUsers = ticketHelper.ListUsersOnTicket(ticket.Id); if (ticketUsers.Count > 0) { foreach (var user in ticketUsers.ToList()) { ticketHelper.RemoveUserFromTicket(user.Id, ticket.Id); } } foreach (var userId in users) { ticketHelper.AddUserToTicket(userId, ticket.Id); } ticket.Updated = DateTimeOffset.Now; db.Entry(ticket).State = EntityState.Modified; db.SaveChanges(); await TicketNotificationExtensions.TriggerNotifications(ticket, oldTicket); ticket.RecordChanges(oldTicket); return(RedirectToAction("Index")); //db.Tickets.Add(ticket); //db.Entry(ticket).State = EntityState.Modified; //db.SaveChanges(); //if (string.IsNullOrEmpty(oldTicket.AssignedUserId) && !string.IsNullOrEmpty(ticket.AssignedUserId)) //{ // ticket.TicketStatusId = db.TicketStatus.FirstOrDefault(t => t.Value == "Assigned").Id; //} //ticket.RecordChanges(oldTicket); //await ticket.TriggerNotifications(oldTicket); //return RedirectToAction("Details", "Tickets", new { id = ticket.Id }); } ViewBag.UserId = new SelectList(db.Users, "Id", "FirstName"); ViewBag.ProjectId = new SelectList(db.Projects, "Id", "Title", ticket.ProjectId); ViewBag.AssignedUserId = new SelectList(db.Users, "Id", "FirstName", ticket.AssignedUserId); ViewBag.OwnerUserId = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId); 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); return(View(ticket)); }
public async Task <ActionResult> TicketAssignment(List <int> tickets, string developers, IdentityMessage message, Ticket oldTicket, Ticket tick) { foreach (var ticket in tickets) { //Step 1: Unassign everyone from selected ticket var tickUsers = tickHelper.ListUsersOnTicket(ticket); if (tickUsers.Count > 0) { foreach (var user in tickUsers) { tickHelper.RemoveUserFromTicket(user.Email, ticket); } } //Step 2: Assign selected users to ticket tickHelper.AddUserToTicket(developers, ticket); } db.SaveChanges(); await Notify.TriggerNotifications(tick, oldTicket); //Step 3: Take user somewhere else return(RedirectToAction("Index", "Tickets")); }