using Application.Abstractions.Messaging; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using SharedKernel.Extensions; namespace Admin.Pages.Forum.Comments.List; public class EditModel(IMediator mediator) : PageModel { public string? QueryString { get; set; } public int CommentID { get; set; } public int BoardID { get; set; } public string BoardName { get; set; } = ""; public int PostID { get; set; } public string PostSubject { get; set; } = ""; public string CommentContent { get; set; } = ""; public string? Name { get; set; } public string? SID { get; set; } public bool IsReply { get; set; } public bool IsSecret { get; set; } public bool IsDeleted { get; set; } public int Likes { get; set; } public int Dislikes { get; set; } public int Reports { get; set; } public int Replies { get; set; } public string? UpdatedAt { get; set; } public string CreatedAt { get; set; } = ""; public async Task OnGetAsync(int id, CancellationToken ct) { var result = await mediator.Send(new GetComment.Query(id), ct); if (result.IsFailure) { TempData["ErrorMessages"] = result.Error.Description; QueryString = Request.QueryString.ToString(); return; } var data = result.Value; CommentID = data.ID; BoardID = data.BoardID; BoardName = data.BoardName; PostID = data.PostID; PostSubject = data.PostSubject; CommentContent = data.Content; Name = data.Name; SID = data.SID; IsReply = data.IsReply; IsSecret = data.IsSecret; IsDeleted = data.IsDeleted; Likes = data.Likes; Dislikes = data.Dislikes; Reports = data.Reports; Replies = data.Replies; UpdatedAt = data.UpdatedAt.GetDateAt() ?? "-"; CreatedAt = data.CreatedAt.GetDateAt(); QueryString = Request.QueryString.ToString(); } public async Task OnPostDeleteAsync(int id, CancellationToken ct) { try { await mediator.Send(new DeleteComment.Command([id]), ct); TempData["SuccessMessage"] = "댓글이 삭제되었습니다."; return RedirectToPage("/Forum/Comments/List/Index"); } catch (Exception e) { TempData["ErrorMessages"] = e.Message; return Redirect($"/Forum/Comments/List/Edit/{id}{Request.QueryString}"); } } }