using Application.Abstractions.Messaging; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; namespace Admin.Pages.Mail; public class DetailModel(IMediator mediator) : PageModel { public GetEmailLog.Response? Data { get; set; } public async Task OnGetAsync(long id, CancellationToken ct) { var result = await mediator.Send(new GetEmailLog.Query(id), ct); if (result is null) { TempData["ErrorMessages"] = "메일을 찾을 수 없습니다."; return Redirect("/Mail/List"); } Data = result; return Page(); } public async Task OnPostResendAsync(long id, CancellationToken ct) { try { await mediator.Send(new ResendEmailLog.Command([id]), ct); TempData["SuccessMessage"] = "재전송 대기열에 추가되었습니다."; } catch (Exception e) { TempData["ErrorMessages"] = e.Message; } return Redirect($"/Mail/Detail?id={id}"); } public async Task OnPostDeleteAsync(long id, CancellationToken ct) { try { await mediator.Send(new DeleteEmailLog.Command([id]), ct); TempData["SuccessMessage"] = "메일이 삭제되었습니다."; } catch (Exception e) { TempData["ErrorMessages"] = e.Message; return Redirect($"/Mail/Detail?id={id}"); } return Redirect("/Mail/List"); } }