Index.cshtml.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using MediatR;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Mvc.RazorPages;
  4. namespace Admin.Pages.Crypto.Board
  5. {
  6. public class IndexModel(IMediator mediator) : PageModel
  7. {
  8. public int CoinID { get; private set; }
  9. public string CoinSymbol { get; private set; } = string.Empty;
  10. public string CoinName { get; private set; } = string.Empty;
  11. public List<(int ID, string Code, string Name, string GroupName, char IsActive)> Linked { get; set; } = [];
  12. public List<(int ID, string Code, string Name, string GroupName, char IsActive)> Unlinked { get; set; } = [];
  13. public async Task<IActionResult> OnGetAsync(int coinID, CancellationToken ct)
  14. {
  15. try
  16. {
  17. var result = await mediator.Send(new GetCoinBoards.Query(coinID), ct);
  18. CoinID = coinID;
  19. CoinSymbol = result.CoinSymbol;
  20. CoinName = result.CoinKorName;
  21. Linked = [..result.Linked.Select(b => (b.ID, b.Code, b.Name, b.GroupName, b.IsActive ? 'Y' : 'N'))];
  22. Unlinked = [..result.Unlinked.Select(b => (b.ID, b.Code, b.Name, b.GroupName, b.IsActive ? 'Y' : 'N'))];
  23. return Page();
  24. }
  25. catch (KeyNotFoundException)
  26. {
  27. return NotFound();
  28. }
  29. }
  30. public async Task<IActionResult> OnPostLinkAsync(int coinID, int boardID, CancellationToken ct)
  31. {
  32. try
  33. {
  34. await mediator.Send(new LinkCoinBoard.Command(coinID, boardID), ct);
  35. TempData["SuccessMessage"] = "게시판이 연결되었습니다.";
  36. }
  37. catch (Exception e)
  38. {
  39. TempData["ErrorMessages"] = e.Message;
  40. }
  41. return RedirectToPage("/Crypto/Board/Index", new { coinID });
  42. }
  43. public async Task<IActionResult> OnPostUnlinkAsync(int coinID, int boardID, CancellationToken ct)
  44. {
  45. try
  46. {
  47. await mediator.Send(new UnlinkCoinBoard.Command(boardID), ct);
  48. TempData["SuccessMessage"] = "게시판 연결이 해제되었습니다.";
  49. }
  50. catch (Exception e)
  51. {
  52. TempData["ErrorMessages"] = e.Message;
  53. }
  54. return RedirectToPage("/Crypto/Board/Index", new { coinID });
  55. }
  56. }
  57. }