public async Task <IActionResult> Reply(int id = 0) { var message = await DbContext.Messages.FirstOrDefaultAsync(m => m.Id == id); if (message is null || message.Deleted) { throw new HttpNotFoundError(); } var replyMessages = await MessageRepository.GetMessages(new List <int> { message.Id }); var replyMessage = replyMessages.First(); replyMessage.ShowControls = false; var viewModel = new ViewModels.Messages.ReplyForm { Id = id.ToString(), TopicId = message.TopicId.ToString(), ElementId = $"message-reply-{id}", ReplyMessage = replyMessage }; return(View(viewModel)); }
public async Task <IActionResult> ReplyPartial(int id) { var record = await DbContext.Messages.FirstOrDefaultAsync(m => m.Id == id); if (record is null) { throw new HttpNotFoundError(); } var viewModel = new ViewModels.Messages.ReplyForm { Id = id.ToString(), ElementId = $"message-reply-{id}" }; return(await ForumViewResult.ViewResult(this, "_MessageForm", viewModel)); }
public async Task <IActionResult> Reply(ControllerModels.Messages.CreateReplyInput input) { if (input.Id > 0) { var message = await DbContext.Messages.FirstOrDefaultAsync(m => m.Id == input.Id); if (message is null || message.Deleted) { throw new HttpNotFoundError(); } } if (ModelState.IsValid) { var result = await MessageRepository.CreateReply(input); ModelState.AddModelErrors(result.Errors); if (ModelState.IsValid) { var hubAction = "new-reply"; if (result.Merged) { hubAction = "updated-message"; } await ForumHub.Clients.All.SendAsync(hubAction, new HubModels.Message { TopicId = result.TopicId, MessageId = result.MessageId }); var redirectPath = base.Url.DisplayMessage(result.TopicId, result.MessageId); return(Redirect(redirectPath)); } } ViewData["Smileys"] = await SmileyRepository.GetSelectorList(); var viewModel = new ViewModels.Messages.ReplyForm { Id = input.Id.ToString(), Body = input.Body, ElementId = $"message-reply-{input.Id}" }; return(await ForumViewResult.ViewResult(this, viewModel)); }
public async Task <IActionResult> XhrReply(int id) { var message = await DbContext.Messages.FirstOrDefaultAsync(m => m.Id == id); if (message is null || message.Deleted) { throw new HttpNotFoundError(); } var viewModel = new ViewModels.Messages.ReplyForm { Id = id.ToString(), TopicId = message.TopicId.ToString(), ElementId = $"message-reply-{id}", FormAction = nameof(XhrReply) }; return(await ForumViewResult.ViewResult(this, "_MessageForm", viewModel)); }
public async Task <IActionResult> Reply(int id = 0) { ViewData["Smileys"] = await SmileyRepository.GetSelectorList(); var message = await DbContext.Messages.FirstOrDefaultAsync(m => m.Id == id); if (message is null || message.Deleted) { throw new HttpNotFoundError(); } var viewModel = new ViewModels.Messages.ReplyForm { Id = id.ToString(), ElementId = $"message-reply-{id}" }; return(await ForumViewResult.ViewResult(this, viewModel)); }
public async Task <IActionResult> Reply(InputModels.MessageInput input) { if (ModelState.IsValid) { var serviceResponse = await MessageRepository.CreateReply(input); if (input.SideLoad) { foreach (var kvp in serviceResponse.Errors) { ModelState.AddModelError(kvp.Key, kvp.Value); } } else { return(await ForumViewResult.RedirectFromService(this, serviceResponse, FailureCallback)); } } if (input.SideLoad) { var errors = ModelState.Keys.Where(k => ModelState[k].Errors.Count > 0).Select(k => new { propertyName = k, errorMessage = ModelState[k].Errors[0].ErrorMessage }); return(new JsonResult(errors)); } else { return(await FailureCallback()); } async Task <IActionResult> FailureCallback() { ViewData["Smileys"] = await SmileyRepository.GetSelectorList(); var viewModel = new ViewModels.Messages.ReplyForm { Id = input.Id.ToString(), Body = input.Body, ElementId = $"message-reply-{input.Id}" }; return(await ForumViewResult.ViewResult(this, viewModel)); } }