namespace IOL.GreatOffice.Api.Endpoints.Internal.PasswordResetRequests; public class FulfillResetRequestRoute : RouteBaseAsync.WithRequest.WithActionResult { private readonly PasswordResetService _passwordResetService; public FulfillResetRequestRoute(PasswordResetService passwordResetService) { _passwordResetService = passwordResetService; } public class Payload { public Guid Id { get; set; } public string NewPassword { get; set; } } [AllowAnonymous] [HttpPost("~/_/password-reset-request/fulfill")] public override async Task HandleAsync(Payload request, CancellationToken cancellationToken = default) { return await _passwordResetService.FulfillRequestAsync(request.Id, request.NewPassword, cancellationToken) switch { FulfillPasswordResetRequestResult.REQUEST_NOT_FOUND => NotFound(), FulfillPasswordResetRequestResult.USER_NOT_FOUND => NotFound(), FulfillPasswordResetRequestResult.FULFILLED => Ok(), _ => StatusCode(500) }; } }