//see DataDictionaryToWire private static ColDefResponse ToWire(SecurityGuard guard, TableDef source, ColDef c, IUser user) { bool isDBAssignedKey = source.PrimaryKeyColName == c.Name && source.DatabaseAssignsKey; return(new ColDefResponse { PermissionLevel = (int)guard.FinalLevel(null, source.Name, c.Name), AllowSort = c.AllowSort, ForeignKeyDatonTypeName = c.ForeignKeyDatonTypeName, LeftJoin = ToWire(c.LeftJoin), SelectBehavior = ToWire(c.SelectBehavior), ImageUrlColumName = c.Image?.UrlColumName, IsComputed = c.IsComputed || isDBAssignedKey, IsMainColumn = c.IsMainColumn, IsVisibleInDropdown = c.IsVisibleInDropdown, LengthValidationMessage = DataDictionary.ResolvePrompt(c.LengthValidationMessage, user, defaultValue: null), MaxLength = c.MaxLength, MaxNumberValue = c.MaxNumberValue, MinLength = c.MinLength, MinNumberValue = c.MinNumberValue, Name = CamelCasify(c.Name), Prompt = DataDictionary.ResolvePrompt(c.Prompt, user, c.Name), RangeValidationMessage = DataDictionary.ResolvePrompt(c.RangeValidationMessage, user, defaultValue: null), Regex = c.Regex, RegexValidationMessage = DataDictionary.ResolvePrompt(c.RegexValidationMessage, user, defaultValue: null), WireType = c.WireType }); }
//see DataDictionaryToWire private static TableDefResponse ToWire(SecurityGuard guard, TableDef source, IUser user, bool isCriteria) { if (source == null) { return(null); } var wire = new TableDefResponse() { Name = CamelCasify(source.Name), PermissionLevel = (int)guard.FinalLevel(null, source.Name, null), Cols = source.Cols.Select(c => ToWire(guard, source, c, user)).ToList(), PrimaryKeyColName = CamelCasify(source.PrimaryKeyColName), Prompt = DataDictionary.ResolvePrompt(source.Prompt, user, source.Name), IsCriteria = isCriteria, Children = source.Children?.Select(t => ToWire(guard, t, user, false)).ToList() }; return(wire); }