public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, HttpMethods.Post, Route = "category")] CreateCategoryHttpRequest createCategoryRequest) { var validationResult = await _createCategoryRequestValidator.ValidateAsync(createCategoryRequest); if (!validationResult.IsValid) { return(new BadRequestObjectResult(validationResult.Errors)); } var id = _guidProvider.GenerateGuid().ToString("N"); var categoryToAdd = new CategoryDto( id, createCategoryRequest.Name, createCategoryRequest.Description, createCategoryRequest.SortOrder); var createResult = await _categoryRepository.Create(categoryToAdd); if (!createResult.Success) { return(new BadRequestResult()); } await _eventPublisher.PublishEvent(this.BuildCategoryChangedEvent(categoryToAdd)); return(new CreatedResult(id, categoryToAdd)); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, HttpMethods.Post, Route = "category")] CreateCategoryHttpRequest createCategoryRequest, [NotificationSubscriber] string subscriber, ILogger log) { var id = _guidProvider.GenerateGuid(); _correlationInitializer.Initialize(id); var validationResult = await _createCategoryRequestValidator.ValidateAsync(createCategoryRequest); var correlationId = id; log.LogProgress(OperationStatus.Started, "Creating category process started", correlationId); if (!validationResult.IsValid) { log.LogProgress(OperationStatus.Failed, "Validation failed", correlationId); return(new BadRequestObjectResult(validationResult.Errors)); } await _subscriber.Register(correlationId, subscriber); var categoryAddedEvent = new CreateCategoryProcessStartedEvent( id, createCategoryRequest.Name, createCategoryRequest.Description, createCategoryRequest.SortOrder, correlationId); var saveEventResult = await _eventStore.AppendEvent(id, categoryAddedEvent); if (!saveEventResult.Success) { log.LogFailedOperation(OperationStatus.Failed, "Creating category process failed", saveEventResult.Errors, correlationId); return(new BadRequestResult()); } log.LogProgress(OperationStatus.InProgress, "Request accepted to further processing.", correlationId); await _eventPublisher.PublishEvent(categoryAddedEvent); return(new AcceptedWithCorrelationIdHeaderResult(correlationId)); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, HttpMethodNames.POST)] CreateCategoryHttpRequest createCategoryHttpRequest) { var validationResult = await _validator.ValidateAsync(createCategoryHttpRequest); if (!validationResult.IsValid) { return(new BadRequestObjectResult(validationResult.Errors)); } var categoryToAdd = new CategoryToAddDto(createCategoryHttpRequest.Name, createCategoryHttpRequest.Description); var result = await _categoryRepository.CreateCategoryAsync(categoryToAdd); if (!result.IsSuccessful) { return(new BadRequestObjectResult(result.Value)); } return(new OkObjectResult("")); }