public async Task <IActionResult> AddQuestionComment(int questionId) { try { var question = await _repository.GetQuestionByIdWithoutDetailsAsync(questionId); if (question == null) { Response.StatusCode = 404; ViewData["ErrorMessage"] = "404 Resource not found."; return(View("Error")); } } catch (DbUpdateException dbex) { ViewData["ErrorMessage"] = "DB issue - " + dbex.Message; return(View("Error")); } catch (Exception ex) { ViewData["ErrorMessage"] = ex.Message; return(View("Error")); } var questionCommentViewModel = new QuestionCommentViewModel(); questionCommentViewModel.QuestionId = questionId; return(View("AddQuestionComment", questionCommentViewModel)); }
public async Task <IActionResult> AddQuestionComment(QuestionCommentViewModel questionCommentViewModel) { if (ModelState.IsValid) { try { var question = await _repository.GetQuestionByIdWithoutDetailsAsync(questionCommentViewModel.QuestionId); if (question == null) { Response.StatusCode = 404; ViewData["ErrorMessage"] = "404 Resource not found."; return(View("Error")); } var currentlyLoggedInUser = await _userManager.GetUserAsync(User); questionCommentViewModel.UserId = currentlyLoggedInUser.Id; var questionComment = _mapper.Map <QuestionCommentViewModel, QuestionComment>(questionCommentViewModel); await _repository.AddQuestionCommentAsync(questionComment); return(RedirectToAction("Details", "Questions", new { questionId = questionCommentViewModel.QuestionId })); } catch (DbUpdateException dbex) { ViewData["ErrorMessage"] = "DB issue - " + dbex.Message; return(View("Error")); } catch (Exception ex) { ViewData["ErrorMessage"] = ex.Message; return(View("Error")); } } return(View("AddQuestionComment", questionCommentViewModel)); }
public async Task <IActionResult> EditQuestionComment(QuestionCommentViewModel questionCommentViewModel) { if (ModelState.IsValid) { try { var questionComment = await _repository.GetQuestionCommentById(questionCommentViewModel.Id); if (questionComment == null) { Response.StatusCode = 404; ViewData["ErrorMessage"] = "404 Resource not found."; return(View("Error")); } var question = await _repository.GetQuestionByIdWithoutDetailsAsync(questionComment.QuestionId); if (question == null) { Response.StatusCode = 404; ViewData["ErrorMessage"] = "404 Resource not found."; return(View("Error")); } if (String.Equals(User.FindFirstValue(ClaimTypes.NameIdentifier), questionComment.UserId) == false) { return(RedirectToAction("AccessDenied", "Account")); } questionComment = _mapper.Map <QuestionCommentViewModel, QuestionComment>(questionCommentViewModel); // adding the "Edited" mark and refreshing the DateAdded // this replaces the old Body // to keep old data, mark old comment as IsRemoved and add the new one w "Edited" mark questionComment.IsEdited = true; questionComment.DateAdded = DateTime.Now; await _repository.EditQuestionCommentAsync(questionComment); return(RedirectToAction("Details", "Questions", new { questionId = questionCommentViewModel.QuestionId })); } catch (DbUpdateException dbex) { ViewData["ErrorMessage"] = "DB issue - " + dbex.Message; return(View("Error")); } catch (Exception ex) { ViewData["ErrorMessage"] = ex.Message; return(View("Error")); } } return(View("EditQuestionComment", questionCommentViewModel)); }