public async Task ExecuteAsync(EnsureCustomEntityDefinitionExistsCommand command, IExecutionContext executionContext) { var customEntityDefinition = _customEntityDefinitionRepository.GetByCode(command.CustomEntityDefinitionCode); EntityNotFoundException.ThrowIfNull(customEntityDefinition, command.CustomEntityDefinitionCode); var dbDefinition = await _dbContext .CustomEntityDefinitions .FilterByCode(command.CustomEntityDefinitionCode) .SingleOrDefaultAsync(); if (dbDefinition == null) { await _commandExecutor.ExecuteAsync(new EnsureEntityDefinitionExistsCommand(command.CustomEntityDefinitionCode)); dbDefinition = new CustomEntityDefinition() { CustomEntityDefinitionCode = customEntityDefinition.CustomEntityDefinitionCode, ForceUrlSlugUniqueness = customEntityDefinition.ForceUrlSlugUniqueness, HasLocale = customEntityDefinition.HasLocale }; if (customEntityDefinition is IOrderableCustomEntityDefinition) { dbDefinition.IsOrderable = ((IOrderableCustomEntityDefinition)customEntityDefinition).Ordering != CustomEntityOrdering.None; } _dbContext.CustomEntityDefinitions.Add(dbDefinition); await _dbContext.SaveChangesAsync(); } }
private async Task <CustomEntityDefinition> GetAndValidateDbDefinitionAsync(AddCustomEntityCommand command, CustomEntityDefinitionSummary definition) { var dbDefinition = await QueryDbDefinition(command).SingleOrDefaultAsync(); // Registrastion is done via code, so if it doesnt exist in the db yet, lets add it if (dbDefinition == null) { await _commandExecutor.ExecuteAsync(new EnsureEntityDefinitionExistsCommand(command.CustomEntityDefinitionCode)); dbDefinition = new CustomEntityDefinition() { CustomEntityDefinitionCode = definition.CustomEntityDefinitionCode, ForceUrlSlugUniqueness = definition.ForceUrlSlugUniqueness, HasLocale = definition.HasLocale, IsOrderable = definition.Ordering != CustomEntityOrdering.None }; _dbContext.CustomEntityDefinitions.Add(dbDefinition); } else { // update record dbDefinition.ForceUrlSlugUniqueness = definition.ForceUrlSlugUniqueness; dbDefinition.HasLocale = definition.HasLocale; dbDefinition.IsOrderable = definition.Ordering != CustomEntityOrdering.None; } return(dbDefinition); }