Example #1
0
        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 })));
        }
Example #2
0
        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));
            }
        }