public async Task <ActionResult> AdminReplyTicket(CreateSupportTicketReplyModel model) { if (!ModelState.IsValid) { return(View("ReplyTicketModal", model)); } var result = await SupportWriter.AdminCreateSupportTicketReply(User.Id(), model); if (!ModelState.IsWriterResultValid(result)) { return(View("ReplyTicketModal", model)); } return(CloseModalRedirect(Url.Action("AdminViewTicket", new { ticketId = model.TicketId }))); }
public async Task <IWriterResult <int> > CreateSupportTicketReply(string userId, CreateSupportTicketReplyModel model) { using (var context = DataContextFactory.CreateContext()) { var ticket = await context.SupportTicket.Include(x => x.Replies).FirstOrDefaultNoLockAsync(x => x.Id == model.TicketId); if (ticket == null) { return(WriterResult <int> .ErrorResult("Support ticket #{0} not found", model.TicketId)); } var reply = new SupportTicketReply { Message = model.Message, UserId = userId, TicketId = ticket.Id, IsPublic = true, IsAdmin = false, Created = DateTime.UtcNow }; ticket.Replies.Add(reply); ticket.Status = SupportTicketStatus.UserReply; ticket.LastUpdate = DateTime.UtcNow; await context.SaveChangesAsync(); return(WriterResult <int> .SuccessResult(reply.Id)); } }