public ActionResult ViewTicket(Ticket ticket) { if (!isLoggedIn()) { return(RedirectToAction("Login", "Account")); } IEnumerable <Message> messages; messages = from message in _dbContext.Messages.ToList() where message.IsPartOf == ticket.ID select message; TicketContentsViewModel model = new TicketContentsViewModel(); model.Messages = messages; // Weird stuff happens if you don't do this model.Ticket = _dbContext.Ticket.Find(ticket.ID); model.TicketID = model.Ticket.ID; IEnumerable <Expert> experts; IEnumerable <Expert> preAddedExperts; experts = from expert in _dbContext.Experts.ToList() where expert.Validated && expert.Id != getUser().Id // So experts don't add themselves select expert; preAddedExperts = from expert in experts from attached in _dbContext.AttachedUsers.ToList() where expert.Id == attached.UserID && attached.TicketID == model.TicketID select expert; experts = experts.Except(preAddedExperts); IEnumerable <ApplicationUser> users = from expert in experts from user in _dbContext.Users.ToList() where user.Id == expert.Id select user; IEnumerable <ApplicationUser> preAddedUsers = from expert in preAddedExperts from user in _dbContext.Users.ToList() where user.Id == expert.Id select user; model.AllExperts = users; model.AttachedExperts = preAddedUsers; if (!isTicketCreator(model.Ticket)) { return(View("ExpertTicketView", model)); } return(View("UserTicketView", model)); }
public ActionResult PostResponse(TicketContentsViewModel model) { if (!isLoggedIn()) { return(RedirectToAction("Oops")); } if (!getUser().ActiveStatus) { return(View("Deactivated")); } Ticket ticket = _dbContext.Ticket.Find(model.TicketID); Message message = new Message(); message.BodyText = model.MessageToPost; message.Date = System.DateTime.Now; message.User = getUser(); message.Ticket = ticket; if (model.Deactivate) { message.BodyText = "Expert " + getUser().Name + " has removed themselves from this ticket. Reason: \n" + message.BodyText; _dbContext.Messages.Add(message); _dbContext.SaveChanges(); AttachedUsers attached = _dbContext.AttachedUsers.Find(getUser().Id, ticket.ID); _dbContext.AttachedUsers.Remove(attached); _dbContext.SaveChanges(); return(RedirectToAction("Index")); } _dbContext.Messages.Add(message); _dbContext.SaveChanges(); return(RedirectToAction("ViewTicket", ticket)); }