Detail.cshtml.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using MediatR;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Mvc.RazorPages;
  4. namespace Admin.Pages.Mail;
  5. public class DetailModel(IMediator mediator) : PageModel
  6. {
  7. public GetEmailLog.Response? Data { get; set; }
  8. public async Task<IActionResult> OnGetAsync(long id, CancellationToken ct)
  9. {
  10. var result = await mediator.Send(new GetEmailLog.Query(id), ct);
  11. if (result is null)
  12. {
  13. TempData["ErrorMessages"] = "메일을 찾을 수 없습니다.";
  14. return Redirect("/Mail/List");
  15. }
  16. Data = result;
  17. return Page();
  18. }
  19. public async Task<IActionResult> OnPostResendAsync(long id, CancellationToken ct)
  20. {
  21. try
  22. {
  23. await mediator.Send(new ResendEmailLog.Command([id]), ct);
  24. TempData["SuccessMessage"] = "재전송 대기열에 추가되었습니다.";
  25. }
  26. catch (Exception e)
  27. {
  28. TempData["ErrorMessages"] = e.Message;
  29. }
  30. return Redirect($"/Mail/Detail?id={id}");
  31. }
  32. public async Task<IActionResult> OnPostDeleteAsync(long id, CancellationToken ct)
  33. {
  34. try
  35. {
  36. await mediator.Send(new DeleteEmailLog.Command([id]), ct);
  37. TempData["SuccessMessage"] = "메일이 삭제되었습니다.";
  38. }
  39. catch (Exception e)
  40. {
  41. TempData["ErrorMessages"] = e.Message;
  42. return Redirect($"/Mail/Detail?id={id}");
  43. }
  44. return Redirect("/Mail/List");
  45. }
  46. }