Beispiel #1
0
        /// <summary>
        /// 根据唯一ID获取对象,返回实体,如果有多个则报错
        /// </summary>
        /// <param name="id">ID</param>
        /// <returns>返回实体类</returns>
        public async Task <T> GetModelByIdAsync <T, TId>(TId id) where T : IId <TId>, new()
        {
            if (CommOp.IsDefault(id))
            {
                return(default(T));
            }
            var    pid  = CreateParameter("ID", id);
            Type   type = typeof(T);
            string sql  = $"SELECT COUNT(1) FROM {AddFix(type.Name)} where ID=@ID";
            int    cnt  = CommOp.ToInt(await this.ExecGetObjectAsync(sql, pid));

            if (cnt == 0)
            {
                return(default(T));
            }
            if (cnt > 1)
            {
                throw new Exception("根据唯一的ID查到不止一条记录");
            }

            sql = $"SELECT * FROM {AddFix(type.Name)} where ID=@ID";
            List <IDataParameter> list = new List <IDataParameter>();
            DataTable             dt   = await this.ExecDataTableAsync(sql, pid);

            if (dt.Rows.Count == 1)
            {
                return(RowToModel <T>(dt.Rows[0]));
            }
            return(default(T));
        }
        //保存扩展属性
        private void SaveExts(Base_Catalog cat, NameValueCollection form)
        {
            cat.Exts.Clear();
            var ids           = form["ExtId"].Split(',');
            var names         = form["ExtName"].Split(',');
            var defaultValues = form["DefaultValue"].Split(',');
            var dataTypes     = form["DataType"].Split(',');
            var maxLengths    = form["MaxLength"].Split(',');
            //var allownulls = form["AllowNull"].Split(',');
            var states          = form["ExtState"].Split(',');
            var dataSourceTypes = form["DataSourceType"].Split(',');
            var dataSources     = form["DataSource"].Split(',');

            for (int i = 1; i < names.Length; i++)
            {
                if (!string.IsNullOrEmpty(names[i]))
                {
                    Base_CatalogExt ext = new Base_CatalogExt
                    {
                        Id           = CommOp.ToInt(ids[i]),
                        CatalogId    = cat.Id,
                        Name         = names[i],
                        DefaultValue = defaultValues[i],
                        DataType     = CommOp.ToEnum <ExtDataType>(dataTypes[i]),
                        State        = states[i] == "" ? ArticleState.Published : CommOp.ToInt(states[i]),
                        Ord          = i,
                        //AllowNull = CommOp.ToBool(allownulls[i] == "on" ? true : false),
                        MaxLength      = CommOp.ToInt(maxLengths[i]),
                        DataSourceType = CommOp.ToEnum <ExtDataSourceType>(dataSourceTypes[i]),
                        DataSource     = dataSources[i]
                    };
                    cat.Exts.Add(ext);
                }
            }
        }
Beispiel #3
0
        //        --查询条件也有子表
        //select u.*, r.*, ur.* from app_user u left join app_user_role ur on u.id = ur.user_id
        //left join app_role r on r.id = ur.role_id where u.id in
        //(select id from
        //(select id, failed_try, rownum r from (
        //select distinct(u.id), u.failed_try from app_user u left join app_user_role ur on u.id = ur.user_id
        //left join app_role r on r.id = ur.role_id
        // where u.name like '测试用户%' and r.name like '%管理员%'
        //  order by u.failed_try)g
        //)h where r between 1 and 3)
        // order by u.failed_try;

        async Task <IDataReader> ExecMasterDetailPageReaderAsync(MasterDetailPagerInfo pager, params IDataParameter[] sp)
        {
            var    tp         = GetSortFieldFromOrderBy(pager.OrderBy, pager.KeyId);
            string sortFields = tp[1];
            string innerSorts = tp[2];
            string orderby    = tp[0];
            string innerId    = pager.KeyId.Split('.').Last();
            string filter     = pager.Filter.IsEmpty() ? "" : " where " + pager.Filter;
            string sql        = $"select COUNT(distinct({pager.KeyId})) from "
                                + $"{pager.TablesAndJoins}{filter}";

            if (!innerSorts.IsEmpty())
            {
                innerSorts = "," + innerSorts;
            }
            if (!sortFields.IsEmpty())
            {
                sortFields = "," + sortFields;
            }
            pager.RecordCount = CommOp.ToInt(await Helper.ExecGetObjectAsync(sql, sp));
            sql = $"select {pager.Fields} from {pager.TablesAndJoins} where{Environment.NewLine}" +
                  $" {pager.KeyId} in{Environment.NewLine}"
                  + $"(select {innerId} from"
                  + $"(select {innerId}{innerSorts},rownum r from({Environment.NewLine}"
                  + $"select distinct({pager.KeyId}){sortFields} from {pager.TablesAndJoins}{filter}{Environment.NewLine}"
                  + $"order by {orderby})g__{Environment.NewLine}"
                  + $")h__ where r between {pager.StartIndex + 1} and {pager.StartIndex + pager.PageSize}){Environment.NewLine}"
                  + $"order by {orderby}";
            return(await Helper.ExecReaderAsync(sql, sp));
        }
