WithdrawRequest.cs 977 B

1234567891011121314151617181920212223242526272829303132
  1. using System.Security.Claims;
  2. using MediatR;
  3. using Web.Api.Common;
  4. using Web.Api.Extensions;
  5. namespace Web.Api.Endpoints.Studio.Wallet;
  6. /// <summary>지갑 — 출금 신청</summary>
  7. internal sealed class WithdrawRequest : IEndpoint
  8. {
  9. public sealed record Body(int AccountID, int Amount);
  10. public void MapEndpoint(IEndpointRouteBuilder app)
  11. {
  12. app.MapPost("api/studio/wallet/withdraw", 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.Wallet.RequestWithdraw.Command(memberID, body.AccountID, body.Amount), ct);
  20. return result.Match(
  21. data => ApiResponse.Ok(data),
  22. CustomResults.Problem
  23. );
  24. })
  25. .WithTags("StudioWallet")
  26. .RequireAuthorization();
  27. }
  28. }