Edit.cshtml.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using MediatR;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Mvc.RazorPages;
  4. using SharedKernel.Extensions;
  5. namespace Admin.Pages.Forum.Comments.List
  6. {
  7. public class EditModel(IMediator mediator) : PageModel
  8. {
  9. public string? QueryString { get; set; }
  10. public int CommentID { get; set; }
  11. public int BoardID { get; set; }
  12. public string BoardName { get; set; } = "";
  13. public int PostID { get; set; }
  14. public string PostSubject { get; set; } = "";
  15. public string CommentContent { get; set; } = "";
  16. public string? Name { get; set; }
  17. public string? SID { get; set; }
  18. public bool IsReply { get; set; }
  19. public bool IsSecret { get; set; }
  20. public bool IsDeleted { get; set; }
  21. public int Likes { get; set; }
  22. public int Dislikes { get; set; }
  23. public int Reports { get; set; }
  24. public int Replies { get; set; }
  25. public string? UpdatedAt { get; set; }
  26. public string CreatedAt { get; set; } = "";
  27. public async Task OnGetAsync(int id, CancellationToken ct)
  28. {
  29. var result = await mediator.Send(new GetComment.Query(id), ct);
  30. CommentID = result.ID;
  31. BoardID = result.BoardID;
  32. BoardName = result.BoardName;
  33. PostID = result.PostID;
  34. PostSubject = result.PostSubject;
  35. CommentContent = result.Content;
  36. Name = result.Name;
  37. SID = result.SID;
  38. IsReply = result.IsReply;
  39. IsSecret = result.IsSecret;
  40. IsDeleted = result.IsDeleted;
  41. Likes = result.Likes;
  42. Dislikes = result.Dislikes;
  43. Reports = result.Reports;
  44. Replies = result.Replies;
  45. UpdatedAt = result.UpdatedAt.GetDateAt() ?? "-";
  46. CreatedAt = result.CreatedAt.GetDateAt();
  47. QueryString = Request.QueryString.ToString();
  48. }
  49. public async Task<IActionResult> OnPostDeleteAsync(int id, CancellationToken ct)
  50. {
  51. try
  52. {
  53. await mediator.Send(new DeleteComment.Command([id]), ct);
  54. TempData["SuccessMessage"] = "댓글이 삭제되었습니다.";
  55. return RedirectToPage("/Forum/Comments/List/Index");
  56. }
  57. catch (Exception e)
  58. {
  59. TempData["ErrorMessages"] = e.Message;
  60. return Redirect($"/Forum/Comments/List/Edit/{id}{Request.QueryString}");
  61. }
  62. }
  63. }
  64. }