public static EditorItem createByDataRow(DataRow _item) { var result = new EditorItem(_item); var table = _item.Table; result.elements = new List <EditorElementItem>(table.Columns.Count); result.rules = new Dictionary <string, string>(); var tableName = _item.Table.TableName; var notNullKeys = TableKeys.GetTableKeys(tableName, TableKeys.KeyType.NotNull); var primaryKey = TableKeys.GetPrimaryKey(tableName); foreach (DataColumn column in _item.Table.Columns) { if (column.ColumnName != primaryKey) { var editor = new EditorElementItem(tableName, column.ColumnName, column.DataType); result.elements.Add(editor); var rule = getRule(column.ColumnName, column.DataType, notNullKeys.Contains(column.ColumnName)); if (!string.IsNullOrEmpty(rule)) { result.rules.Add(column.ColumnName, rule); } } } return(result); }
public EditorElementItem(string tableName, string columnName, Type columnType) { name = columnName; label = TableKeys.GetColumnComment(tableName, columnName); var fkKey = TableKeys.GetColumnRelation(tableName, columnName); bool isFk = !string.IsNullOrEmpty(fkKey.columnName); view = getColumnEditType(columnType, isFk); if (isFk) { options = IdValueItem.getAll(NameDict.city, NameDict.name); } else { var maxLength = TableKeys.GetColumnMaxLength(tableName, columnName); if (maxLength > 0) { attributes = new AttributesItem(maxLength); pattern = PatternItem.getByType(columnType, maxLength); } } if (columnType == typeof(DateTime)) { timepicker = true; } }
public Table(int id, string name) : base(id, name) { Properties = new TableProperties(this); Fields = new TableFields(this); Keys = new TableKeys(this); FieldGroups = new TableFieldGroups(this); Code = new Code.Variable.Code(this); }
public static void Write(this TableKeys tableKeys, CSideWriter writer) { writer.BeginSection("KEYS"); foreach (var tableKey in tableKeys) { tableKey.Write(writer); } writer.EndSection(); }
public HttpResponseMessage Save(string entity) { var tableName = entity.ToUpper(); var body = Request.Content.ReadAsStringAsync().Result; var text = HttpUtility.UrlDecode(body); var table = TableManager.GetTable(tableName); text = text.IndexOf("data=") == 0 ? text.Remove(0, 5) : text; var obj = JsonConvert.DeserializeObject(text) as JObject; if (obj != null && CheckEntityForEdit(entity)) { var newRow = ParseResponse(obj, table.NewRow()); var isNew = false; if (isNew = newRow[NameDict.ID] == DBNull.Value) { newRow[NameDict.ID] = TableManager.GetNewId(tableName); } var id = newRow[NameDict.ID]; string message = null; try { if (isNew) { TableManager.InsertRow(newRow); } else { TableManager.UpdateRecord(TableManager.SelectRowByPrimaryKey(tableName, id), newRow); } message = AfterSave(newRow, obj, isNew); } catch (FbException ex) { if (ex.ErrorCode == 335544349) { var uniqColumns = TableKeys.GetUniqColumns(tableName).Select(t => TableKeys.GetColumnComment(tableName, t)).ToList(); message = "Violation of uniqueness by " + string.Join(", ", uniqColumns); } } if (message != null) { return(CreateResponse(HttpStatusCode.Conflict, message)); } return(CreateResponse(HttpStatusCode.OK, id)); } return(PrepareResponce(null)); }
public static IEnumerable <Invocation> ToInvocations(this TableKeys keys) => keys.Select(k => k.ToInvocation());