Beispiel #4
0
        public JsonResult Delete(string ids)
        {
            int[] idArr = CommOp.ToIntArray(ids, ',');

            LogManager.DeleteByKeys(idArr);
            return(JsonTips("success", "Log_Delete_Success"));
        }
Beispiel #5
0
        public virtual LoginState ResetPassword(PasswordResetModel model)
        {
            var _context = new ModelContext();

            // var user = _context.UserProfiles.Find(2);
            MemberShip member = _context.Set <MemberShip>().FirstOrDefault(m => m.UserName.Equals(model.UserName, StringComparison.OrdinalIgnoreCase));

            if (member == null)
            {
                return(LoginState.UserNotExist);
            }

            if (model.Password != model.ConfirmPassword && model.IsResetPass != 1)
            {
                return(LoginState.PasswordError);
            }

            if (model.ConfirmToken != member.ConfirmationToken && model.IsResetPass != 1)
            {
                return(LoginState.TokenError);
            }
            member.PasswordSalt        = CommOp.NewId();
            member.Password            = Encryption.MD5(model.Password + member.PasswordSalt);
            member.PasswordChangedDate = DateTime.Now;
            //对于系统重置的密码,强制吧修改密码日期移除让用户登陆重新修改面貌
            if (model.IsResetPass == 1)
            {
                member.PasswordChangedDate = null;
            }
            _context.SaveChanges();
            return(LoginState.OK);
        }
Beispiel #6
0
        /// <summary>
        /// 根据表名获取与表相关的约束(主外键关系)
        /// </summary>
        /// <param name="tableName"></param>
        /// <returns></returns>
        private IEnumerable <DBRelation> GetTableRelation()
        {
            List <DBRelation> tableRelas = new List <DBRelation>();
            const string      sqlstr     = @"SELECT ConstrName=OBJECT_NAME(b.constid)
                                     ,ForeignTableId=b.fkeyid
	                                 ,ForeignTableName=object_name(b.fkeyid)
	                                 ,ForeignKey=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
	                                 ,PrimaryTableId=b.rkeyid
	                                 ,PrimaryTableName=object_name(b.rkeyid)
	                                 ,PrimaryKey=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
	                                 ,IsUpdateCascade=ObjectProperty(a.id,'CnstIsUpdateCascade') 
	                                 ,IsDeleteCascade=ObjectProperty(a.id,'CnstIsDeleteCascade')
	                                 FROM sysobjects a
	                                 join sysforeignkeys b on a.id=b.constid
	                                 join sysobjects c on a.parent_obj=c.id
	                                 where a.xtype='f' AND c.xtype='U'"    ;
            var tb = _helper.ExecDataTable(sqlstr);

            for (int i = 0; i < tb.Rows.Count; i++)
            {
                DBRelation tableRela = new DBRelation
                {
                    Id              = i + 1,
                    ConstrName      = CommOp.ToStr(tb.Rows[i]["ConstrName"]),//约束名
                    PrimaryTable    = CommOp.ToStr(tb.Rows[i]["PrimaryTableName"]),
                    ForeignTable    = CommOp.ToStr(tb.Rows[i]["ForeignTableName"]),
                    PrimaryKey      = CommOp.ToStr(tb.Rows[i]["PrimaryKey"]),
                    ForeignKey      = CommOp.ToStr(tb.Rows[i]["ForeignKey"]),
                    IsUpdateCascade = CommOp.ToStr(tb.Rows[i]["IsUpdateCascade"]) == "1",
                    IsDeleteCascade = CommOp.ToStr(tb.Rows[i]["IsDeleteCascade"]) == "1",
                };
                tableRelas.Add(tableRela);
            }
            return(tableRelas);
        }
