public ActionResult CreateTicket(NewTicketModel model) { if (ModelState.IsValid) { var now = DateTime.Now; var userId = User.Identity.GetUserId(); Project parentProject = db.Projects.FirstOrDefault(p => p.Id == model.ParentProjectId); if (parentProject == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } TicketStatus initStatus; if (model.TicketStatusId == null && parentProject.ActiveWorkflow.InitialTicketStatusId != null) { initStatus = db.TicketStatuses.ToList().FirstOrDefault(ts => ts.Id == parentProject.ActiveWorkflow.InitialTicketStatusId); if (initStatus == null) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } } else { initStatus = db.TicketStatuses.Find(model.TicketStatusId); } TicketPriority priority = db.TicketPriorityTypes.FirstOrDefault(tp => tp.Id == model.TicketPriorityId); if (priority == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } string initSolverId = parentProject.GetNextSolverIdFromWorkflow(); var newTicket = new Ticket() { Title = model.Title , Description = model.Description , CreatedAt = now , ParentProjectId = parentProject.Id , TicketTypeId = model.TicketTypeId , TicketStatusId = initStatus.Id , TicketPriorityLevelId = priority.Id , ReporterId = User.Identity.GetUserId() , AssignedSolverId = initSolverId }; db.Tickets.Add(newTicket); db.SaveChanges(); newTicket.SaveTicketCreatedHistoryEntry(User, db); if (model.Attachments.First() != null) { newTicket.AddAttachments(model.Attachments, User, db, Server); } db.TicketNotifications.AddRange(TicketNotification.GenerateNotifications(db, User.Identity.GetUserId(), newTicket.Id, "A new ticket has been created!")); db.SaveChanges(); return(RedirectToAction("Show", "Tickets", new { TicketIdentifier = newTicket.GetTicketIdentifier() })); } return(View()); }