public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, HttpMethods.Put, Route = "category/{id:guid}")] UpdateCategoryHttpRequest updateCategoryRequest, string id) { var existingCategoryResult = await _categoryRepository.GetById(id); if (!existingCategoryResult.Success) { return(new NotFoundResult()); } var validationResult = await _updateCommandValidator.ValidateAsync(new UpdateCategoryCommand(id, updateCategoryRequest)); if (!validationResult.IsValid) { return(new BadRequestObjectResult(validationResult.Errors)); } var categoryToUpdate = new CategoryDto( id, updateCategoryRequest.Name, updateCategoryRequest.Description, updateCategoryRequest.SortOrder); var updateResult = await _categoryRepository.Update(categoryToUpdate); if (!updateResult.Success) { return(new BadRequestResult()); } await _eventPublisher.PublishEvent(this.BuildCategoryChangedEvent(categoryToUpdate)); return(new NoContentResult()); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, HttpMethods.Put, Route = "category/{id:guid}")] UpdateCategoryHttpRequest updateCategoryRequest, string id, [NotificationSubscriber] string subscriber, ILogger log) { var correlationId = _guidProvider.GenerateGuid(); _correlationInitializer.Initialize(correlationId); var validationResult = await _updateCommandValidator.ValidateAsync(new UpdateCategoryCommand(id, updateCategoryRequest)); log.LogProgress(OperationStatus.Started, "Updating 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 categoryChangedEvent = new UpdateCategoryProcessStartedEvent( id, updateCategoryRequest.Name, updateCategoryRequest.Description, updateCategoryRequest.SortOrder, correlationId); var saveEventResult = await _eventStore.AppendEvent(id, categoryChangedEvent); 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(categoryChangedEvent); log.LogProgress(OperationStatus.InProgress, $"{nameof(UpdateCategoryProcessStartedEvent)} published", correlationId); return(new AcceptedWithCorrelationIdHeaderResult(correlationId)); }
public UpdateCategoryCommand(string id, UpdateCategoryHttpRequest request) { Id = id; Request = request; }