Beispiel #7
0
        //构造分页主从表查询分页对象
        private IPager BuildMasterDetailPager(DataGateKey gkey, IDictionary <string, object> parameters)
        {
            var mainModel = gkey.TableJoins[0].Table;

            var tableMetas = gkey.TableJoins.Select(m =>
            {
                return(m.Table);
            });
            int pageSize = CommOp.ToInt(GetValueRemoveKey(parameters, "pageSize"));

            if (pageSize <= 0)
            {
                pageSize = Consts.DefaultPageSize;
            }
            return(new MasterDetailPagerInfo
            {
                TablesAndJoins = gkey.JoinSubTerm,
                Fields = gkey.QueryFieldsTerm,
                OrderBy = gkey.OrderBy,
                Filter = FormatFilter(gkey.Filter, tableMetas.ToArray()),
                KeyId = $"{gkey.TableJoins[0].Alias ?? mainModel.FixDbName}.{mainModel.PrimaryKey.FixDbName}",
                PageIndex = Math.Max(1, CommOp.ToInt(GetValueRemoveKey(parameters, "pageIndex"))) - 1,
                PageSize = pageSize,
            });
        }
Beispiel #8
0
        /// <summary>
        /// 如果有Sql语句,直接根据Sql生成分页
        /// </summary>
        /// <param name="gkey"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        private IPager BuildSqlPager(DataGateKey gkey, IDictionary <string, object> parameters)
        {
            var    mainModel = GetMainTable(gkey);
            string filter    = FormatFilter(gkey.Filter, mainModel);

            if (!filter.IsEmpty())
            {
                filter = " where " + filter;
            }

            string sql = $"{gkey.Sql}{filter}";

            int pageSize = CommOp.ToInt(GetValueRemoveKey(parameters, "pageSize"));

            if (pageSize <= 0)
            {
                pageSize = Consts.DefaultPageSize;
            }
            DBPagerInfo pager = new DBPagerInfo
            {
                Query     = sql,
                KeyId     = mainModel.PrimaryKey.FixDbName,
                PageIndex = Math.Max(1, CommOp.ToInt(GetValueRemoveKey(parameters, "pageIndex"))) - 1,
                PageSize  = pageSize,
                OrderBy   = gkey.OrderBy,
            };

            return(pager);
        }
Beispiel #9
0
 /// <summary>
 /// 合并所有来自其他程序集的资源到主资源,前提是资源文件在对应项目的App_Data文件夹下
 /// </summary>
 /// <param name="resNamespaces">资源所在的命名空间名称列表</param>
 /// <param name="overwriteExists">是否覆盖已经定义的资源</param>
 public static void CombinAssemblyResx(IEnumerable <Assembly> assemblys, bool overwriteExists = false)
 {
     foreach (var ns in assemblys)
     {
         foreach (string cultureName in GetUsedCultureNames())
         {
             string resName = "app_data/customstrings." + cultureName.ToLower() + ".resx";
             Stream stream  = GetGResources(ns, resName) as Stream;
             if (stream == null)
             {
                 continue;
             }
             ResXResourceReader reader = new ResXResourceReader(stream);
             var coll = GetCollection(cultureName);
             foreach (DictionaryEntry d in reader)
             {
                 if ((coll[CommOp.ToStr(d.Key)].IsEmpty() || overwriteExists) &&
                     !CommOp.ToStr(d.Value).IsEmpty())
                 {
                     coll[CommOp.ToStr(d.Key)] = CommOp.ToStr(d.Value);
                 }
             }
             reader.Close();
         }
     }
 }
        public static object GetExt(this Base_Article article, Base_CatalogExt catExt)
        {
            if (catExt == null)
            {
                return(null);
            }
            var artExt = article.Exts.FirstOrDefault(ext => ext.CatlogExtId == catExt.Id);

            if (artExt == null)
            {
                return(null);
            }

            switch ((ExtDataType)catExt.DataType)
            {
            case ExtDataType.Currency:
                return(CommOp.ToDecimalNull(artExt.Value));

            case ExtDataType.DateAndTime:
            case ExtDataType.Date:
                return(CommOp.ToDateTimeNull(artExt.Value));

            case ExtDataType.SingleNumber:
                return(CommOp.ToIntNull(artExt.Value));

            case ExtDataType.Bool:
                return(CommOp.ToBool(artExt.Value));

            default:
                return(artExt.Value);
            }
        }
