| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using System.Security.Claims;
- using Application.Abstractions.Data;
- using Domain.Entities.Developers;
- using MediatR;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Mvc.RazorPages;
- using Microsoft.EntityFrameworkCore;
- namespace Admin.Pages.Developers.Accounts;
- public class DetailModel(IMediator mediator, IAppDbContext db) : PageModel
- {
- [BindProperty(SupportsGet = true)]
- public int ID { get; set; }
- public Developer? Dev { get; set; }
- public string? MemberEmail { get; set; }
- public string? MemberName { get; set; }
- [BindProperty]
- public string? Reason { get; set; }
- public async Task<IActionResult> OnGetAsync(CancellationToken ct)
- {
- Dev = await db.Developer
- .Include(c => c.Member)
- .FirstOrDefaultAsync(c => c.ID == ID, ct);
- if (Dev is null)
- {
- return NotFound();
- }
- MemberEmail = Dev.Member?.Email;
- MemberName = Dev.Member?.Name;
- return Page();
- }
- private string CurrentAdminID() =>
- User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "system";
- public async Task<IActionResult> OnPostApproveAsync(CancellationToken ct)
- {
- var result = await mediator.Send(new Application.Features.Admin.Developers.Accounts.ApproveDeveloper.Command(ID, CurrentAdminID()), ct);
- if (result.IsSuccess)
- {
- TempData["SuccessMessage"] = "개발자 계정을 승인했습니다.";
- }
- else
- {
- TempData["ErrorMessages"] = result.Error.Description;
- }
- return RedirectToPage("/Developers/Accounts/Detail", new { ID });
- }
- public async Task<IActionResult> OnPostRejectAsync(CancellationToken ct)
- {
- var result = await mediator.Send(new Application.Features.Admin.Developers.Accounts.RejectDeveloper.Command(ID, CurrentAdminID(), Reason), ct);
- if (result.IsSuccess)
- {
- TempData["SuccessMessage"] = "개발자 계정을 거절 처리했습니다.";
- }
- else
- {
- TempData["ErrorMessages"] = result.Error.Description;
- }
- return RedirectToPage("/Developers/Accounts/Detail", new { ID });
- }
- public async Task<IActionResult> OnPostSuspendAsync(CancellationToken ct)
- {
- var result = await mediator.Send(new Application.Features.Admin.Developers.Accounts.SuspendDeveloper.Command(ID, CurrentAdminID(), Reason), ct);
- if (result.IsSuccess)
- {
- TempData["SuccessMessage"] = "개발자 계정을 정지 처리했습니다.";
- }
- else
- {
- TempData["ErrorMessages"] = result.Error.Description;
- }
- return RedirectToPage("/Developers/Accounts/Detail", new { ID });
- }
- }
|