public bool createTicket(Ticket ticket) { ticket.OwnerUserID = getCurrentUserId(); db.Tickets.Add(ticket); var user = getCurrentUser(); var userTicketLink = new UserTicketLink(); userTicketLink.UserID = user.UserID; userTicketLink.User = user; userTicketLink.TicketID = ticket.TicketID; userTicketLink.Ticket = ticket; db.UserTicketLinks.Add(userTicketLink); var ticketEvent = new TicketEvent(); ticketEvent.text = "Ticket created"; db.TicketEvents.Add(ticketEvent); db.SaveChanges(); return true; }
public bool assignUserToTicket(int userID, int ticketID) { var user = getCurrentUser(); if (user.UserID == userID) { return false; } if (user.UserType == UserType.Customer) { return false; } var assignedToUser = getUser(userID); if (assignedToUser.UserType != UserType.Help) { return false; } var ticket = getTicket(ticketID); if (!assignedToUser.UserTicketLinks.Select(utl => utl.Ticket).Contains(ticket)) { var userTicketLink = new UserTicketLink(); userTicketLink.UserID = assignedToUser.UserID; userTicketLink.User = assignedToUser; userTicketLink.TicketID = ticket.TicketID; userTicketLink.Ticket = ticket; db.UserTicketLinks.Add(userTicketLink); ticket.TicketState = TicketState.Open; var ticketEvent = new TicketEvent(); ticketEvent.NewTicketState = TicketState.Open; ticketEvent.text = "Ticket " + ticket.TicketID + " ( " + ticket.TicketTitle + " ) assigned to " + assignedToUser.Email + " by " + user.Email; ticketEvent.TicketID = ticket.TicketID; ticketEvent.Ticket = ticket; db.TicketEvents.Add(ticketEvent); db.SaveChanges(); } return true; }
public bool changeTicketState(int id, string newState) { var user = getCurrentUser(); if (user.UserType == UserType.Customer) { return false; } if (user.UserTicketLinks.Where(utl => utl.TicketID == id).Count() != 1 || user.UserType == UserType.Admin) { return false; } var ticket = getTicket(id); ticket.TicketState = (TicketState)(Enum.Parse(typeof(TicketState), newState)); db.Entry(ticket).State = System.Data.EntityState.Modified; var te = new TicketEvent(); te.NewTicketState = ticket.TicketState; te.text = "Ticket " + ticket.TicketID + " ( " + ticket.TicketTitle + " ) was changed to state " + ticket.TicketState + " by " + user.Email; te.TicketID = id; te.Ticket = ticket; db.TicketEvents.Add(te); if (user.UserType != UserType.Admin) { db.UserTicketLinks.Find(user.UserID, id).LastViewed = DateTime.Now; ticket.LastCommentDate = DateTime.Now; } db.SaveChanges(); return true; }