Beispiel #11
0
        /// <summary>
        /// 获取用户所有落在某个时间段的日程表事件,只要是起始时间或结束时间在指定范围都算
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <param name="startTime">起始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <returns></returns>
        public IEnumerable <EventModel> GetEvents(int userId, DateTime startTime, DateTime endTime)
        {
            //转为yyyy-MM-dd HH:mm:ss标准格式以便在数据库中以字符串数据规则进行比对
            string starts        = CommOp.ToTimeStr(startTime);
            string ends          = CommOp.ToTimeStr(endTime);
            int    startTimeId   = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.StartTime);
            int    endTimeId     = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.EndTime);
            int    alertBeforeId = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.AlertBefore);
            int    urlId         = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.ProcessUrl);

            return(_article.GetAllInCatalog(ScheduleEvent.Root.Id)
                   .Where(ca => ca.Article.EditorId == userId
                          //不是属于通知
                          && ca.Article.Options < ScheduleEvent.OptionNotice)
                   .Select(ca => new EventModel
            {
                start = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == startTimeId).Value,
                end = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == endTimeId).Value,
                caId = ca.Id,
                title = ca.Article.Title,
                alertBefore = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == alertBeforeId).Value,
                editable = ca.Article.Options == ScheduleEvent.OptionReadOnly,
                finished = ca.Article.State == ScheduleEvent.EventFinished,
                url = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == urlId).Value,
            })
                   .Where(r => (r.start != null && starts.CompareTo(r.start) <= 0 && ends.CompareTo(r.start) >= 0) ||
                          (r.end != null && starts.CompareTo(r.end) <= 0 && ends.CompareTo(r.end) >= 0))
                   .ToList());
        }
Beispiel #12
0
        public IDataParameter CreateImageParameter(string parameterName, byte[] value)
        {
            var p = new SQLiteParameter(parameterName, DbType.Object);

            p.Value = CommOp.TestNull(value);
            return(p);
        }
Beispiel #13
0
 /// <summary>
 /// 将本对象的用户配置值保存到内存中或持久化的配置文件中
 /// </summary>
 public void Save(bool persistent = false)
 {
     if (CurrentContextDict != null)
     {
         foreach (string propertyName in CurrentContextDict.Keys.ToList())
         {
             string[] propertyNames = propertyName.Split('.');
             object   obj           = propertyNames.Length == 1 ? ContextObject : FindObject(propertyNames);
             obj = RefHelper.GetValue(obj, propertyNames[propertyNames.Length - 1]);
             if (obj == null)
             {
                 CurrentContextDict.Remove(propertyName);
             }
             else if (obj.GetType() == typeof(String) || !obj.GetType().IsClass)
             {
                 CurrentContextDict[propertyName] = new TypeAndValue {
                     TypeName = obj.GetType().AssemblyQualifiedName, Value = CommOp.ToFullStr(obj)
                 };
             }
             else
             {
                 CurrentContextDict[propertyName] = new TypeAndValue {
                     TypeName = obj.GetType().AssemblyQualifiedName, Value = JsonHelper.ToJson(obj)
                 };
             }
         }
     }
     if (persistent)
     {
         SaveAllToPersistent();
     }
 }
Beispiel #14
0
        private void SetCellValue(ICell cell, object obj)
        {
            if (obj == null)
            {
                cell.SetCellValue("");
                return;
            }
            Type type = obj.GetType();

            if (type == typeof(bool) || type == typeof(bool?))
            {
                cell.SetCellValue(CommOp.ToBool(obj));
            }
            else if (CommOp.ToDecimal(obj).ToString() == obj.ToString())
            {
                cell.SetCellValue(CommOp.ToDouble(obj));
            }
            else if (type == typeof(DateTime))
            {
                cell.SetCellValue(CommOp.ToDateTime(obj));
            }
            else
            {
                cell.SetCellValue(CommOp.ToStr(obj));
            }
        }
