UpdateChannelTitle.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System.Security.Claims;
  2. using MediatR;
  3. using Web.Api.Common;
  4. using Web.Api.Extensions;
  5. namespace Web.Api.Endpoints.ChannelTitle;
  6. internal sealed class UpdateChannelTitle : IEndpoint
  7. {
  8. public sealed record Request(
  9. string Name,
  10. string? Description,
  11. long MinAmount,
  12. string Color,
  13. string? IconUrl,
  14. bool IsActive
  15. );
  16. public void MapEndpoint(IEndpointRouteBuilder app)
  17. {
  18. app.MapPut("api/channel-titles/{titleID:int}", async (
  19. int titleID,
  20. Request request,
  21. ClaimsPrincipal user,
  22. ISender sender,
  23. CancellationToken ct
  24. ) => {
  25. var memberID = user.GetMemberID();
  26. if (memberID is null)
  27. {
  28. return ApiResponse.Fail(StatusCodes.Status401Unauthorized, "Invalid token");
  29. }
  30. var command = new Application.Features.Api.ChannelTitle.UpdateChannelTitle.Command(
  31. memberID.Value,
  32. titleID,
  33. request.Name,
  34. request.Description,
  35. request.MinAmount,
  36. request.Color,
  37. request.IconUrl,
  38. request.IsActive
  39. );
  40. var result = await sender.Send(command, ct);
  41. return result.Match(
  42. () => ApiResponse.Ok(),
  43. CustomResults.Problem
  44. );
  45. })
  46. .WithTags("ChannelTitle")
  47. .RequireAuthorization();
  48. }
  49. }