Index.cshtml.cs 2.2 KB

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