Beispiel #15
0
        /// <summary>
        /// 生成二进制参数SqlParameter
        /// </summary>
        /// <param name="parameterName"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public IDataParameter CreateImageParameter(string parameterName, byte[] value)
        {
            IDataParameter param = new SqlParameter(parameterName, SqlDbType.Image);

            param.Value = CommOp.TestNull(value);
            return(param);
        }
Beispiel #16
0
        /// <summary>
        /// 根据指定的类型名称和属性名称获取对应的属性配置项
        /// </summary>
        /// <param name="className">类型名称</param>
        /// <param name="propName">属性名称</param>
        /// <param name="attr">标签属性</param>
        /// <returns>属性配置项</returns>
        public static AdvDataConfigItem GetPropertyConfig(CatalogExtAttribute attr, string className, string propName)
        {
            AdvDataConfigItem foundItem = null;
            var classConfig             = _configCache.FirstOrDefault(cfg => cfg.ClassName.Equals(className));

            if (classConfig == null)
            {
                classConfig = new AdvDataConfig()
                {
                    ClassName = className
                };
                _configCache.Add(classConfig);
                _modified = true;
            }
            foundItem = classConfig.Items.FirstOrDefault(c => c.PropertyName == propName);
            if (foundItem == null)
            {
                foundItem = new AdvDataConfigItem
                {
                    OverWrite    = true,
                    FormOrder    = 1,
                    PropertyName = propName,
                    GridOrder    = 1,

                    AllowNull      = attr.AllowNull,
                    DataSource     = attr.DataSource.ToStr(),
                    DataSourceType = CommOp.ToStr(attr.DataSourceType),
                    DataType       = attr.DataType.ToString(),
                    MaxLength      = attr.MaxLength,
                    MinLength      = attr.MinLength,
                    MaxValue       = CommOp.ToStr(attr.MaxValue),
                    MinValue       = CommOp.ToStr(attr.MinValue),
                    RegExpr        = attr.RegExpr,
                    DefaultValue   = attr.DefaultValue,
                    InputFormat    = attr.InputFormat,
                    DisplayFormat  = attr.DisplayFormat,
                    Browsable      = attr.Browsable,
                };
                classConfig.Items.Add(foundItem);
                _modified = true;
            }
            else if (foundItem.OverWrite)
            {
                attr.DefaultValue   = foundItem.DefaultValue;
                attr.DataType       = CommOp.ToEnum <ExtDataType>(foundItem.DataType);
                attr.AllowNull      = foundItem.AllowNull;
                attr.DataSource     = foundItem.DataSource;
                attr.DataSourceType = CommOp.ToEnum <ExtDataSourceType>(foundItem.DataSourceType);
                attr.MaxLength      = foundItem.MaxLength;
                attr.MinLength      = foundItem.MinLength;
                attr.MaxValue       = foundItem.MaxValue;
                attr.MinValue       = foundItem.MinValue;
                attr.RegExpr        = foundItem.RegExpr;
                attr.InputFormat    = foundItem.InputFormat;
                attr.DisplayFormat  = foundItem.DisplayFormat;
                attr.Browsable      = foundItem.Browsable;
            }

            return(foundItem);
        }
Beispiel #17
0
        /// <summary>
        /// 获取数据库的大小
        /// </summary>
        /// <returns></returns>
        public virtual double GetDBSize()
        {
            DataSet ds = Helper.RunProcedureDs("sp_spaceused");
            string  r  = (string)ds.Tables[0].Rows[0]["database_size"];

            return(CommOp.ToDouble(r.Split(' ')[0]));
        }
