Beispiel #1
0
        public static string AsRate(this FapColumn fapColumn, string editAble, string fieldValue)
        {
            string ngModel  = "formData." + fapColumn.ColName;
            string ctrlName = fapColumn.ColName;

            return($"<div id=\"rat-{0}\" class=\"rating inline\"></div><input type=\"text\" {editAble}  class=\"form-control hide\" id=\"{ctrlName}\" name=\"{ctrlName}\" ng-model=\"{ngModel}\" value=\"{fieldValue}\">");
        }
Beispiel #2
0
        /// <summary>
        /// 获取编码类型的字典数据
        /// </summary>
        /// <param name="column"></param>
        /// <param name="dictionaryToExport"></param>
        /// <returns></returns>
        protected void GetCodeDictionaryData(FapColumn column, Dictionary <string, DictionarySheetData> dictionaryToExport)
        {
            //string code = Get30String("C_" + refTable);
            string code = "C_" + column.Id;

            if (!dictionaryToExport.ContainsKey(code))
            {
                IEnumerable <FapDict> dicData = _dataAccessor.Dictionarys(column.ComboxSource);
                if (dicData != null && dicData.Count() > 0)
                {
                    DictionarySheetData dictionarySheetData = new DictionarySheetData();
                    dictionarySheetData.SheetName = code;
                    dictionarySheetData.Data      = new List <DictionaryRowData>();

                    foreach (var item in dicData)
                    {
                        DictionaryRowData dictionaryRowData = new DictionaryRowData();
                        dictionaryRowData.KeyData = new CellData()
                        {
                            Data = item.Code, Type = CellDataType.STRING
                        };
                        dictionaryRowData.ValueData = new CellData()
                        {
                            Data = item.Name, Type = CellDataType.STRING
                        };
                        dictionarySheetData.Data.Add(dictionaryRowData);
                    }

                    dictionaryToExport.Add(code, dictionarySheetData);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// 处理SELECT部分
        /// </summary>
        /// <param name="columnList"></param>
        /// <param name="table"></param>
        /// <param name="selectBuilder"></param>
        private void MakeSelectPartition(FapColumn fCol, SelectBuilder select, Column column)
        {
            string tableAlias = column.Source.Alias;
            int    mcIndex    = 0;

            //AliasedSource table = select.AddTable(new Table($"{fCol.TableName}"), tableAlias);
            //select.AddProjection(table.Column(fCol.ColName));
            //处理MC字段
            if (FapColumn.CTRL_TYPE_COMBOBOX == fCol.CtrlType && !IsGridQuery)
            {
                string refAlias = "b" + (mcIndex++);

                BuildFapDict(select, fCol, column.Source, refAlias);
            }
            else if (FapColumn.CTRL_TYPE_REFERENCE == fCol.CtrlType)
            {
                string refAlias = "b" + (mcIndex++);
                BuildRefrenceName(select, fCol, column.Source, refAlias);
            }

            //处理MC字段的ID字段
            if (this._withId)
            {
                if (FapColumn.CTRL_TYPE_REFERENCE == fCol.CtrlType)
                {
                    string refAlias = "b" + (mcIndex++);
                    BuildRefrenceCode(select, fCol, column.Source, refAlias);
                }
            }
        }
Beispiel #4
0
        public static IEnumerable <Column> ToColumns(this IEnumerable <FapColumn> fapColumns, IDbContext dbContext, IMultiLangService multiLang)
        {
            if (fapColumns.Any())
            {
                if (fapColumns.Any())
                {
                    foreach (FapColumn fc in fapColumns)
                    {
                        if (systemDefaultFields.Contains(fc.ColName))
                        {
                            continue;
                        }
                        yield return(fc.ToColumn(multiLang, dbContext));

                        //表格参照返回MC的时候用
                        if (fc.CtrlType == FapColumn.CTRL_TYPE_REFERENCE)
                        {
                            FapColumn fcMC = (FapColumn)fc.Clone();
                            fcMC.ColName  = fc.ColName + "MC";
                            fcMC.CtrlType = FapColumn.CTRL_TYPE_TEXT;
                            fcMC.ShowAble = 0;
                            yield return(fcMC.ToColumn(multiLang, dbContext));
                        }
                    }
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// 返回数据sql
        /// </summary>
        /// <param name="cols"></param>
        /// <param name="data"></param>
        /// <param name="sqlDesc"></param>
        /// <param name="dialect"></param>
        /// <returns></returns>
        public static string ParsingConditionSql(IEnumerable <FapColumn> cols, IDictionary <string, object> data, string sqlDesc, DatabaseDialectEnum dialect)
        {
            Regex           rgx    = new Regex(MatchBigParantheses);
            MatchCollection matchs = rgx.Matches(sqlDesc);

            foreach (var mtch in matchs)
            {
                var       colLabel = mtch.ToString().TrimStart('{').TrimEnd('}').Trim();
                FapColumn fcol     = cols.FirstOrDefault(c => c.ColComment == colLabel);
                if (fcol != null)
                {
                    if (fcol.ColType == FapColumn.COL_TYPE_INT ||
                        fcol.ColType == FapColumn.COL_TYPE_LONG ||
                        fcol.ColType == FapColumn.COL_TYPE_DOUBLE ||
                        fcol.ColType == FapColumn.COL_TYPE_BOOL)
                    {
                        sqlDesc = sqlDesc.Replace(mtch.ToString(), data[fcol.ColName].ToStringOrEmpty());
                    }
                    else
                    {
                        sqlDesc = sqlDesc.Replace(mtch.ToString(), $"'{data[fcol.ColName].ToStringOrEmpty()}'");
                    }
                }
            }
            sqlDesc = ReplaceFunc(sqlDesc, dialect);
            sqlDesc = ReplaceConstant(sqlDesc);
            string sql = $"select 1 where {sqlDesc}";

            if (dialect != DatabaseDialectEnum.MSSQL)
            {
                sql = $"select 1 from dual where {sqlDesc}";
            }
            return(sql);
        }
Beispiel #6
0
        public static string AsNative(this FapColumn fapColumn, string editAble, string fieldValue)
        {
            string ngModel  = "formData." + fapColumn.ColName;
            string ctrlName = fapColumn.ColName;

            return($"<input  readonly type=\"text\" {editAble}  class=\"form-control\" id=\"{ctrlName}\" name=\"{ctrlName}\" ng-model=\"{ngModel}\" value=\"{fieldValue}\">");
        }
Beispiel #7
0
        public static string AsEmail(this FapColumn fapColumn, string editAble, string fieldValue)
        {
            string ngModel  = "formData." + fapColumn.ColName;
            string ctrlName = fapColumn.ColName;

            return($"<input type=\"email\" class=\"form-control\" id=\"{ctrlName}\"  {editAble} name=\"{ctrlName}\" ng-model=\"{ngModel}\" value=\"{fieldValue}\"/>");
        }
Beispiel #8
0
        public static string AsTextBox(this FapColumn fapColumn, string editAble, string fieldValue)
        {
            string ngModel  = "formData." + fapColumn.ColName;
            string ctrlName = fapColumn.ColName;

            return($"<input type=\"text\" {editAble}  class=\"form-control\" id=\"{ctrlName}\" name=\"{ctrlName}\" ng-model=\"{ngModel}\" value=\"{HtmlEncoder.Default.Encode(fieldValue)}\"/>");
        }
Beispiel #9
0
        public static string AsCheckboxList(this FapColumn fapColumn, string editAble, IEnumerable <FapDict> dlist, IList <string> tempList)
        {
            string        ngModel        = "formData." + fapColumn.ColName;
            string        ctrlName       = fapColumn.ColName;
            StringBuilder sbCheckboxList = new StringBuilder();

            sbCheckboxList.AppendFormat("<div class=\"control-group form-horizontal checkboxlist\"  data-ctrlName='{0}'>", ctrlName);
            if (dlist.Any())
            {
                foreach (dynamic dict in dlist)
                {
                    if (tempList.Contains(dict.Code))
                    {
                        sbCheckboxList.AppendFormat(@"<label>
														<input name='{0}' type='checkbox' ng-model='{1}' value='{2}' data-text='{3}' "                                                         + editAble + @" checked class='ace' />
														<span class='lbl'> {3}</span>
													</label>"                                                    , ctrlName, ngModel, dict.Code, dict.Name);
                    }
                    else
                    {
                        sbCheckboxList.AppendFormat(@"<label>
														<input name='{0}' type='checkbox' ng-model='{1}' value='{2}' data-text='{3}' "                                                         + editAble + @" class='ace' />
														<span class='lbl'> {3}</span>
													</label>"                                                    , ctrlName, ngModel, dict.Code, dict.Name);
                    }
                }
            }
            sbCheckboxList.AppendFormat("</div>");
            return(sbCheckboxList.ToString());
        }
Beispiel #10
0
        public string AddColumnSql(FapColumn fapColumn)
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendLine($"alter table {fapColumn.TableName} add {CreateColumnSql(fapColumn)} ;");
            //if (HasDefaultValueConstraint(fapColumn))
            //{
            //    stringBuilder.AppendLine(string.Format("ALTER TABLE {0} ADD CONSTRAINT DF_{0}_{1} DEFAULT ('{2}') FOR {1};", fapColumn.TableName, fapColumn.ColName, fapColumn.ColDefault));
            //}
            stringBuilder.AppendLine(MakeColumnCommentSql(fapColumn));
            if (fapColumn.IsMultiLang == 1) //多语
            {
                var languageList = typeof(MultiLanguage.MultiLanguageEnum).EnumItems();
                foreach (var item in languageList)
                {
                    FapColumn mf = (FapColumn)fapColumn.Clone();
                    mf.ColName     = fapColumn.ColName + item.Value;
                    mf.ColComment  = fapColumn.ColComment + item.Description;
                    mf.IsMultiLang = 0;
                    stringBuilder.AppendLine($"alter table {mf.TableName} add {CreateColumnSql(mf)} ;");
                    stringBuilder.Append(MakeColumnCommentSql(mf)).AppendLine();
                }
            }
            return(stringBuilder.ToString());
        }
Beispiel #11
0
        private static void BuildRefrenceCode(SelectBuilder select, FapColumn column, AliasedSource table, string refAlias)
        {
            string colName = column.RefCode;

            if (colName.IsPresent())
            {
                colName = "Id";
            }
            SelectBuilder inner      = new SelectBuilder();
            AliasedSource innerTable = inner.AddTable(new Table($"{column.RefTable}"), refAlias);

            inner.AddProjection(innerTable.Column($"{colName}"));
            if (column.MultiAble == 1) //是否多选
            {
            }
            FilterGroup joinFilter = new FilterGroup(Conjunction.And,
                                                     new EqualToFilter(innerTable.Column($"{column.RefID}"), table.Column(column.ColName)),
                                                     new LessThanEqualToFilter(innerTable.Column(FapDbConstants.FAPCOLUMN_FIELD_EnableDate), new ParameterLiteral(FapDbConstants.FAPCOLUMN_PARAM_CurrentDate)),
                                                     new GreaterThanEqualToFilter(innerTable.Column(FapDbConstants.FAPCOLUMN_FIELD_DisableDate), new ParameterLiteral(FapDbConstants.FAPCOLUMN_PARAM_CurrentDate)),
                                                     new EqualToFilter(innerTable.Column(FapDbConstants.FAPCOLUMN_FIELD_Dr), new ParameterLiteral(FapDbConstants.FAPCOLUMN_PARAM_Dr)));

            if (column.RefTable.EqualsWithIgnoreCase(nameof(FapColumn)))
            {
                IFilter filter = new EqualToFilter(innerTable.Column("TableName"), table.Column("TableName"));
                joinFilter.AddFilter(filter);
            }
            inner.AddWhere(joinFilter);
            select.AddProjection(inner, $"{column.ColName}MCID");
        }
Beispiel #12
0
        public override void BeforeDynamicObjectUpdate(FapDynamicObject fapDynamicData)
        {
            FapColumn newColumn = ToFapColumn(fapDynamicData);
            string    fid       = fapDynamicData.Get(nameof(FapColumn.Fid)).ToString();
            FapColumn oriColumn = _dbContext.Get <FapColumn>(fid);
            var       table     = _dbContext.QueryFirstOrDefault <FapTable>("select * from FapTable where TableName=@TableName", new Dapper.DynamicParameters(new { TableName = oriColumn.TableName }));

            if (table.IsSync == 1)
            {
                try
                {
                    if (!newColumn.ColName.EqualsWithIgnoreCase(oriColumn.ColName))
                    {
                        //修改名称,同时alter type
                        _metadataContext.RenameColumn(newColumn, oriColumn.ColName);
                    }
                    else if (!newColumn.ColType.EqualsWithIgnoreCase(oriColumn.ColType) || newColumn.ColLength != oriColumn.ColLength || newColumn.ColPrecision != oriColumn.ColPrecision)
                    {
                        _metadataContext.AlterColumn(newColumn);
                    }
                    //先处理多语字段,之前是多语,现在也是多语
                    if (oriColumn.IsMultiLang == 1 && newColumn.IsMultiLang == 1)
                    {
                        if (!newColumn.ColName.EqualsWithIgnoreCase(oriColumn.ColName))
                        {
                            _metadataContext.RenameMultiLangColumn(newColumn, oriColumn.ColName);
                        }
                        else if (!newColumn.ColType.EqualsWithIgnoreCase(oriColumn.ColType) || newColumn.ColLength != oriColumn.ColLength || newColumn.ColPrecision != oriColumn.ColPrecision)
                        {
                            _metadataContext.AlterMultiLangColumn(newColumn);
                        }
                    }
                    else if (oriColumn.IsMultiLang == 0 && newColumn.IsMultiLang == 1)
                    {
                        //之前不是多语现在是多语
                        _metadataContext.AddMultiLangColumn(newColumn);
                    }
                    if (oriColumn.IsMultiLang == 1 && newColumn.IsMultiLang == 0)
                    {
                        //之前是多语现在不是
                        _metadataContext.DropMultiLangColumn(newColumn);
                    }
                }
                catch (Exception)
                {
                    throw new FapException("物理表修改列失败!");
                }
            }

            //更新多语
            if (!oriColumn.ColComment.EqualsWithIgnoreCase(newColumn.ColComment) || !oriColumn.ColName.EqualsWithIgnoreCase(newColumn.ColName))
            {
                string oriLangkey     = $"{oriColumn.TableName}_{oriColumn.ColName}";
                string newLangkey     = $"{newColumn.TableName}_{newColumn.ColName}";
                string updateMultisql = $"Update {nameof(FapMultiLanguage)} set {nameof(FapMultiLanguage.LangKey)}=@NewLangKey,{nameof(FapMultiLanguage.LangValue)}=@LangValue,{nameof(FapMultiLanguage.LangValueZhCn)}=@LangValue where Qualifier=@Qualifier and LangKey=@LangKey";
                var    param          = new Dapper.DynamicParameters(new { Qualifier = MultiLanguageOriginEnum.FapColumn.ToString(), LangKey = oriLangkey, NewLangKey = newLangkey, LangValue = newColumn.ColComment });
                _dbContext.Execute(updateMultisql, param);
            }
        }
Beispiel #13
0
        public string CreateColumnSql(FapColumn fapColumn)
        {
            StringBuilder sqlBuilder = new StringBuilder();

            sqlBuilder.AppendFormat("[{0}] ", fapColumn.ColName);
            if (FapColumn.COL_TYPE_STRING.Equals(fapColumn.ColType)) //字符串字段需要处理多语情况
            {
                if (fapColumn.ColLength > 4000)
                {
                    sqlBuilder.Append(" VARCHAR(MAX)");
                }
                else
                {
                    sqlBuilder.Append(" VARCHAR(" + (fapColumn.ColLength > 0 ? fapColumn.ColLength : 32) + ")");
                }
            }
            else if (FapColumn.COL_TYPE_PK.Equals(fapColumn.ColType))
            {
                sqlBuilder.Append(" INT NOT NULL IDENTITY(1,1)");
            }
            else if (FapColumn.COL_TYPE_INT.Equals(fapColumn.ColType))
            {
                sqlBuilder.Append(" INT");
            }
            else if (FapColumn.COL_TYPE_LONG.Equals(fapColumn.ColType))
            {
                sqlBuilder.Append(" BIGINT");
            }
            else if (FapColumn.COL_TYPE_DATETIME.Equals(fapColumn.ColType))
            {
                sqlBuilder.Append(" VARCHAR(19)");
            }
            else if (FapColumn.COL_TYPE_DOUBLE.Equals(fapColumn.ColType))
            {
                sqlBuilder.Append(" DECIMAL(20," + (fapColumn.ColPrecision > 0 ? fapColumn.ColPrecision : 1) + ")");
            }
            else if (FapColumn.COL_TYPE_BOOL.Equals(fapColumn.ColType))
            {
                sqlBuilder.Append(" INT");
            }
            else if (FapColumn.COL_TYPE_UID.Equals(fapColumn.ColType))
            {
                sqlBuilder.Append(" VARCHAR(20)");
            }
            else if (FapColumn.COL_TYPE_BLOB.Equals(fapColumn.ColType))
            {
                //sqlBuilder.Append(" BINARY");
                sqlBuilder.Append(" VARCHAR(MAX)");
            }
            else if (FapColumn.COL_TYPE_CLOB.Equals(fapColumn.ColType))
            {
                sqlBuilder.Append(" TEXT");
            }
            else
            {
                sqlBuilder.Append(" VARCHAR(" + (fapColumn.ColLength > 0 ? fapColumn.ColLength : 32) + ")");
            }
            return(sqlBuilder.ToString());
        }
Beispiel #14
0
        /// <summary>
        /// JObject对象转换成FapDynamicObject对象
        /// </summary>
        /// <param name="jobj"></param>
        /// <param name="dynamciObj">FapDynamicObject对象</param>
        /// <param name="excludeKeys">指定字段,排除要赋值的字段</param>
        /// <returns></returns>
        public static FapDynamicObject ToFapDynamicObject(this JObject jobj, IEnumerable <FapColumn> columnList, params string[] excludeKeys)
        {
            FapDynamicObject        dynamciObj = new FapDynamicObject(columnList);
            IEnumerable <JProperty> ojp        = jobj.Properties();

            foreach (var item in ojp)
            {
                bool isExclude = false;
                foreach (var excludeKey in excludeKeys)
                {
                    if (excludeKey.Equals(item.Name))
                    {
                        isExclude = true;
                        break;
                    }
                }

                if (isExclude)
                {
                    continue;
                }

                if ("id".Equals(item.Name))
                {
                    if (!(string.IsNullOrEmpty(item.Value.ToString()) || "_empty".Equals(item.Value.ToString())))
                    {
                        dynamciObj.SetValue("Id", item.Value.ToString());
                    }
                }
                else
                {
                    FapColumn column = columnList.Where(c => c.ColName == item.Name).FirstOrDefault();
                    if (column != null)
                    {
                        if (column.IsIntType()) //整型
                        {
                            dynamciObj.SetValue(item.Name, item.Value.ToInt());
                        }
                        else if (column.IsLongType()) //长整型
                        {
                            dynamciObj.SetValue(item.Name, item.Value.ToLong());
                        }
                        else if (column.IsDoubleType()) //浮点型
                        {
                            dynamciObj.SetValue(item.Name, item.Value.ToDouble());
                        }
                        else //字符串
                        {
                            dynamciObj.SetValue(item.Name, item.Value.ToString());
                        }
                    }
                    else
                    {
                        dynamciObj.SetValue(item.Name, item.Value.ToString());
                    }
                }
            }
            return(dynamciObj);
        }
Beispiel #15
0
        public string RenameColumnSql(FapColumn newColumn, string oldName)
        {
            StringBuilder builder = new StringBuilder();

            builder.AppendLine($"alter table {newColumn.TableName} change  column {oldName} {CreateColumnSql(newColumn)};");

            return(builder.ToString());
        }
Beispiel #16
0
        public static string AsPassword(this FapColumn fapColumn, string editAble, string fieldValue)
        {
            //密码控件不赋值
            string ngModel  = "formData." + fapColumn.ColName;
            string ctrlName = fapColumn.ColName;

            return($"<input type=\"password\" {editAble} class=\"form-control\"  id=\"{ctrlName}\" name=\"{ctrlName}\" ng-model=\"{ngModel}\"/>");
        }
Beispiel #17
0
        public string AlterColumnSql(FapColumn fapColumn)
        {
            StringBuilder builder = new StringBuilder();

            builder.AppendLine($"alter table {fapColumn.TableName} modify  column {CreateColumnSql(fapColumn)};");

            return(builder.ToString());
        }
Beispiel #18
0
        public string RenameColumnSql(FapColumn newColumn, string oldName)
        {
            StringBuilder builder = new StringBuilder();

            builder.AppendLine($"EXEC sp_rename '{newColumn.TableName}.{oldName}', '{newColumn.ColName}' , 'COLUMN';");
            builder.AppendLine(AlterColumnSql(newColumn));
            return(builder.ToString());
        }
Beispiel #19
0
 private static void SetEditRulesNumber(FapColumn fapColumn, EditRules editRules)
 {
     editRules.Number = true;
     if (fapColumn.MaxValue != 0 || fapColumn.MinValue != 0)
     {
         editRules.MaxValue = fapColumn.MaxValue;
         fapColumn.MinValue = fapColumn.MinValue;
     }
 }
Beispiel #20
0
        public override void AfterEntityInsert(object entity)
        {
            FapColumn fapColumn = entity as FapColumn;
            string    langkey   = $"{fapColumn.TableName}_{fapColumn.ColName}";

            _dbContext.Insert(new FapMultiLanguage {
                Qualifier = MultiLanguageOriginEnum.FapColumn.ToString(), LangKey = langkey, LangValue = fapColumn.ColComment
            });
        }
Beispiel #21
0
 /// <summary>
 /// 是否colspan占一行
 /// </summary>
 /// <param name="column"></param>
 /// <returns></returns>
 private bool IsColSpan(FapColumn column)
 {
     return(column.CtrlType == FapColumn.CTRL_TYPE_MEMO ||
            column.CtrlType == FapColumn.CTRL_TYPE_IMAGE ||
            column.CtrlType == FapColumn.CTRL_TYPE_FILE ||
            column.CtrlType == FapColumn.CTRL_TYPE_RICHTEXTBOX ||
            column.CtrlType == FapColumn.CTRL_TYPE_NATIVE ||
            column.CtrlType == FapColumn.CTRL_TYPE_RANGE);
 }
Beispiel #22
0
        public static string AsRange(this FapColumn fapColumn, string editAble, string fieldValue)
        {
            string ngModel  = "formData." + fapColumn.ColName;
            string ctrlName = fapColumn.ColName;

            if (fieldValue.IsMissing() || fieldValue == "0")
            {
                fieldValue = "1,2";
            }
            return($"<input  type=\"hidden\"   class=\"form-control slider-input\" id=\"{ctrlName}\" name=\"{ctrlName}\" ng-model=\"{ngModel}\" value=\"{fieldValue}\">");
        }
Beispiel #23
0
        private void RecurseFilterDesc(string parentGroup, string tableName, IEnumerable <JObject> jsonos, IEnumerable <FapColumn> cols, List <FilterDescModel> sqlBuilder)
        {
            foreach (var jsono in jsonos)
            {
                string         group = jsono.GetValue("groupOp").ToString() == "AND" ? "所有" : "任意";//AND、OR
                List <JObject> rules = jsono.GetValue("rules").Children <JObject>().ToList();
                int            i     = 0;
                if (rules.Count > 0)
                {
                    foreach (JObject o in rules)
                    {
                        //特殊处理MC参照字段
                        string colName = o.GetValue("field").ToString();
                        string op      = o.GetValue("op").ToString();
                        string data    = o.GetValue("data").ToString();
                        if (colName.EndsWith("MC", false, System.Globalization.CultureInfo.CurrentCulture))
                        {
                            colName = colName.Substring(0, colName.Length - 2);
                        }
                        FapColumn col = cols.FirstOrDefault(c => c.ColName == colName);
                        if (col.CtrlType == FapColumn.CTRL_TYPE_COMBOBOX)
                        {
                            data = _dbContext.Dictionary(col.ComboxSource, data)?.Name;
                        }

                        if (!string.IsNullOrEmpty(op))// && !string.IsNullOrEmpty(data))
                        {
                            FilterDescModel model = new FilterDescModel();
                            i++;
                            if (i != 1)
                            {
                                model.Group = group;
                            }
                            model.FilterDesc   = col.ColComment;
                            model.FilterOper   = Q2OperDesc[op];
                            model.FilterResult = data;
                            sqlBuilder.Add(model);
                        }
                    }


                    //处理AND和OR
                    //sqlBuilder.Append(" ").Append(parentGroup).Append(" ");
                }

                //子条件
                if (jsono.GetValue("groups") != null)
                {
                    List <JObject> subs = jsono.GetValue("groups").Children <JObject>().ToList();

                    RecurseFilterDesc(group, tableName, subs, cols, sqlBuilder);
                }
            }
        }
Beispiel #24
0
        public static string AsRichTextBox(this FapColumn fapColumn, string fieldValue)
        {
            string ctrlName = fapColumn.ColName;
            string required = " data-nullable=1 ";

            if (fapColumn.NullAble == 0 && fapColumn.ShowAble == 1)
            {
                required = " data-nullable=0 ";
            }
            return($"<div class=\"form-control wysiwyg-editor\" name=\"{ctrlName}\" id=\"{ctrlName}\" {required} >{fieldValue}</div>");
        }
Beispiel #25
0
        public string DropMultiLangColumnSql(FapColumn fapColumn)
        {
            StringBuilder builder      = new StringBuilder();
            var           languageList = typeof(MultiLanguage.MultiLanguageEnum).EnumItems();

            foreach (var lang in languageList)
            {
                string colName = fapColumn.ColName + lang.Value;
                builder.AppendLine($"alter table {fapColumn.TableName} drop column {colName};");
            }
            return(builder.ToString());
        }
Beispiel #26
0
        public string AlterColumnSql(FapColumn fapColumn)
        {
            StringBuilder builder = new StringBuilder();

            //if (HasDefaultValueConstraint(fapColumn))
            //{
            //    builder.AppendLine($"ALTER TABLE {fapColumn.TableName} DROP CONSTRAINT  DF_{fapColumn.TableName}_{fapColumn.ColName};");
            //}
            builder.AppendLine($"alter table {fapColumn.TableName} alter column {CreateColumnSql(fapColumn)};");

            return(builder.ToString());
        }
Beispiel #27
0
        public static string AsFile(this FapColumn fapColumn, string editAble, string frmid, string fieldValue, string lableName)
        {
            string        ngModel  = "formData." + fapColumn.ColName;
            string        ctrlName = fapColumn.ColName;
            StringBuilder sbFile   = new StringBuilder();

            sbFile.AppendFormat("<button id=\"file{0}{1}\" " + editAble + " class=\"btn btn-info\" type=\"button\"><i class=\"ace-icon fa fa-paperclip\"></i>附件</button>", frmid, ctrlName).AppendLine();
            sbFile.AppendFormat("<input type=\"text\" class=\"form-control attachment hidden\"  id=\"{0}\" name=\"{0}\" ng-model=\"{1}\"  value=\"{2}\" data-text=\"{3}\" data-nullable={4} data-editable={5} />", ctrlName, ngModel, fieldValue, lableName, fapColumn.NullAble, fapColumn.EditAble).AppendLine();
            sbFile.AppendFormat("<label class=\"text-muted\">支持文件格式({0})</label>", fapColumn.FileSuffix.IsMissing() ? "*.*" : fapColumn.FileSuffix).AppendLine();
            sbFile.AppendLine($"<div id=\"{ctrlName}_filelist\"></div>");
            return(sbFile.ToString());
        }
Beispiel #28
0
        public static string AsImage(this FapColumn fapColumn, string fieldValue)
        {
            string        ngModel  = "formData." + fapColumn.ColName;
            string        ctrlName = fapColumn.ColName;
            StringBuilder sbImage  = new StringBuilder();

            sbImage.AppendLine("<span class=\"profile-picture\">");
            sbImage.AppendFormat("       <img id=\"avatar{0}\" data-pk=\"{1}\" style=\"width:160px;\" class=\"editable img-responsive\"  src=\"{2}\" />", ctrlName, fieldValue, $"/Component/Photo/{fieldValue}?v={DateTime.Now.Ticks}").AppendLine();
            sbImage.AppendLine("   </span>");
            sbImage.AppendFormat("    <input type=\"text\" id=\"{0}\" name=\"{0}\" ng-model=\"{1}\"  value=\"{2}\"  class=\"form-control hidden\" />", ctrlName, ngModel, fieldValue).AppendLine();
            return(sbImage.ToString());
        }
Beispiel #29
0
        public static string AsCombobox(this FapColumn fapColumn, string editAble, IEnumerable <FapDict> dicList, List <string> tempList, string fieldValue)
        {
            string        ngModel    = "formData." + fapColumn.ColName;
            string        ctrlName   = fapColumn.ColName;
            StringBuilder sbCombobox = new StringBuilder();

            if (fapColumn.MultiAble == 0)
            {
                sbCombobox.AppendFormat(" <select id=\"{0}\" name=\"{0}\" ng-model=\"{1}\" " + editAble + " class=\"form-control chosen-select\" data-placeholder=\"请选择\" >", ctrlName, ngModel).AppendLine();
                sbCombobox.AppendLine("<option value=''></option>");
                if (dicList.Any())
                {
                    foreach (FapDict dict in dicList)
                    {
                        if (dict.Code == fieldValue)
                        {
                            sbCombobox.AppendLine("<option value='" + dict.Code + "' selected>" + dict.Name + "</option>");
                        }
                        else
                        {
                            sbCombobox.AppendLine("<option value='" + dict.Code + "' >" + dict.Name + "</option>");
                        }
                    }
                }
                sbCombobox.AppendLine("</select>");
            }
            else
            {
                sbCombobox.AppendFormat("<div class=\"control-group form-horizontal checkboxlist\"  data-ctrlName='{0}'>", ctrlName);
                if (dicList.Any())
                {
                    foreach (FapDict dict in dicList)
                    {
                        if (tempList.Contains(dict.Code))
                        {
                            sbCombobox.AppendFormat(@"<label>
														<input name='{0}' type='checkbox' ng-model='{1}' value='{2}' data-text='{3}' "                                                         + editAble + @" checked class='ace' />
														<span class='lbl'> {3}</span>
													</label>"                                                    , ctrlName, ngModel, dict.Code, dict.Name);
                        }
                        else
                        {
                            sbCombobox.AppendFormat(@"<label>
														<input name='{0}' type='checkbox' ng-model='{1}' value='{2}' data-text='{3}' "                                                         + editAble + @" class='ace' />
														<span class='lbl'> {3}</span>
													</label>"                                                    , ctrlName, ngModel, dict.Code, dict.Name);
                        }
                    }
                }
                sbCombobox.AppendFormat("</div>");
            }
            return(sbCombobox.ToString());
        }
Beispiel #30
0
        public static string AsDateTime(this FapColumn fapColumn, string editAble, string fieldValue)
        {
            string        ngModel    = "formData." + fapColumn.ColName;
            string        ctrlName   = fapColumn.ColName;
            StringBuilder sbDateTime = new StringBuilder();

            sbDateTime.AppendLine("<span class=\"input-icon input-icon-right\">");
            sbDateTime.AppendFormat("                     <input class=\"form-control datetime-picker\"  id=\"{0}\" name=\"{0}\" " + editAble + " ng-model=\"{1}\" type=\"text\" value=\"{2}\"/>", ctrlName, ngModel, fieldValue).AppendLine();
            //sbFormGroup.AppendLine("                    <span class=\"input-group-addon\">");
            sbDateTime.AppendLine("                        <i class=\"ace-icon fa fa-clock-o block\"></i>");
            sbDateTime.AppendLine("                    </span>");
            // sbFormGroup.AppendLine("                </div>");
            return(sbDateTime.ToString());
        }