public async Task <GetAllDynamicEntityPropertyValuesOutput> GetAllDynamicEntityPropertyValues(GetAllDynamicEntityPropertyValuesInput input) { var localCacheOfDynamicPropertyValues = new Dictionary <int, List <string> >(); async Task <List <string> > LocalGetAllValuesOfDynamicProperty(int dynamicPropertyId) { if (!localCacheOfDynamicPropertyValues.ContainsKey(dynamicPropertyId)) { localCacheOfDynamicPropertyValues[dynamicPropertyId] = (await _dynamicPropertyValueManager .GetAllValuesOfDynamicPropertyAsync(dynamicPropertyId)) .Select(x => x.Value).ToList(); } return(localCacheOfDynamicPropertyValues[dynamicPropertyId]); } var output = new GetAllDynamicEntityPropertyValuesOutput(); var dynamicEntityProperties = await _dynamicEntityPropertyManager.GetAllAsync(input.EntityFullName); var dynamicEntityPropertySelectedValues = (await _dynamicEntityPropertyValueManager.GetValuesAsync(input.EntityFullName, input.EntityId)) .GroupBy(value => value.DynamicEntityPropertyId) .ToDictionary( group => group.Key, items => items.ToList().Select(value => value.Value) .ToList() ); foreach (var dynamicEntityProperty in dynamicEntityProperties) { var outputItem = new GetAllDynamicEntityPropertyValuesOutputItem { DynamicEntityPropertyId = dynamicEntityProperty.Id, InputType = _dynamicEntityPropertyDefinitionManager.GetOrNullAllowedInputType(dynamicEntityProperty.DynamicProperty.InputType), PropertyName = dynamicEntityProperty.DynamicProperty.PropertyName, AllValuesInputTypeHas = await LocalGetAllValuesOfDynamicProperty(dynamicEntityProperty.DynamicProperty.Id), SelectedValues = dynamicEntityPropertySelectedValues.ContainsKey(dynamicEntityProperty.Id) ? dynamicEntityPropertySelectedValues[dynamicEntityProperty.Id] : new List <string>() }; output.Items.Add(outputItem); } return(output); }
public IInputType FindAllowedInputType(string name) { return(_dynamicEntityPropertyDefinitionManager.GetOrNullAllowedInputType(name)); }