Index.cshtml.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using SharedKernel.Extensions;
  2. using MediatR;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.AspNetCore.Mvc.RazorPages;
  5. namespace Admin.Pages.Member.Grade
  6. {
  7. public class IndexModel(IMediator mediator) : PageModel
  8. {
  9. public int Total { get; private set; } = 0;
  10. public List<RowModel> Data { get; private set; } = [];
  11. public sealed class RowModel
  12. {
  13. public int Num { get; set; }
  14. public int ID { get; set; }
  15. public required string Name { get; set; }
  16. public string? Image { get; set; }
  17. public string? TextColor { get; set; }
  18. public short Order { get; set; }
  19. public long TotalDonationCount { get; set; }
  20. public int TotalDonationAmount { get; set; }
  21. public int MemberRows { get; set; }
  22. public char IsActive { get; set; }
  23. public string? UpdatedAt { get; set; }
  24. public required string CreatedAt { get; set; }
  25. public required string EditURL { get; set; }
  26. }
  27. public async Task OnGetAsync(CancellationToken ct)
  28. {
  29. var result = await mediator.Send(new GetMemberGrades.Query(), ct);
  30. Total = result.Total;
  31. Data = [.. result.List.Select(c => new RowModel
  32. {
  33. Num = c.Num,
  34. ID = c.ID,
  35. Name = c.KorName,
  36. Image = c.Image,
  37. TextColor = c.TextColor,
  38. Order = c.Order,
  39. TotalDonationCount = c.RequiredAttendance,
  40. TotalDonationAmount = c.RequiredExp,
  41. MemberRows = c.MemberRows,
  42. IsActive = c.IsActive ? 'Y' : 'N',
  43. UpdatedAt = c.UpdatedAt.GetDateAt() ?? "-",
  44. CreatedAt = c.CreatedAt.GetDateAt(),
  45. EditURL = $"/Member/Grade/Edit/{c.ID}"
  46. })];
  47. }
  48. public async Task<IActionResult> OnPostDeleteAsync(int[] ids, CancellationToken ct)
  49. {
  50. try
  51. {
  52. await mediator.Send(new DeleteMemberGrade.Command(ids), ct);
  53. TempData["SuccessMessage"] = "회원등급이 삭제되었습니다.";
  54. }
  55. catch (Exception e)
  56. {
  57. TempData["ErrorMessages"] = e.Message;
  58. }
  59. return RedirectToPage("/Member/Grade/Index");
  60. }
  61. }
  62. }