Approve.cshtml.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using SharedKernel.Extensions;
  2. using MediatR;
  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 result = await mediator.Send(new ApproveMember.Query(id), ct);
  32. ReceiveSMSConsentAt = result.ReceiveSMSConsentAt.GetDateAt();
  33. ReceiveEmailConsentAt = result.ReceiveEmailConsentAt.GetDateAt();
  34. ReceiveNoteConsentAt = result.ReceiveNoteConsentAt.GetDateAt();
  35. DisclosureInvestConsentAt = result.DisclosureInvestConsentAt.GetDateAt();
  36. Input = new InputModel
  37. {
  38. MemberID = result.MemberID,
  39. IsReceiveSMS = result.IsReceiveSMS,
  40. IsReceiveEmail = result.IsReceiveEmail,
  41. IsReceiveNote = result.IsReceiveNote,
  42. IsDisclosureInvest = result.IsDisclosureInvest
  43. };
  44. QueryString = Request.QueryString.ToString();
  45. }
  46. public async Task<IActionResult> OnPostAsync(CancellationToken ct)
  47. {
  48. try
  49. {
  50. if (!ModelState.IsValid)
  51. {
  52. throw new Exception(ModelState.GetErrorMessages());
  53. }
  54. await mediator.Send(new ApproveMember.Command(
  55. Input.MemberID,
  56. Input.IsReceiveSMS,
  57. Input.IsReceiveEmail,
  58. Input.IsReceiveNote,
  59. Input.IsDisclosureInvest
  60. ), ct);
  61. TempData["SuccessMessage"] = "알림 및 동의 정보가 수정되었습니다.";
  62. }
  63. catch (Exception e)
  64. {
  65. TempData["ErrorMessages"] = e.Message;
  66. }
  67. return Redirect($"/Member/List/Approve/{Input.MemberID}{QueryString}");
  68. }
  69. }