public async Task <ActionResult <EstablishmentDto> > CreateEstablishment([CustomizeValidator(Skip = true)] CreateEstablishmentDto createEstablishmentDto, [FromServices] CreateEstablishmentValidator validator) { if (createEstablishmentDto is null) { throw new ArgumentNullException(nameof(createEstablishmentDto)); } if (validator is null) { throw new ArgumentNullException(nameof(validator)); } // Manual validation because ASP.NET’s validation pipeline is not asynchronous var validationResult = await validator.ValidateAsync(createEstablishmentDto); validationResult.AddToModelState(ModelState, null); if (!ModelState.IsValid) { return(ValidationProblem(ModelState)); } var currentUserId = Guid.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); try { var establishmentToReturn = await _establishmentService.Create(createEstablishmentDto, currentUserId); return(CreatedAtAction(nameof(GetById), new { establishmentId = establishmentToReturn.Id }, establishmentToReturn)); } catch (EstablishmentServiceException ex) { return(new JsonResult(new { ex.Message }) { StatusCode = StatusCodes.Status500InternalServerError }); } }