private Task OnTransactionComplete( AddCustomEntityCommand command, CustomEntity entity ) { _customEntityCache.ClearRoutes(entity.CustomEntityDefinitionCode); return(_messageAggregator.PublishAsync(new CustomEntityAddedMessage() { CustomEntityId = entity.CustomEntityId, CustomEntityDefinitionCode = entity.CustomEntityDefinitionCode, HasPublishedVersionChanged = command.Publish })); }
public async Task ExecuteAsync(AddCustomEntityCommand command, IExecutionContext executionContext) { var definitionQuery = new GetCustomEntityDefinitionSummaryByCodeQuery(command.CustomEntityDefinitionCode); var definition = await _queryExecutor.ExecuteAsync(definitionQuery, executionContext); EntityNotFoundException.ThrowIfNull(definition, command.CustomEntityDefinitionCode); await _commandExecutor.ExecuteAsync(new EnsureCustomEntityDefinitionExistsCommand(definition.CustomEntityDefinitionCode)); // Custom Validation ValidateCommand(command, definition); await ValidateIsUniqueAsync(command, definition); var entity = MapEntity(command, definition, executionContext); _dbContext.CustomEntities.Add(entity); using (var scope = _transactionScopeFactory.Create(_dbContext)) { await _dbContext.SaveChangesAsync(); var dependencyCommand = new UpdateUnstructuredDataDependenciesCommand( CustomEntityVersionEntityDefinition.DefinitionCode, entity.CustomEntityVersions.First().CustomEntityVersionId, command.Model); await _commandExecutor.ExecuteAsync(dependencyCommand); await _customEntityStoredProcedures.UpdatePublishStatusQueryLookupAsync(entity.CustomEntityId); scope.Complete(); } _customEntityCache.ClearRoutes(definition.CustomEntityDefinitionCode); // Set Ouput command.OutputCustomEntityId = entity.CustomEntityId; await _messageAggregator.PublishAsync(new CustomEntityAddedMessage() { CustomEntityId = entity.CustomEntityId, CustomEntityDefinitionCode = definition.CustomEntityDefinitionCode, HasPublishedVersionChanged = command.Publish }); }