CrewJoinByCode.cs 963 B

12345678910111213141516171819202122232425262728293031
  1. using System.Security.Claims;
  2. using Web.Api.Common;
  3. using Web.Api.Extensions;
  4. using MediatR;
  5. namespace Web.Api.Endpoints.Donation;
  6. /// <summary>초대 코드로 크루 가입 (크루원 본인용)</summary>
  7. internal sealed class CrewJoinByCode : IEndpoint
  8. {
  9. internal sealed record JoinRequest(string InviteCode, string Nickname);
  10. public void MapEndpoint(IEndpointRouteBuilder app)
  11. {
  12. app.MapPost("api/crew/join", async (
  13. JoinRequest body,
  14. ClaimsPrincipal user,
  15. ISender sender,
  16. CancellationToken ct
  17. ) => {
  18. var memberID = user.GetRequiredMemberID();
  19. var command = new Application.Features.Api.Crew.JoinByCode.Command(
  20. body.InviteCode, memberID, body.Nickname
  21. );
  22. var data = await sender.Send(command, ct);
  23. return ApiResponse.Ok(data);
  24. })
  25. .WithTags("Crew")
  26. .RequireAuthorization();
  27. }
  28. }