public async Task <ActionResult> CloseTicket(int id) { var model = new UpdateSupportTicketModel { TicketId = id, Status = SupportTicketStatus.Closed }; var result = await SupportWriter.UpdateTicketStatus(User.Identity.GetUserId(), model); if (!result.Success) { return(JsonError(result.Message)); } return(Json(new { Success = true, Message = result.Message, Data = model })); }
public async Task <IWriterResult> UpdateTicketStatus(string userId, UpdateSupportTicketModel model) { using (var context = DataContextFactory.CreateContext()) { var ticket = await context.SupportTicket.FirstOrDefaultNoLockAsync(x => x.Id == model.TicketId).ConfigureAwait(false); if (ticket == null) { return(new WriterResult(false, $"Support ticket #{model.TicketId} not found.")); } if (!model.IsAdmin && ticket.UserId != userId) { return(new WriterResult(false, $"Support ticket #{model.TicketId} not found.")); } ticket.Status = model.Status; ticket.LastUpdate = DateTime.UtcNow; await context.SaveChangesAsync().ConfigureAwait(false); model.Timestamp = ticket.LastUpdate.ToString("M/d/yyyy h:mm:ss tt"); return(new WriterResult(true, $"Successfully updated support ticket #{model.TicketId} status to '{model.Status}'")); } }