Detail.cshtml.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System.Security.Claims;
  2. using Application.Abstractions.Data;
  3. using Domain.Entities.Developers;
  4. using MediatR;
  5. using Microsoft.AspNetCore.Mvc;
  6. using Microsoft.AspNetCore.Mvc.RazorPages;
  7. using Microsoft.EntityFrameworkCore;
  8. namespace Admin.Pages.Developers.Accounts;
  9. public class DetailModel(IMediator mediator, IAppDbContext db) : PageModel
  10. {
  11. [BindProperty(SupportsGet = true)]
  12. public int ID { get; set; }
  13. public Developer? Dev { get; set; }
  14. public string? MemberEmail { get; set; }
  15. public string? MemberName { get; set; }
  16. [BindProperty]
  17. public string? Reason { get; set; }
  18. public async Task<IActionResult> OnGetAsync(CancellationToken ct)
  19. {
  20. Dev = await db.Developer
  21. .Include(c => c.Member)
  22. .FirstOrDefaultAsync(c => c.ID == ID, ct);
  23. if (Dev is null)
  24. {
  25. return NotFound();
  26. }
  27. MemberEmail = Dev.Member?.Email;
  28. MemberName = Dev.Member?.Name;
  29. return Page();
  30. }
  31. private string CurrentAdminID() =>
  32. User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "system";
  33. public async Task<IActionResult> OnPostApproveAsync(CancellationToken ct)
  34. {
  35. var result = await mediator.Send(new Application.Features.Admin.Developers.Accounts.ApproveDeveloper.Command(ID, CurrentAdminID()), ct);
  36. if (result.IsSuccess)
  37. {
  38. TempData["SuccessMessage"] = "개발자 계정을 승인했습니다.";
  39. }
  40. else
  41. {
  42. TempData["ErrorMessages"] = result.Error.Description;
  43. }
  44. return RedirectToPage("/Developers/Accounts/Detail", new { ID });
  45. }
  46. public async Task<IActionResult> OnPostRejectAsync(CancellationToken ct)
  47. {
  48. var result = await mediator.Send(new Application.Features.Admin.Developers.Accounts.RejectDeveloper.Command(ID, CurrentAdminID(), Reason), ct);
  49. if (result.IsSuccess)
  50. {
  51. TempData["SuccessMessage"] = "개발자 계정을 거절 처리했습니다.";
  52. }
  53. else
  54. {
  55. TempData["ErrorMessages"] = result.Error.Description;
  56. }
  57. return RedirectToPage("/Developers/Accounts/Detail", new { ID });
  58. }
  59. public async Task<IActionResult> OnPostSuspendAsync(CancellationToken ct)
  60. {
  61. var result = await mediator.Send(new Application.Features.Admin.Developers.Accounts.SuspendDeveloper.Command(ID, CurrentAdminID(), Reason), ct);
  62. if (result.IsSuccess)
  63. {
  64. TempData["SuccessMessage"] = "개발자 계정을 정지 처리했습니다.";
  65. }
  66. else
  67. {
  68. TempData["ErrorMessages"] = result.Error.Description;
  69. }
  70. return RedirectToPage("/Developers/Accounts/Detail", new { ID });
  71. }
  72. }