public async Task <IActionResult> GetByNameAsync(string name) { var response = await _placeService.FindByNameAsync(name); if (!response.Success) { return(BadRequest(response)); } return(Ok(response)); }
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { SavePlaceResource savePlaceResource; if (context.ActionArguments.ContainsKey("savePlaceResource")) { savePlaceResource = (SavePlaceResource)context.ActionArguments["savePlaceResource"]; } else { context.Result = new BadRequestObjectResult(new ErrorResource("Wrong argument provided.")); return; } DataResponse <PlaceResource> placeByIdResource = null; if (context.ActionArguments.ContainsKey("id")) { var placeId = (int)context.ActionArguments["id"]; placeByIdResource = await _placeService.FindByIdAsync(placeId); if (!placeByIdResource.Success) { context.Result = new NotFoundObjectResult(new ErrorResource("Place no found.")); return; } } var placeByNameResource = await _placeService.FindByNameAsync(savePlaceResource.Name); if (placeByNameResource.Success && placeByNameResource.Data != null) { if (placeByIdResource == null || placeByNameResource.Data.Id != placeByIdResource.Data.Id) { context.Result = new BadRequestObjectResult( new ErrorResource("There is another place with this name.")); return; } } await next(); }