Exemple #1
0
        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}'"));
            }
        }