SaveAccount.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System.Security.Claims;
  2. using MediatR;
  3. using Web.Api.Common;
  4. using Web.Api.Extensions;
  5. namespace Web.Api.Endpoints.Studio.Settlement;
  6. /// <summary>정산 — 계좌 등록/수정</summary>
  7. internal sealed class SaveAccount : IEndpoint
  8. {
  9. public sealed record Body(int? AccountID, string BankCode, string AccountNumber, string AccountHolder);
  10. public void MapEndpoint(IEndpointRouteBuilder app)
  11. {
  12. app.MapPost("api/studio/settlement/account", async (
  13. Body body,
  14. ClaimsPrincipal user,
  15. ISender sender,
  16. CancellationToken ct
  17. ) => {
  18. var memberID = user.GetRequiredMemberID();
  19. var result = await sender.Send(new Application.Features.Api.Studio.Settlement.SaveAccount.Command(
  20. memberID, body.AccountID, body.BankCode, body.AccountNumber, body.AccountHolder
  21. ), ct);
  22. return result.Match(
  23. data => ApiResponse.Ok(data),
  24. CustomResults.Problem
  25. );
  26. })
  27. .WithTags("StudioSettlement")
  28. .RequireAuthorization();
  29. }
  30. }