Example #1
0
        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);
        }
Example #2
0
        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;
            }
        }
Example #3
0
 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);
 }
Example #4
0
        public static void Write(this TableKeys tableKeys, CSideWriter writer)
        {
            writer.BeginSection("KEYS");

            foreach (var tableKey in tableKeys)
            {
                tableKey.Write(writer);
            }

            writer.EndSection();
        }
Example #5
0
        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));
        }
Example #6
0
 public static IEnumerable <Invocation> ToInvocations(this TableKeys keys) => keys.Select(k => k.ToInvocation());