Edit.cshtml.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Application.Abstractions.Messaging;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Mvc.RazorPages;
  4. namespace Admin.Pages.Director.User;
  5. public class EditModel(IMediator mediator) : PageModel
  6. {
  7. [BindProperty]
  8. public GetUser.Response? Input { get; set; }
  9. public async Task OnGetAsync(string id, CancellationToken ct)
  10. {
  11. var user = await mediator.Send(new GetUser.Query(id), ct);
  12. if (user != null)
  13. {
  14. Input = new GetUser.Response
  15. {
  16. ID = user.ID,
  17. Name = user.FullName,
  18. Email = user.Email,
  19. Phone = user.PhoneNumber,
  20. IsDeleted = user.IsDeleted,
  21. EmailConfirmed = user.EmailConfirmed,
  22. LockoutEnd = user.LockoutEnd.HasValue,
  23. Roles = user.Roles
  24. };
  25. }
  26. }
  27. public async Task<IActionResult> OnPostAsync(CancellationToken ct)
  28. {
  29. try
  30. {
  31. if (!ModelState.IsValid)
  32. {
  33. throw new Exception("유효성 검사에 실패하였습니다.");
  34. }
  35. var command = new UpdateUser.Command(
  36. ID: Input!.ID,
  37. FullName: Input.Name,
  38. Email: Input.Email,
  39. NewPassword: Input.NewPassword,
  40. ConfirmPassword: Input.ConfirmPassword,
  41. PhoneNumber: Input.Phone,
  42. IsDeleted: Input.IsDeleted,
  43. EmailConfirmed: Input.EmailConfirmed,
  44. LockoutEnd: Input.LockoutEnd
  45. );
  46. await mediator.Send(command, ct);
  47. TempData["SuccessMessage"] = "사용자 정보가 정상적으로 수정되었습니다.";
  48. return RedirectToPage(command);
  49. }
  50. catch (Exception e)
  51. {
  52. TempData["ErrorMessages"] = e.Message;
  53. return Page();
  54. }
  55. }
  56. }