示例#1
0
        public static async Task <int> InsertUserFilterRuleJobDetailAsync(UserFilterRuleJobDetail detail)
        {
            string sql = @"
INSERT Configuration..tbl_UserFilterRuleJobDetail
        ( JobId ,
          TableName ,
          SearchKey ,
          SearchValue ,
          JoinType ,
          BasicAttribute ,
          SecondAttribute ,
          CompareType ,
          CreateDateTime ,
          LastUpdateDateTime,
          BatchID
        )
VALUES  ( @JobId , -- JobId - int
          @TableName , -- TableName - nvarchar(100)
          @SearchKey , -- SearchKey - nvarchar(200)
          @SearchValue , -- SearchValue - nvarchar(500)
          @JoinType , -- JoinType - nvarchar(100)
          @BasicAttribute , -- BasicAttribute - nvarchar(100)
          @SecondAttribute , -- SecondAttribute - nvarchar(100)
          @CompareType , -- CompareType - nvarchar(100)
          GETDATE() , -- CreateDateTime - datetime
          GETDATE() , -- LastUpdateDateTime - datetime
          @BatchID
        );SELECT  @@IDENTITY; ";

            using (var dbhelper = DbHelper.CreateDbHelper(false))
            {
                using (var cmd = new SqlCommand(sql))
                {
                    cmd.CommandType = CommandType.Text;
                    var props = detail.GetType().GetProperties();
                    foreach (PropertyInfo prop in props)
                    {
                        object value = prop.GetValue(detail);

                        if (prop.Name.Equals("PKID", StringComparison.OrdinalIgnoreCase) ||
                            prop.PropertyType == typeof(DateTime))
                        {
                            continue;
                        }
                        if (prop.PropertyType.IsEnum)
                        {
                            cmd.Parameters.Add(new SqlParameter(string.Concat("@", prop.Name), value.ToString()));
                        }
                        else
                        {
                            cmd.Parameters.Add(new SqlParameter(string.Concat("@", prop.Name), value));
                        }
                    }
                    var result = await dbhelper.ExecuteScalarAsync(cmd);

                    return(Convert.IsDBNull(result) ? 0 : Convert.ToInt32(result));
                }
            }
        }
        public static async Task <bool> InsertUserFilterRuleDetailFromWebAsync(string firstCategory,
                                                                               string secondCategory, JoinType jointype, string tableName, NameValueCollection formdata, int jobid)
        {
            var basedetail = new UserFilterRuleJobDetail()
            {
                TableName       = tableName,
                BasicAttribute  = firstCategory,
                SecondAttribute = secondCategory,
                JoinType        = jointype,
                JobId           = jobid,
                BatchID         = Guid.NewGuid().ToString()
            };

            if (formdata != null && formdata.AllKeys.Any())
            {
                List <string> skipkeys = new List <string>();
                //选日期时间或据今日
                if (formdata.AllKeys.Any(x => x.EndsWith("_selecttype")))
                {
                    string key        = formdata.AllKeys.First(x => x.EndsWith("_selecttype"));
                    string selecttype = formdata[key];
                    string colname    = key.Replace("_selecttype", "");

                    skipkeys.Add(key);
                    if (string.Equals(selecttype, "date"))
                    {
                        skipkeys.Add(colname + "_from_date");
                    }
                    else
                    {
                        skipkeys.Add(colname + "_start_date");
                        skipkeys.Add(colname + "_end_date");
                    }
                }
                //订单统计字段
                if (formdata.AllKeys.Any(x => string.Equals("countcoltype", x)))
                {
                    skipkeys.Add("countcoltype");
                    skipkeys.Add("countcoltype_start");
                    skipkeys.Add("countcoltype_end");
                    var detail = basedetail.DeepCopy();

                    detail.SearchKey   = formdata["countcoltype"];
                    detail.SearchValue = formdata["countcoltype_start"];
                    detail.CompareType = CompareType.GreaterOrEqual;

                    await Repository.UserFilterRule.InsertUserFilterRuleJobDetailAsync(detail);

                    detail.SearchValue = formdata["countcoltype_end"];
                    detail.CompareType = CompareType.LessOrEqual;
                    await Repository.UserFilterRule.InsertUserFilterRuleJobDetailAsync(detail);
                }
                if (formdata.AllKeys.Any(x => x.EndsWith("_start_time")) || formdata.AllKeys.Any(x => x.EndsWith("_end_time")))
                {
                    skipkeys.AddRange(formdata.AllKeys.Where(x => x.EndsWith("_start_time")));
                    skipkeys.AddRange(formdata.AllKeys.Where(x => x.EndsWith("_end_time")));
                }
                foreach (var datakey in formdata.AllKeys)
                {
                    if (skipkeys.Contains(datakey))
                    {
                        continue;
                    }
                    var datevalue = formdata[datakey];
                    var detail    = basedetail.DeepCopy();

                    if (datakey.EndsWith("start_date") || datakey.EndsWith("end_date"))
                    {
                        detail.CompareType = datakey.EndsWith("start_date")
                            ? CompareType.GreaterOrEqual
                            : CompareType.LessOrEqual;
                        var colname = datakey.Replace("_start_date", "").Replace("_end_date", "");
                        if (formdata.AllKeys.Any(x => x == colname + "_start_time"))
                        {
                            skipkeys.Add(colname + "_start_time");
                            datevalue = datevalue + " " + formdata[colname + "_start_time"];
                        }
                        else if (formdata.AllKeys.Any(x => x == colname + "_end_time"))
                        {
                            skipkeys.Add(colname + "_end_time");
                            datevalue = datevalue + " " + formdata[colname + "_end_time"];
                        }
                        detail.SearchKey   = colname;
                        detail.SearchValue = datevalue;
                    }
                    else if (datakey.EndsWith("_from_date"))
                    {
                        var colname = datakey.Replace("_from_date", "");
                        detail.SearchKey   = colname;
                        detail.SearchValue = datevalue;
                        detail.CompareType = CompareType.DateFromToday;
                    }
                    else if (datakey.EndsWith("_start") || datakey.EndsWith("_end"))
                    {
                        detail.CompareType = datakey.EndsWith("_start")
                            ? CompareType.GreaterOrEqual
                            : CompareType.LessOrEqual;
                        detail.SearchKey   = datakey.Replace("_start", "").Replace("_end", "");
                        detail.SearchValue = formdata[datakey];
                    }
                    else
                    {
                        detail.SearchKey   = datakey;
                        detail.SearchValue = formdata[datakey];
                        detail.CompareType = CompareType.Equal;
                    }
                    var result = await Repository.UserFilterRule.InsertUserFilterRuleJobDetailAsync(detail);
                }
            }
            return(true);
        }