Beispiel #18
0
        /// <summary>
        /// 获取所有用户的分页json数据
        /// </summary>
        /// <param name="page">查询分页信息,包括当前页、页大小、关键词等</param>
        /// <returns></returns>
        public JsonResult GetAll(PageModel page)
        {
            //mini-ui的分页是从0开始的
            page.PageIndex++;

            //因userMgr.GetAll()不是IQueryable对象,所以不能直接用在分页API中
            //需要一个转换
            var users = mUserMgr.GetAll().AsQueryable();

            if (!page.Key.IsEmpty())
            {
                page.Key = page.Key.ToLower();
                users    = users.Where(u => u.Name.ToLower().Contains(page.Key) ||
                                       u.Id.Equals(page.Key) || (u.Email != null && u.Email.Contains(page.Key)) ||
                                       (u.PhoneNumber != null && u.PhoneNumber.Contains(page.Key)) ||
                                       u.RoleNames.ToLower().Contains(page.Key));
            }

            var pager = new Pager <AppUser>(users.OrderByDescending(u => CommOp.ToInt(u.Id)), page.PageIndex, page.PageSize);

            //多重排序:
            //ViewBag.Pager = Pager.GetPagedList(ref users, us =>
            //    us.OrderByDescending(u => u.IsOnline)
            //    .ThenByDescending(u => u.Id), page);

            // var vre = this.ViewEngineCollection[1].FindView(this.ControllerContext., "Index_Spc", "_AdminPartial", false); //MVC3不支持

            return(Json(new
            {
                data = pager,
                total = pager.RecordCount
            }, JsonRequestBehavior.AllowGet));
        }
Beispiel #19
0
        //单表的分页
        private IPager BuildPager(DataGateKey gkey, IDictionary <string, object> parameters)
        {
            var    tableMeta = gkey.MainTable;
            string filter    = FormatFilter(gkey.Filter, tableMeta);

            if (!filter.IsEmpty())
            {
                filter = " where " + filter;
            }

            string sql = gkey.Sql;

            if (sql.IsEmpty())
            {
                sql = $"select {gkey.QueryFieldsTerm} from {tableMeta.FixDbName}{filter}";
            }
            int pageSize = CommOp.ToInt(GetValueRemoveKey(parameters, "pageSize"));

            if (pageSize <= 0)
            {
                pageSize = Consts.DefaultPageSize;
            }
            DBPagerInfo pager = new DBPagerInfo
            {
                Query     = sql,
                KeyId     = $"{gkey.TableJoins[0].Alias ?? tableMeta.FixDbName}.{tableMeta.PrimaryKey.FixDbName}",
                PageIndex = Math.Max(1, CommOp.ToInt(GetValueRemoveKey(parameters, "pageIndex"))) - 1,
                PageSize  = pageSize,
                OrderBy   = gkey.OrderBy,
            };

            return(pager);
        }
Beispiel #20
0
        /// <summary>
        /// 生成二进制参数
        /// </summary>
        /// <param name="parameterName"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public IDataParameter CreateImageParameter(string parameterName, byte[] value)
        {
            OleDbParameter param = new OleDbParameter(parameterName, OleDbType.Binary);

            param.Value = CommOp.TestNull(value);
            return(param);
        }
Beispiel #21
0
        /// <summary>
        /// 获取分页的数据
        /// </summary>
        /// <param name="gkey">查询Key名称</param>
        /// <param name="parameters">查询参数</param>
        /// <returns>{ total: 总数, data:DataTable}</returns>
        private async Task <PageResult> GetPageAsync(DataGateKey gkey, object obj)
        {
            if (!(obj is IDictionary <string, object> parameters))
            {
                parameters = CommOp.ToStrObjDict(obj);
            }
            if (gkey.TableJoins.Count > 1)
            {
                return(await GetMasterDetailPageAsync(gkey, parameters));
            }
            var tableMeta = gkey.MainTable;

            CreateFilterStr(gkey, tableMeta, parameters);
            CreateOrderStr(gkey, tableMeta, parameters);
            var    ps    = DB.GetParameter(parameters);
            IPager pager = BuildPager(gkey, parameters);

            using (var dr = await DB.DBComm.ExecPageReaderAsync(pager, ps.ToArray()))
            {
                DataTable dt = new DataTable();
                dt.Load(dr);
                ReNameColumns(tableMeta, dt);
                return(new PageResult
                {
                    Total = pager.RecordCount,
                    Data = dt
                });
            }
        }
