Approve.cshtml.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using SharedKernel.Extensions;
  2. using Application.Abstractions.Messaging;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.AspNetCore.Mvc.RazorPages;
  5. using System.ComponentModel;
  6. namespace Admin.Pages.Member.List;
  7. public class ApproveModel(IMediator mediator) : PageModel
  8. {
  9. [BindProperty]
  10. public string? QueryString { get; set; }
  11. public string? ReceiveSMSConsentAt { get; set; }
  12. public string? ReceiveEmailConsentAt { get; set; }
  13. public string? ReceiveNoteConsentAt { get; set; }
  14. public string? DisclosureInvestConsentAt { get; set; }
  15. [BindProperty]
  16. public InputModel Input { get; set; } = new();
  17. public sealed class InputModel
  18. {
  19. public int MemberID { get; set; }
  20. [DisplayName("SMS 수신")]
  21. public bool IsReceiveSMS { get; set; }
  22. [DisplayName("이메일 수신")]
  23. public bool IsReceiveEmail { get; set; }
  24. [DisplayName("쪽지 수신")]
  25. public bool IsReceiveNote { get; set; }
  26. [DisplayName("투자 현황 공개")]
  27. public bool IsDisclosureInvest { get; set; }
  28. }
  29. public async Task OnGetAsync(int id, CancellationToken ct)
  30. {
  31. var approveResult = await mediator.Send(new ApproveMember.Query(id), ct);
  32. if (approveResult.IsFailure)
  33. {
  34. TempData["ErrorMessages"] = approveResult.Error.Description;
  35. QueryString = Request.QueryString.ToString();
  36. return;
  37. }
  38. var result = approveResult.Value;
  39. ReceiveSMSConsentAt = result.ReceiveSMSConsentAt.GetDateAt();
  40. ReceiveEmailConsentAt = result.ReceiveEmailConsentAt.GetDateAt();
  41. ReceiveNoteConsentAt = result.ReceiveNoteConsentAt.GetDateAt();
  42. DisclosureInvestConsentAt = result.DisclosureInvestConsentAt.GetDateAt();
  43. Input = new InputModel
  44. {
  45. MemberID = result.MemberID,
  46. IsReceiveSMS = result.IsReceiveSMS,
  47. IsReceiveEmail = result.IsReceiveEmail,
  48. IsReceiveNote = result.IsReceiveNote,
  49. IsDisclosureInvest = result.IsDisclosureInvest
  50. };
  51. QueryString = Request.QueryString.ToString();
  52. }
  53. public async Task<IActionResult> OnPostAsync(CancellationToken ct)
  54. {
  55. if (!ModelState.IsValid)
  56. {
  57. TempData["ErrorMessages"] = ModelState.GetErrorMessages();
  58. return Redirect($"/Member/List/Approve/{Input.MemberID}{QueryString}");
  59. }
  60. var result = await mediator.Send(new ApproveMember.Command(
  61. Input.MemberID,
  62. Input.IsReceiveSMS,
  63. Input.IsReceiveEmail,
  64. Input.IsReceiveNote,
  65. Input.IsDisclosureInvest
  66. ), ct);
  67. if (result.IsFailure)
  68. {
  69. TempData["ErrorMessages"] = result.Error.Description;
  70. }
  71. else
  72. {
  73. TempData["SuccessMessage"] = "알림 및 동의 정보가 수정되었습니다.";
  74. }
  75. return Redirect($"/Member/List/Approve/{Input.MemberID}{QueryString}");
  76. }
  77. }