Index.cshtml.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Application.Abstractions.Messaging;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Mvc.RazorPages;
  4. using System.ComponentModel;
  5. using System.ComponentModel.DataAnnotations;
  6. namespace Admin.Pages.Director.Role;
  7. public class IndexModel(IMediator mediator) : PageModel
  8. {
  9. public int Total { get; set; } = 0;
  10. public List<GetRoles.Response> List { get; set; } = [];
  11. [Required]
  12. [DisplayName("역할(Role)")]
  13. [MaxLength(100)]
  14. [BindProperty]
  15. public string? RoleName { get; set; }
  16. public async Task OnGetAsync(CancellationToken ct)
  17. {
  18. List = await mediator.Send(new GetRoles.Query(), ct);
  19. Total = List.Count;
  20. }
  21. public async Task<IActionResult> OnPostAsync(CancellationToken ct)
  22. {
  23. try
  24. {
  25. if (!ModelState.IsValid)
  26. {
  27. throw new Exception("유효성 검사에 실패하였습니다.");
  28. }
  29. var command = new CreateRole.Command(
  30. RoleName: RoleName
  31. );
  32. await mediator.Send(command, ct);
  33. TempData["SuccessMessage"] = $"{RoleName} 역할이 추가되었습니다.";
  34. return RedirectToPage();
  35. }
  36. catch (Exception e)
  37. {
  38. TempData["ErrorMessages"] = e.Message;
  39. return Page();
  40. }
  41. }
  42. public async Task<IActionResult> OnPostDeleteAsync(string id, CancellationToken ct)
  43. {
  44. try
  45. {
  46. var role = await mediator.Send(new GetRole.Query(id), ct);
  47. if (role == null)
  48. {
  49. throw new Exception("존재하지 않는 역할(Role)입니다.");
  50. }
  51. await mediator.Send(new DeleteRole.Command(id), ct);
  52. TempData["SuccessMessage"] = $"{role.Name} 역할이 정상적으로 삭제되었습니다.";
  53. return RedirectToPage();
  54. }
  55. catch (Exception e)
  56. {
  57. TempData["ErrorMessages"] = e.Message;
  58. return RedirectToPage();
  59. }
  60. }
  61. }