Beispiel #22
0
        public JsonResult GetDeptUsers(string deptIds)
        {
            int[] deptIdArr = CommOp.ToIntArray(deptIds, ',');
            var   list      = OrgManager.mOrganizationManager.GetDepUserQuery();

            if (!deptIdArr.IsEmpty())
            {
                list = list
                       .Where(u => u.DepId != null && deptIdArr.Contains(u.DepId.Value));
            }

            var result = list
                         .GroupBy(u => u.UserId)
                         .Select(g => g.FirstOrDefault())
                         // 在不需要高级查询,只需要模糊查询的情况下,也可以返回一个匿名对象查询
                         // 这里只返回三个字段,是为了减少返回前台的json数据量
                         .Select(u => new
            {
                Id       = u.UserId.Value,
                UserName = u.UserName,
                DepName  = u.DepName,
            });

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Beispiel #23
0
        public int Add(AppUser user)
        {
            //WebSecurity.CreateUserAndAccount(user.Name, "123456", new { Email = ((AppUserEx)user).Email });
            MemberShip member = new MemberShip()
            {
                UserName     = user.Name,
                CreateDate   = DateTime.Now,
                IsConfirmed  = true,
                Email        = user.Email,
                PhoneNumber  = user.PhoneNumber,
                PasswordSalt = CommOp.NewId(),
            };

            member.Password = MyStateProvider.EncryptPassword("123456", member.PasswordSalt);

            foreach (string roleId in user.RoleIds)
            {
                UserInRole uir = new UserInRole
                {
                    RoleId = roleId.ToInt(),
                };
                member.UserInRoles.Add(uir);
            }
            using (var _context = new ModelContext())
            {
                _context.Set <MemberShip>().Add(member);
                _context.SaveChanges();
            }
            user.Id = member.UserId.ToString();
            return(1);
        }
Beispiel #24
0
        [ValidateInput(false)] //因为要传递带html标签的art.Text,所以此处不能验证输入
        public ActionResult Edit(Base_Article art, int caId = 0)
        {
            art.EditorId = CommOp.ToInt(CurrentUserId);
            art.State    = ArticleState.Published;
            Base_CatalogArticle ca;

            if (caId == 0)
            {
                ca = new Base_CatalogArticle {
                    CatalogId = CatalogId
                };
            }
            else
            {
                ca = _resourceFileService.Article.GetById(caId);
                _innerCatalogId = ca.CatalogId;
            }

            ca.Article = art;

            if (art.Id > 0 && caId == 0)
            {
                var oldCaId = _resourceFileService.Article.GetByArticleId(art.Id, CatalogId).Id;
                ca.Id = oldCaId;
            }

            if (true)
            {
                _resourceFileService.Article.Save(ca);
            }
            return(JsonTips("success", "", JStr.SuccessSaved0, (object)null, ca.Article.Title));
        }
Beispiel #25
0
        public virtual LoginState ChangePassword(PasswordChangeModel model)
        {
            var _context = new ModelContext();

            // var user = _context.UserProfiles.Find(2);
            MemberShip member = _context.Set <MemberShip>().FirstOrDefault(m => m.UserName.Equals(
                                                                               Thread.CurrentPrincipal.Identity.Name,
                                                                               StringComparison.OrdinalIgnoreCase));

            if (member == null)
            {
                return(LoginState.UserNotExist);
            }

            if (model.Password != model.ConfirmPassword)
            {
                return(LoginState.PasswordError);
            }

            if (EncryptPassword(model.OldPassword, member.PasswordSalt) != member.Password)
            {
                return(LoginState.OldPasswordError);
            }

            member.PasswordSalt        = CommOp.NewId();
            member.Password            = Encryption.MD5(model.Password + member.PasswordSalt);
            member.PasswordChangedDate = DateTime.Now;
            _context.SaveChanges();
            return(LoginState.OK);
        }
Beispiel #26
0
        public ActionResult Drag(int caId, int delta, DateTime?end)
        {
            Base_CatalogArticle ca = _schedule.Article.GetById(caId);

            if (ca.Article.State == ScheduleEvent.OptionReadOnly)
            {
                return(JsonTips("error", SStr.CantChangeReadonlySchedule));
            }
            DateTime startTime = CommOp.ToDateTime(ca.GetExt(ScheduleEvent.Root.StartTime));
            DateTime endTime   = CommOp.ToDateTime(ca.GetExt(ScheduleEvent.Root.EndTime));

            if (end.IsEmpty())
            {
                //表示是拖动整个日程,同时改变起止时间
                startTime = startTime.AddMinutes(delta);
                ca.SetExt(ScheduleEvent.Root.StartTime, startTime);
                if (endTime != default(DateTime))
                {
                    endTime = endTime.AddMinutes(delta);
                    ca.SetExt(ScheduleEvent.Root.EndTime, endTime);
                }
            }
            else
            {
                ca.SetExt(ScheduleEvent.Root.EndTime, end);
            }
            ca.Article.EditorId = CurrentUserId.ToInt();
            ca.Article.State    = ArticleState.Published;
            _schedule.Article.Save(ca);
            return(JsonTips());
        }
Beispiel #27
0
        [ValidateInput(false)] //因为要传递带html标签的art.Text,所以此处不能验证输入
        public ActionResult Edit(Base_Article art, int caId = 0)
        {
            art.EditorId = CommOp.ToInt(CurrentUserId);
            art.State    = ArticleState.Published;
            Base_CatalogArticle ca;

            if (caId == 0)
            {
                ca = new Base_CatalogArticle {
                    CatalogId = CatalogId
                };
            }
            else
            {
                ca = _article.GetById(caId);
                _innerCatalogId = ca.CatalogId;
            }

            ca.Article = art;

            if (art.Id > 0 && caId == 0)
            {
                var oldCaId = _article.GetByArticleId(art.Id, CatalogId).Id;
                ca.Id = oldCaId;
            }

            if (BeforeSaving(ca))
            {
                _article.Save(ca);
            }
            return(AfterSaved(ca));
        }
Beispiel #28
0
 public ActionResult DeleteAlerts(string ids)
 {
     int[] idArr = CommOp.ToIntArray(ids, ',');
     //  Manager.Delete(id);
     _schedule.DeleteAlerts(CurrentUserId.ToInt(), idArr);
     return(JsonTips("success", JStr.SuccessDeleted));
 }
Beispiel #29
0
        /// <summary>
        /// 判断用户访问的地址的格式是否与指定AppFunction定义的相同
        /// </summary>
        /// <param name="userLoc">用户的地址</param>
        /// <returns>是/否</returns>
        public bool MatchLocation(string userLoc)
        {
            string funcLoc = Location ?? "";
            string regTail = RegTail;

            if (regTail.IsEmpty())
            {
                userLoc = CommOp.CutStr(userLoc, '?', '#');
                if (!funcLoc.EndsWith("/"))
                {
                    funcLoc += "/";
                }
                if (!userLoc.EndsWith("/"))
                {
                    userLoc += "/";
                }
                if (funcLoc.Equals(userLoc, StringComparison.OrdinalIgnoreCase))
                {
                    return(true);
                }
            }
            else
            {
                string pattern = "^" + funcLoc + "(" + regTail + ")";
                if (Regex.IsMatch(userLoc, pattern, RegexOptions.IgnoreCase))
                {
                    return(true);
                }
            }
            return(false);
        }
Beispiel #30
0
        /// <summary>
        /// 数据分页查询 异步版本
        /// </summary>
        /// <param name="pager"></param>
        /// <param name="sp"></param>
        /// <returns></returns>
        public async Task <IDataReader> ExecPageReaderAsync(IPager p, params IDataParameter[] sp)
        {
            if (p is DBPagerInfo)
            {
                DBPagerInfo pager   = p as DBPagerInfo;
                var         tp      = GetSortFieldFromOrderBy(pager.OrderBy, pager.KeyId);
                string      orderby = tp[0];
                string      sql     = "SELECT COUNT(1) FROM (" + pager.Query + ")c";
                pager.RecordCount = CommOp.ToInt(await Helper.ExecGetObjectAsync(sql, sp));
                sql = $@"WITH PAGED AS ( 
SELECT ROW_NUMBER() OVER(ORDER BY {pager.OrderBy}) AS rowNum, 
* FROM ({pager.Query})a)
SELECT TT.*  FROM PAGED P INNER JOIN ({pager.Query})TT 
ON P.{pager.KeyId} = TT.{pager.KeyId}  WHERE ROWNUM BETWEEN {pager.StartIndex + 1} AND {pager.StartIndex + pager.PageSize}
ORDER BY {pager.OrderBy}";
                //pager.OrderBy, pager.Query, pager.KeyId, pager.StartIndex + 1, pager.StartIndex + pager.PageSize);
                return(await Helper.ExecReaderAsync(sql, sp));
            }

            else if (p is MasterDetailPagerInfo)
            {
                return(await ExecMasterDetailPageReaderAsync((MasterDetailPagerInfo)p, sp));
            }
            else
            {
                throw new ArgumentException($"请传入{nameof(DBPagerInfo)}或{nameof(MasterDetailPagerInfo)}");
            }
        }