/// <summary> /// Creates a <see cref="BadRequestObjectResult"/> containing a collection /// of minimal validation error details. /// </summary> /// <param name="request"></param> /// <returns></returns> public static BadRequestObjectResult ToBadRequest <T>(this ValidatableRequestModel <T> request) { return(new BadRequestObjectResult(request.Errors.Select(e => new { Field = e.PropertyName, Error = e.ErrorMessage }))); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log) { try { ValidatableRequestModel <LocationDetailsRequestModel> addLocationRequest = await req.GetJsonBody <LocationDetailsRequestModel, LocationDetailsRequestModelValidator>(); if (!addLocationRequest.IsValid) { return(addLocationRequest.ToBadRequest()); } WriteRequestResult result = await _locationDetailsService.Add(CreateLocationDto(addLocationRequest.Value)); switch (result.Status) { case WriteRequestStatus.Success: return(new CreatedResult(GetResourceLocation(result.ItemId, log), new { Id = result.ItemId })); case WriteRequestStatus.Duplicate: return(new AcceptedResult(GetResourceLocation(result.ItemId, log), new { Id = result.ItemId })); default: return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } } catch (Exception ex) { log.LogError($"AddLocation had an unexpexpected error: {ex.Message}"); return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log, ExecutionContext context) { log.LogInformation($"C# Http trigger function executed at: {DateTime.Now}"); ValidatableRequestModel <ContactFormRequestModel> form = await req.GetJsonBody <ContactFormRequestModel, ContactFormRequestModelValidator>(); if (!form.IsValid) { log.LogInformation($"Invalid form data."); return(form.ToBadRequest()); } await _cloudQueue.Add(form.Value, context.FunctionAppDirectory); return(new OkObjectResult(true)); }