View.cshtml.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using MediatR;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Mvc.RazorPages;
  4. namespace Admin.Pages.Member.List;
  5. public class ViewModel(IMediator mediator) : PageModel
  6. {
  7. // 기본 정보
  8. public int ID { get; set; }
  9. public string SID { get; set; } = "";
  10. public string Email { get; set; } = "";
  11. public string? Name { get; set; }
  12. public string? FullName { get; set; }
  13. public string? FirstName { get; set; }
  14. public string? LastName { get; set; }
  15. public string? Phone { get; set; }
  16. public string? Birthday { get; set; }
  17. public string? Gender { get; set; }
  18. public string? Summary { get; set; }
  19. public string? Intro { get; set; }
  20. public string? GradeName { get; set; }
  21. public long Following { get; set; }
  22. public long Followed { get; set; }
  23. // 상태
  24. public char IsEmailVerified { get; set; }
  25. public char IsAuthCertified { get; set; }
  26. public char IsDenied { get; set; }
  27. public char IsAdmin { get; set; }
  28. public char IsWithdraw { get; set; }
  29. public char IsCreator { get; set; }
  30. // 상태 일시
  31. public string? EmailVerifiedAt { get; set; }
  32. public string? AuthCertifiedAt { get; set; }
  33. public string? DeniedAt { get; set; }
  34. public string? DeletedAt { get; set; }
  35. // 접속/로그 정보
  36. public string? DeviceInfo { get; set; }
  37. public string? SignupIP { get; set; }
  38. public string? LastLoginIp { get; set; }
  39. public string? IpAddress { get; set; }
  40. public string? UserAgent { get; set; }
  41. public string? LastLoginAt { get; set; }
  42. public string? UpdatedAt { get; set; }
  43. public string CreatedAt { get; set; } = "";
  44. // 지갑 정보
  45. public (long Balance, long CreditBalance) Wallet { get; set; }
  46. // 채널 정보
  47. public (string SID, string Name, string? Handle, string YouTubeUrl)? Channel { get; set; }
  48. public async Task<IActionResult> OnGetAsync(int id, CancellationToken ct)
  49. {
  50. var result = await mediator.Send(new GetMember.Query(id), ct);
  51. ID = result.ID;
  52. SID = result.SID;
  53. Email = result.Email;
  54. Name = result.Name;
  55. FullName = result.FullName;
  56. FirstName = result.FirstName;
  57. LastName = result.LastName;
  58. Phone = result.Phone;
  59. Birthday = result.Birthday?.ToString("yyyy-MM-dd");
  60. Gender = result.Gender?.ToString();
  61. Summary = result.Summary;
  62. Intro = result.Intro;
  63. GradeName = result.GradeName;
  64. Following = result.Following;
  65. Followed = result.Followed;
  66. IsEmailVerified = result.IsEmailVerified ? 'Y' : 'N';
  67. IsAuthCertified = result.IsAuthCertified ? 'Y' : 'N';
  68. IsDenied = result.IsDenied ? 'Y' : 'N';
  69. IsAdmin = result.IsAdmin ? 'Y' : 'N';
  70. IsWithdraw = result.IsWithdraw ? 'Y' : 'N';
  71. IsCreator = result.IsCreator ? 'Y' : 'N';
  72. EmailVerifiedAt = result.EmailVerifiedAt?.ToString("yyyy-MM-dd HH:mm:ss");
  73. AuthCertifiedAt = result.AuthCertifiedAt?.ToString("yyyy-MM-dd HH:mm:ss");
  74. DeniedAt = result.DeniedAt?.ToString("yyyy-MM-dd HH:mm:ss");
  75. DeletedAt = result.DeletedAt?.ToString("yyyy-MM-dd HH:mm:ss");
  76. DeviceInfo = result.DeviceInfo;
  77. SignupIP = result.SignupIP;
  78. LastLoginIp = result.LastLoginIp;
  79. IpAddress = result.IpAddress;
  80. UserAgent = result.UserAgent;
  81. LastLoginAt = result.LastLoginAt?.ToString("yyyy-MM-dd HH:mm:ss");
  82. UpdatedAt = result.UpdatedAt?.ToString("yyyy-MM-dd HH:mm:ss");
  83. CreatedAt = result.CreatedAt.ToString("yyyy-MM-dd HH:mm:ss");
  84. Wallet = (result.Wallet.Balance, result.Wallet.CreditBalance);
  85. if (result.Channel is not null)
  86. {
  87. Channel = (result.Channel.SID, result.Channel.Name, result.Channel.Handle, result.Channel.YouTubeUrl);
  88. }
  89. ViewData["QueryString"] = Request.QueryString.ToString().TrimStart('?');
  90. return Page();
  91. }
  92. }