예제 #1
0
        /// <summary>
        /// 根据条件获取一组用户
        /// </summary>
        /// <param name="departmentID">部门ID</param>
        /// <param name="selectName">登陆名</param>
        /// <param name="state">用户状态</param>
        /// <returns>一组用户信息</returns>
        public List <Account> GetAccounts(string siteID, string departmentID, string searchKey, OwnerRank type)
        {
            Criteria c = new Criteria(CriteriaType.None);

            if (!string.IsNullOrEmpty(siteID))
            {
                c.Add(CriteriaType.Equals, "FromSiteID", siteID);
            }
            if (departmentID != null && departmentID != "")
            {
                Criteria subC = new Criteria(CriteriaType.None);
                subC.Mode = CriteriaMode.Or;
                subC.AddOr(CriteriaType.Equals, "DepartmentID", departmentID);

                List <Department> list = GetDepartmentTree(siteID, departmentID);
                foreach (Department depart in list)
                {
                    subC.AddOr(CriteriaType.Equals, "DepartmentID", depart.ID);
                }
                c.Criterias.Add(subC);
            }
            if (type != OwnerRank.All)
            {
                c.Add(CriteriaType.Equals, "UserType", (int)type);
            }
            if (!string.IsNullOrEmpty(searchKey))
            {
                c.Add(CriteriaType.Like, "LoginName", "%" + searchKey + "%");
            }
            Order[] o = new Order[] { new Order("Created", OrderMode.Desc) };
            return(c.Criterias.Count > 0 ? Assistant.List <Account>(c, o) : new List <Account>());
        }
예제 #2
0
        /// <summary>
        /// 创建查询条件
        /// </summary>
        /// <returns></returns>
        protected virtual Criteria CreateListCriteria()
        {
            Criteria c = new Criteria(CriteriaType.Equals, "TypeID", AdviceTypeID);

            if (!Html.IsPostBack) //如果是安全查询,则默认不显示信息
            {
                c.Add(CriteriaType.NotEquals, "TypeID", AdviceTypeID);
            }

            if (Html.IsPostBack)
            {
                string sn       = Html.Request <string>("SN");
                string keyword  = Html.Request <string>("KeyWord");
                string password = Html.Request <string>("Password");

                if (SecurityQuery)
                {
                    c.Add(CriteriaType.Equals, "SN", sn);
                    c.Add(CriteriaType.Equals, "MyQueryPwd", (password ?? "").Trim());
                }
                else
                {
                    Criteria subC = new Criteria(CriteriaType.None);
                    subC.Mode = CriteriaMode.Or;
                    subC.AddOr(CriteriaType.Equals, "SN", sn);
                    subC.AddOr(CriteriaType.Like, "Title", "%" + keyword + "%");
                    c.Criterias.Add(subC);
                }
            }

            return(c);
        }
예제 #3
0
        private void InitCriteria()
        {
            criteria = new Criteria(CriteriaType.None);
            if (string.IsNullOrEmpty(KeyWord))
            {
                if (IncludeChildren && Channel != null)
                {
                    criteria.Add(CriteriaType.Like, "ChannelFullUrl", Channel.FullUrl + "%");
                }
                else
                {
                    criteria.Add(CriteriaType.Equals, "OwnerID", Channel.ID);
                }
            }
            string tag = Request["tag"];

            if (!String.IsNullOrEmpty(tag))
            {
                criteria.Add(CriteriaType.Like, "Tags", "%" + HttpUtility.UrlDecode(tag) + "%");
            }

            string title = Request["title"];

            if (!String.IsNullOrEmpty(title))
            {
                criteria.Add(CriteriaType.Like, "Title", "%" + title + "%");
            }

            string channel = Request["channel"];

            if (!String.IsNullOrEmpty(channel))
            {
                Channel ch = HelperFactory.Instance.GetHelper <ChannelHelper>().GetChannel(channel, null);
                if (ch != null)
                {
                    criteria.Add(CriteriaType.Like, "ChannelFullUrl", ch.FullUrl + "%");
                }
            }

            string author = Request["author"];

            if (!String.IsNullOrEmpty(author))
            {
                criteria.Add(CriteriaType.Equals, "Author", author);
            }

            if (!string.IsNullOrEmpty(KeyWord))
            {
                Criteria keyCriteria = new Criteria(CriteriaType.None);
                keyCriteria.Mode = CriteriaMode.Or;
                keyCriteria.AddOr(CriteriaType.Like, "Title", "%" + KeyWord + "%");
                keyCriteria.AddOr(CriteriaType.Like, "Description", "%" + KeyWord + "%");
                criteria.Criterias.Add(keyCriteria);
            }

            criteria.Add(CriteriaType.Equals, "State", 1);
        }
예제 #4
0
        public static Criteria CreateModelCondition()
        {
            Criteria c = new Criteria(CriteriaType.None);

            c.Mode = CriteriaMode.Or;
            c.AddOr(CriteriaType.Equals, "ModelName", Constants.ArticleModelName);
            c.AddOr(CriteriaType.Equals, "ModelName", string.Empty);
            c.AddOr(CriteriaType.IsNull, "ModelName", null);
            return(c);
        }
예제 #5
0
        Criteria CreateCriteriaByQuey(AccountQuery query)
        {
            Criteria c = new Criteria(CriteriaType.None);

            if (query.State != 100)
            {
                c.Add(CriteriaType.Equals, "State", query.State);
            }
            if (query.EmailValidate != 100)
            {
                c.Add(CriteriaType.Equals, "EmailValidate", query.EmailValidate);
            }
            if (query.ModelState != 100)
            {
                c.Add(CriteriaType.Equals, "ModelState", query.ModelState);
            }

            if (!string.IsNullOrEmpty(query.KeyWord))
            {
                Criteria keyCriteria = new Criteria(CriteriaType.None);
                keyCriteria.Mode = CriteriaMode.Or;
                keyCriteria.AddOr(CriteriaType.Like, "LastName", "%" + query.KeyWord + "%");
                keyCriteria.AddOr(CriteriaType.Like, "LoginName", "%" + query.KeyWord + "%");
                keyCriteria.AddOr(CriteriaType.Like, "Email", "%" + query.KeyWord + "%");
                c.Criterias.Add(keyCriteria);
            }

            if (!string.IsNullOrEmpty(query.SiteID))
            {
                c.Add(CriteriaType.Equals, "FromSiteID", query.SiteID);
            }

            if (!string.IsNullOrEmpty(query.ModelName))
            {
                c.Add(CriteriaType.Equals, "ModelName", query.ModelName);
            }
            if (!string.IsNullOrEmpty(query.DepartmentID))
            {
                c.Add(CriteriaType.Equals, "DepartmentID", query.DepartmentID);
            }

            if (query.UserType != 100)
            {
                c.Add(CriteriaType.Equals, "UserType", query.UserType);
            }
            if (c.Criterias.Count == 0)
            {
                return(null);
            }
            else
            {
                return(c);
            }
        }
예제 #6
0
 private void InstanceCriteria(IQueryCondition condition)
 {
     if (condition.JoinInfo != null)
     {
         foreach (var join in condition.JoinInfo.Values)
         {
             Criteria joincriteria = new Criteria(CriteriaType.None);
             getJoinCriteria(condition, join, condition.Condition, ref joincriteria);
             if (joincriteria.Criterias != null && joincriteria.Criterias.Count != 0)
             {
                 tablename = join.ToTableName;
                 List <TableInfo> aList = IDatabase.GetDtByCondition <TableInfo>(join.ToTableName, joincriteria, new string[] { condition.PriMaryKeyName });
                 Criteria         c     = new Criteria(CriteriaType.None);
                 if (aList[0].Table != null && aList[0].Table.Rows != null && aList[0].Table.Rows.Count > 0)
                 {
                     c.Mode = CriteriaMode.Or;
                     foreach (DataRow item in aList[0].Table.Rows)
                     {
                         c.AddOr(CriteriaType.Equals, join.MainField, item[0]);
                     }
                     condition.Condition.Criterias.Add(c);
                 }
                 else
                 {
                     condition.Condition.Add(CriteriaType.Equals, condition.PriMaryKeyName, "no");
                 }
             }
         }
     }
 }
예제 #7
0
        /// <summary>
        /// 取得用户的评论
        /// </summary>
        /// <param name="id">用户ID</param>
        /// <param name="begin">起始记录</param>
        /// <param name="count">查询的条数</param>
        /// <returns></returns>
        public List <Comments> GetAllComments(string id, int begin, int count)
        {
            if (id == "{00000000-0000-0000-0000-000000000000}")
            {
                return(null);
            }
            Criteria       c           = new Criteria(CriteriaType.Equals, "AccountID", id);
            List <Article> articleList = Assistant.List <Article>(c, null);

            if (articleList != null)
            {
                Criteria subc = new Criteria(CriteriaType.None);
                subc.Mode = CriteriaMode.Or;
                foreach (Article article in articleList)
                {
                    subc.AddOr(CriteriaType.Equals, "ArticleID", article.ID);
                }
                Order[] orders = new Order[] { new Order("Updated", OrderMode.Desc) };
                return(Assistant.List <Comments>(subc, orders, begin, count));
            }
            else
            {
                return(null);
            }
        }
예제 #8
0
        public List <Permission> GetPermissions(List <string> allowOwners, List <string> levels)
        {
            List <string> list = new List <string>();
            Criteria      c    = new Criteria(CriteriaType.None);

            if (allowOwners.Count != 0)
            {
                Criteria subC = new Criteria(CriteriaType.None);
                subC.Mode = CriteriaMode.Or;
                foreach (string owner in allowOwners)
                {
                    subC.AddOr(CriteriaType.Equals, "OwnerID", owner);
                }
                c.Criterias.Add(subC);
            }
            if (levels != null)
            {
                Criteria subLevel = new Criteria(CriteriaType.None);
                foreach (string level in levels)
                {
                    subLevel.AddOr(CriteriaType.Equals, "Content", level);
                }
                c.Criterias.Add(subLevel);
            }
            List <Permission> ps = Assistant.List <Permission>(c, null);

            return(ps);
        }
예제 #9
0
        protected override Criteria CreateCriteria()
        {
            Criteria     c  = new Criteria();
            List <Order> os = new List <Order>();

            os.Add(new Order("ID"));



            if (QueryByColumn) //按栏目查询
            {
                if (String.IsNullOrEmpty(OwnerID))
                {
                    OwnerID = ChannelHelper.GetChannelIDFromURL();
                }
                if (IncludeChildren) //按子栏目查询
                {
                    Criteria subC = new Criteria();
                    subC.Mode = CriteriaMode.Or;
                    subC.Add(CriteriaType.Equals, "OwnerID", OwnerID);

                    List <Channel> chs = ChannelHelper.GetChannels(OwnerID);
                    if (chs != null && chs.Count > 0)
                    {
                        foreach (Channel ch in chs)
                        {
                            c.AddOr(CriteriaType.Equals, "OwnerID", ch.ID);
                        }
                    }
                }
                else
                {
                    c.Add(CriteriaType.Equals, "OwnerID", OwnerID);
                }
            }

            if (ShowAtHome) //只显示置顶信息
            {
                c.Add(CriteriaType.Equals, "IsShow", 1);
            }

            if (!String.IsNullOrEmpty(Tag)) //按标签查询
            {
                c.Add(CriteriaType.Like, "Tags", "%'" + Tag + "'%");
            }
            c.Add(CriteriaType.Equals, "State", 1); //只显示状态为可用的数据
            ProcessQueryParam(c);                   //处理附加查询数据

            return(c);
        }
예제 #10
0
        /// <summary>
        /// 查询条件来筛选模型类别
        /// </summary>
        /// <param name="name"></param>
        /// <param name="ids"></param>
        /// <param name="accountName"></param>
        /// <param name="from"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public List <AdviceType> SearchAdviceTypeByName(string name, List <string> ids, bool accountName, int from, int count)
        {
            try
            {
                Order[] o = new Order[] { new Order("Updated", OrderMode.Desc) };
                if (name != "" || accountName == true)
                {
                    Criteria c = new Criteria(CriteriaType.None);
                    if (name != null && name != "")
                    {
                        c.Add(CriteriaType.Like, "Title", "%" + name + "%");
                    }

                    if (accountName == true)
                    {
                        if (ids != null && ids.Count > 0)
                        {
                            Criteria keyCriteria = new Criteria(CriteriaType.None);
                            foreach (string id in ids)
                            {
                                keyCriteria.Mode = CriteriaMode.Or;
                                keyCriteria.AddOr(CriteriaType.Equals, "AccountID", id);
                                c.Criterias.Add(keyCriteria);
                            }
                        }
                    }
                    if (c.Criterias.Count > 0)
                    {
                        return(Assistant.List <AdviceType>(c, o, from, count));
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    return(Assistant.List <AdviceType>(null, o, from, count));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #11
0
        /// <summary>
        /// 根据用户ID列表,查询用户信息
        /// </summary>
        /// <param name="ownerIds">用户ID列表</param>
        /// <returns>用户信息列表</returns>
        public List <Account> GetAccountList(List <string> ownerIds)
        {
            Criteria c = new Criteria(CriteriaType.None);

            c.Mode = CriteriaMode.Or;
            if (ownerIds != null && ownerIds.Count > 0)
            {
                foreach (string id in ownerIds)
                {
                    c.AddOr(CriteriaType.Equals, "ID", id);
                }
                return(Assistant.List <Account>(c, null));
            }
            else
            {
                return(null);
            }
        }
예제 #12
0
        public DataTable Join(DataTable result, IJoin join, IConnection conn = null)
        {
            /*
             * 这个方法的意思是:放一个result进来。 然后去数据库查询相关关联数据。完了之后返回。
             * 由于时间仓促,如果您觉得这个方法不适用,或者有些奇怪的代码。 不妨大胆的改进吧。
             * author:丁乐
             */
            if (join == null || join.JoinInfo == null)
            {
                return(result);
            }
            if (result != null && result.Rows != null && result.Rows.Count > 0)
            {
                DataTable ResultDt = result;
                foreach (var item in join.JoinInfo)
                {
                    Criteria c = new Criteria(CriteriaType.None);
                    c.Mode = CriteriaMode.Or;
                    foreach (DataRow row in ResultDt.Rows)
                    {
                        c.AddOr(CriteriaType.Equals, item.Value.PriMaryKeyName, row[item.Key]);//外键列当前行的值
                    } //表连接条件
                    List <TableInfo> list;

                    TableInfo t = new TableInfo(item.Value.ToTableName);
                    list = new DataBaseForThinkment(item.Value.ToTableName).IDatabase.GetDtByCondition <TableInfo>(t.TableName, c, new string[] { item.Value.PriMaryKeyName, item.Value.ToField }, conn); //查询关联信息
                    if (list != null && list[0].Table != null && list[0].Table.Rows != null && list[0].Table.Rows.Count > 0)
                    {                                                                                                                                                                                     //填充
                        foreach (DataRow temp in ResultDt.Rows)
                        {
                            DataRow[] rows = list[0].Table.Select(item.Value.PriMaryKeyName + "= '" + temp[item.Key] + "'");
                            if (rows != null && rows.Length > 0)
                            {
                                temp[item.Key] = rows[0][1];
                            }
                        }
                    }
                }
            }
            return(result);
        }
예제 #13
0
        Criteria CreateCriteriaFromState(MessageState state, string senderID, string receiverID)
        {
            Criteria c = null;

            if (state == MessageState.Inbox)
            {
                //TODO::此处条件有问题
                Criteria sc = new Criteria(CriteriaType.Equals, "State", ((int)MessageState.NewMessage).ToString());

                //    sc.AddOr(CriteriaType.Equals, "State", ((int)state).ToString());
                c = new Criteria(CriteriaType.Equals, "ReceiverID", receiverID);
                c.Criterias.Add(sc);
            }
            else if (state == MessageState.Outbox)
            {
                c = new Criteria(CriteriaType.Equals, "State", ((int)state).ToString());
                c.Add(CriteriaType.Equals, "AccountID", senderID);
            }
            else if (state == MessageState.AllSMS)
            {
                Criteria sc = new Criteria(CriteriaType.Equals, "State", ((int)MessageState.Failure).ToString());
                sc.AddOr(CriteriaType.Equals, "State", ((int)MessageState.Success).ToString());
                c = new Criteria(CriteriaType.Equals, "AccountID", senderID);
                c.Criterias.Add(sc);
            }
            else
            {
                c = new Criteria(CriteriaType.Equals, "State", ((int)state).ToString());
                if (!string.IsNullOrEmpty(senderID))
                {
                    c.Add(CriteriaType.Equals, "AccountID", senderID);
                }
                if (!string.IsNullOrEmpty(receiverID))
                {
                    c.Add(CriteriaType.Equals, "ReceiverID", receiverID);
                }
            }
            return(c);
        }
예제 #14
0
        protected virtual Criteria CreateListCriteria()
        {
            Criteria c = new Criteria(CriteriaType.None);

            if (UseColumn)
            {
                if (IncludeChildren)
                {
                    Criteria c2 = new Criteria(CriteriaType.Equals, "OwnerID", BindColumnID);
                    c2.Mode = CriteriaMode.Or;
                    List <Channel> chs = ChannelHelper.GetChildren(BindColumnID);
                    if (chs != null)
                    {
                        foreach (Channel ch in chs)
                        {
                            c2.AddOr(CriteriaType.Equals, "OwnerID", ch.ID);
                        }
                    }
                    c.Criterias.Add(c2);
                }
                else
                {
                    c.Add(CriteriaType.Equals, "OwnerID", BindColumnID);
                }
            }
            if (ShowAtHome)
            {
                c.Add(CriteriaType.Equals, "IsShow", 1);
            }
            if (!String.IsNullOrEmpty(Tag))
            {
                c.Add(CriteriaType.Like, "Tags", "%" + Tag + "%");
            }
            c.Add(CriteriaType.Equals, "State", 1);
            ProcessQueryParam(c);

            return(c);
        }
예제 #15
0
 /// <summary>
 ///  根据查询条件查询数据总数
 /// </summary>
 /// <param name="selectName"></param>
 /// <param name="ids"></param>
 /// <param name="accountName"></param>
 /// <returns></returns>
 public int GetAdviceTypeCountByName(string selectName, List <string> ids, bool accountName)
 {
     if (selectName != "" || accountName == true)
     {
         Criteria c = new Criteria(CriteriaType.None);
         if (selectName != null && selectName != "")
         {
             c.Add(CriteriaType.Like, "Title", "%" + selectName + "%");
         }
         if (accountName == true)
         {
             if (ids != null && ids.Count > 0)
             {
                 Criteria keyCriteria = new Criteria(CriteriaType.None);
                 foreach (string id in ids)
                 {
                     keyCriteria.Mode = CriteriaMode.Or;
                     keyCriteria.AddOr(CriteriaType.Equals, "AccountID", id);
                     c.Criterias.Add(keyCriteria);
                 }
             }
         }
         if (c.Criterias.Count > 0)
         {
             return(Assistant.Count <AdviceType>(c));
         }
         else
         {
             return(0);
         }
     }
     else
     {
         return(Assistant.Count <AdviceType>(null));
     }
 }
예제 #16
0
        /// <summary>
        /// 根据栏目获取文章
        /// </summary>
        protected List<Article> QueryArticlesByChannels()
        {
            #region 将非空的栏目ID添加到 ListOwnerID
            List<string> ListOwnerID = new List<string>(); ;
            if (!string.IsNullOrEmpty(OwnerID1))
                ListOwnerID.Add(OwnerID1);
            if (!string.IsNullOrEmpty(OwnerID2))
                ListOwnerID.Add(OwnerID2);
            if (!string.IsNullOrEmpty(OwnerID3))
                ListOwnerID.Add(OwnerID3);
            if (!string.IsNullOrEmpty(OwnerID4))
                ListOwnerID.Add(OwnerID4);
            if (!string.IsNullOrEmpty(OwnerID5))
                ListOwnerID.Add(OwnerID5);
            if (!string.IsNullOrEmpty(OwnerID6))
                ListOwnerID.Add(OwnerID6);
            if (!string.IsNullOrEmpty(OwnerID7))
                ListOwnerID.Add(OwnerID7);
            if (!string.IsNullOrEmpty(OwnerID8))
                ListOwnerID.Add(OwnerID8);
            if (!string.IsNullOrEmpty(OwnerID9))
                ListOwnerID.Add(OwnerID9);
            if (!string.IsNullOrEmpty(OwnerID10))
                ListOwnerID.Add(OwnerID10);
            #endregion

            Criteria c = new Criteria(CriteriaType.None);
            //c.Add(CriteriaType.Like, "ChannelFullUrl", ch.FullUrl + "%");
            c.Add(CriteriaType.Equals, "State", 1);
            if (!String.IsNullOrEmpty(Tags))
            {
                c.Add(CriteriaType.Like, "Tags", "%'" + Tags + "'%");
            }
            if (ListOwnerID.Count > 0)
            {
                Criteria cOr = new Criteria(CriteriaType.None);
                cOr.Mode = CriteriaMode.Or;
                foreach (string  chID in ListOwnerID)
                {
                    cOr.AddOr(CriteriaType.Equals, "OwnerID", chID);
                }
                c.Criterias.Add(cOr);
            }

            Order[] os = IsShow ? new Order[] { new Order("IsShow", OrderMode.Desc), new Order("Updated", OrderMode.Desc), new Order("ID", OrderMode.Desc) } : new Order[] { new Order("Updated", OrderMode.Desc), new Order("ID", OrderMode.Desc) };
            return Assistant.List<Article>(c, os, 0, PageSize,
                                           new string[] {"ID", "Title", "ChannelFullUrl", "Created", "SN"});
        }
예제 #17
0
        private void InitCriteria()
        {
            criteria = new Criteria(CriteriaType.None);
            if (string.IsNullOrEmpty(KeyWord))
            {
                if (IncludeChildren && Channel != null)
                {
                    criteria.Add(CriteriaType.Like, "ChannelFullUrl", Channel.FullUrl + "%");
                }
                else
                {
                    criteria.Add(CriteriaType.Equals, "OwnerID", Channel.ID);
                }
            }
            string tag = We7Helper.RemoveHtml(System.Web.HttpUtility.UrlDecode(Request["tag"]));
            if (!String.IsNullOrEmpty(tag))
            {
                criteria.Add(CriteriaType.Like, "Tags", "%" + HttpUtility.UrlDecode(tag) + "%");
            }

            string title = We7Helper.RemoveHtml(System.Web.HttpUtility.UrlDecode(Request["title"]));
            if (!String.IsNullOrEmpty(title))
            {
                criteria.Add(CriteriaType.Like, "Title", "%" + title + "%");
            }

            string channel = We7Helper.RemoveHtml(System.Web.HttpUtility.UrlDecode(Request["channel"]));
            if (!String.IsNullOrEmpty(channel))
            {
                Channel ch = HelperFactory.Instance.GetHelper<ChannelHelper>().GetChannel(channel, null);
                if (ch != null)
                {
                    criteria.Add(CriteriaType.Like, "ChannelFullUrl", ch.FullUrl + "%");
                }
            }

            string author = We7Helper.RemoveHtml(System.Web.HttpUtility.UrlDecode(Request["author"]));
            if (!String.IsNullOrEmpty(author))
            {
                criteria.Add(CriteriaType.Equals, "Author", author);
            }

            if (!string.IsNullOrEmpty(KeyWord))
            {
                Criteria keyCriteria = new Criteria(CriteriaType.None);
                keyCriteria.Mode = CriteriaMode.Or;
                keyCriteria.AddOr(CriteriaType.Like, "Title", "%" + KeyWord + "%");
                keyCriteria.AddOr(CriteriaType.Like, "Description", "%" + KeyWord + "%");
                criteria.Criterias.Add(keyCriteria);
            }

            criteria.Add(CriteriaType.Equals, "State", 1);
        }
예제 #18
0
        /// <summary>
        /// 更新模型xml
        /// </summary>
        /// <returns></returns>
        public static void UpdataModel(IQueryCondition condition)
        {
            string ModelXml = condition.HasModelXml;  //数据模型信息

            if (!string.IsNullOrEmpty(ModelXml) && condition.OperType == Enum_operType.Update)
            {
                List <string> list = new List <string>(condition.Fields);
                list.Add(ModelXml);
                if (!list.Contains(condition.PriMaryKeyName))
                {
                    list.Add(condition.PriMaryKeyName);                                           //加上主键
                }
                MoldPanel    mp   = new MoldPanel();
                PanelContext data = mp.GetPanelContext(condition.ModelName, "list");  //设置为List类型(暂时写死)

                Criteria criteria = new Criteria(CriteriaType.None);
                criteria.Mode = CriteriaMode.Or;
                foreach (var item in condition.ID.Split(','))
                {
                    criteria.AddOr(CriteriaType.Equals, condition.PriMaryKeyName, item);
                }

                TableInfo tableinfo = new TableInfo(data.Model.Type.ToString());

                var       tablelist = getDataBase(tableinfo).IDatabase.GetDtByCondition <TableInfo>(data.Model.Type.ToString(), criteria, list.ToArray()); //获取对应字段,的table信息
                DataTable dt        = null != tablelist ? tablelist[0].Table : null;

                condition.OperType = Enum_operType.Update; //设为修改类型
                foreach (DataRow item in dt.Rows)
                {
                    if (item[ModelXml] != DBNull.Value && item != null)
                    {
                        List <FieldsDic> Fileds = new List <FieldsDic>();        // 最终字典

                        DataSet ds = BaseDataProvider.CreateDataSet(data.Model); //穿件数据集
                        BaseDataProvider.ReadXml(ds, item[ModelXml].ToString());

                        var files = condition.ConditionDic; //获取到的字典

                        if (!files.Exists(delegate(FieldsDic f) { if (string.Compare(f.Key, ModelXml, true) == 0)
                                                                  {
                                                                      return(true);
                                                                  }
                                                                  else
                                                                  {
                                                                      return(false);
                                                                  } }))                                                                                   //添加XML扩展字段
                        {
                            files.Add(new FieldsDic(ModelXml, string.Empty));
                        }
                        foreach (var file in files)
                        {
                            if (!file.Key.ToUpper().Equals(condition.PriMaryKeyName) && ds.Tables[data.Table.Name].Columns.Contains(file.Key))
                            {
                                ds.Tables[data.Table.Name].Rows[0][file.Key] = file.Value; //赋值
                                if (!Fileds.Exists(delegate(FieldsDic f) { if (string.Compare(f.Key, condition.HasModelXml, true) == 0)
                                                                           {
                                                                               return(true);
                                                                           }
                                                                           else
                                                                           {
                                                                               return(false);
                                                                           } }))
                                {
                                    files.Add(new FieldsDic(file.Key, file.Value));
                                }
                            }
                        }

                        Fileds.Find(delegate(FieldsDic f) {
                            if (string.Compare(f.Key, ModelXml, true) == 0)
                            {
                                f.Value = BaseDataProvider.GetXml(ds);    //拿到XML 赋值
                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        });

                        TableInfo ti = new TableInfo(data.Model.Type.ToString(), item[condition.PriMaryKeyName].ToString(), Fileds);
                        list.Remove(condition.PriMaryKeyName);
                        TryUpData(condition, list, ti, data.Model.Type.ToString(), true);
                    }
                }
                QueryCondition.SetMessage(condition, "模型字段:" + condition.HasModelXml, false, "修改", string.Empty, dt.Rows.Count);
            }
        }
예제 #19
0
        /// <summary>
        /// 根据栏目获取文章
        /// </summary>
        protected List <Article> QueryArticlesByChannels()
        {
            #region 将非空的栏目ID添加到 ListOwnerID
            List <string> ListOwnerID = new List <string>();;
            if (!string.IsNullOrEmpty(OwnerID1))
            {
                ListOwnerID.Add(OwnerID1);
            }
            if (!string.IsNullOrEmpty(OwnerID2))
            {
                ListOwnerID.Add(OwnerID2);
            }
            if (!string.IsNullOrEmpty(OwnerID3))
            {
                ListOwnerID.Add(OwnerID3);
            }
            if (!string.IsNullOrEmpty(OwnerID4))
            {
                ListOwnerID.Add(OwnerID4);
            }
            if (!string.IsNullOrEmpty(OwnerID5))
            {
                ListOwnerID.Add(OwnerID5);
            }
            if (!string.IsNullOrEmpty(OwnerID6))
            {
                ListOwnerID.Add(OwnerID6);
            }
            if (!string.IsNullOrEmpty(OwnerID7))
            {
                ListOwnerID.Add(OwnerID7);
            }
            if (!string.IsNullOrEmpty(OwnerID8))
            {
                ListOwnerID.Add(OwnerID8);
            }
            if (!string.IsNullOrEmpty(OwnerID9))
            {
                ListOwnerID.Add(OwnerID9);
            }
            if (!string.IsNullOrEmpty(OwnerID10))
            {
                ListOwnerID.Add(OwnerID10);
            }
            #endregion

            Criteria c = new Criteria(CriteriaType.None);
            //c.Add(CriteriaType.Like, "ChannelFullUrl", ch.FullUrl + "%");
            c.Add(CriteriaType.Equals, "State", 1);
            if (!String.IsNullOrEmpty(Tags))
            {
                c.Add(CriteriaType.Like, "Tags", "%'" + Tags + "'%");
            }
            if (ListOwnerID.Count > 0)
            {
                Criteria cOr = new Criteria(CriteriaType.None);
                cOr.Mode = CriteriaMode.Or;
                foreach (string chID in ListOwnerID)
                {
                    cOr.AddOr(CriteriaType.Equals, "OwnerID", chID);
                }
                c.Criterias.Add(cOr);
            }

            Order[] os = IsShow ? new Order[] { new Order("IsShow", OrderMode.Desc), new Order("Updated", OrderMode.Desc), new Order("ID", OrderMode.Desc) } : new Order[] { new Order("Updated", OrderMode.Desc), new Order("ID", OrderMode.Desc) };
            return(Assistant.List <Article>(c, os, 0, PageSize,
                                            new string[] { "ID", "Title", "ChannelFullUrl", "Created", "SN" }));
        }
예제 #20
0
        Criteria CreateCriteriaByAll(ArticleQuery query)
        {
            string   parameters;
            string   modelname = ChannelHelper.GetModelName(query.ChannelID, out parameters);
            Criteria c         = new Criteria(CriteriaType.None);

            if (string.IsNullOrEmpty(modelname) && !string.IsNullOrEmpty(query.EnumState))
            {
                Criteria csubC = new Criteria();
                csubC.Name  = "EnumState";
                csubC.Value = query.EnumState;
                if (query.ExcludeThisChannel)
                {
                    csubC.Type = CriteriaType.NotEquals;
                }
                else
                {
                    csubC.Type = CriteriaType.Equals;
                }
                csubC.Adorn  = Adorns.SubString;
                csubC.Start  = EnumLibrary.Position[(int)EnumLibrary.Business.ArticleType];
                csubC.Length = EnumLibrary.PlaceLength;
                c.Criterias.Add(csubC);
            }
            if (string.IsNullOrEmpty(query.ModelName) || Constants.ArticleModelName.Equals(query.ModelName, StringComparison.OrdinalIgnoreCase))
            {
                AppendModelCondition(c);
            }
            if (query.State != ArticleStates.All)
            {
                c.Add(CriteriaType.Equals, "State", (int)query.State);
            }
            if (query.ArticleType > 0)
            {
                c.Add(CriteriaType.Equals, "ContentType", query.ArticleType);
            }
            else
            {
                c.Add(CriteriaType.NotEquals, "ContentType", 16);
            }

            if (!string.IsNullOrEmpty(query.KeyWord))
            {
                Criteria keyCriteria = new Criteria(CriteriaType.None);
                keyCriteria.Mode = CriteriaMode.Or;
                keyCriteria.AddOr(CriteriaType.Like, "Title", "%" + query.KeyWord + "%");
                keyCriteria.AddOr(CriteriaType.Like, "Description", "%" + query.KeyWord + "%");
                c.Criterias.Add(keyCriteria);
            }

            if (!string.IsNullOrEmpty(query.Author))
            {
                c.Add(CriteriaType.Like, "Author", "%" + query.Author + "%");
            }
            if (query.BeginDate <= query.EndDate)
            {
                if (query.BeginDate != DateTime.MinValue)
                {
                    c.Add(CriteriaType.MoreThanEquals, "Updated", query.BeginDate);
                }
                if (query.EndDate != DateTime.MinValue && query.EndDate != DateTime.MaxValue)
                {
                    c.Add(CriteriaType.LessThanEquals, "Updated", query.EndDate.AddDays(1));
                }
            }
            else
            {
                if (query.EndDate != DateTime.MinValue)
                {
                    c.Add(CriteriaType.MoreThanEquals, "Updated", query.EndDate);
                }
                if (query.BeginDate != DateTime.MaxValue)
                {
                    c.Add(CriteriaType.LessThanEquals, "Updated", query.BeginDate.AddDays(1));
                }
            }

            if (!We7Helper.IsEmptyID(query.ChannelID))
            {
                if (CheckModel(modelname))
                {
                    c.Add(CriteriaType.Equals, "ModelName", modelname);
                    if (!string.IsNullOrEmpty(parameters))
                    {
                        CriteriaExpressionHelper.Execute(c, parameters);
                    }
                }
                else
                {
                    if (query.ExcludeThisChannel)
                    {
                        if (query.IncludeAllSons)
                        {
                            c.Add(CriteriaType.NotLike, "ChannelFullUrl", query.ChannelFullUrl + "%");
                        }
                        else
                        {
                            c.Add(CriteriaType.NotEquals, "OwnerID", query.ChannelID);
                        }
                    }
                    else
                    {
                        if (query.IncludeAllSons)
                        {
                            c.Add(CriteriaType.Like, "ChannelFullUrl", query.ChannelFullUrl + "%");
                        }
                        else
                        {
                            if (query.ChannelID.Contains(","))
                            {
                                string[] oids = query.ChannelID.Split(',');
                                Criteria subC = new Criteria(CriteriaType.None);
                                subC.Mode = CriteriaMode.Or;
                                foreach (string oid in oids)
                                {
                                    subC.Add(CriteriaType.Equals, "OwnerID", oid);
                                }
                                c.Criterias.Add(subC);
                            }
                            else
                            {
                                c.Add(CriteriaType.Equals, "OwnerID", query.ChannelID);
                            }
                        }
                    }
                }
            }

            if (!We7Helper.IsEmptyID(query.AccountID))
            {
                Channel channel = ChannelHelper.GetChannel(query.ChannelID, null);
                if (query.IncludeAdministrable)
                {
                    List <string> channels = AccountHelper.GetObjectsByPermission(query.AccountID, "Channel.Article");

                    Criteria keyCriteria = new Criteria(CriteriaType.None);
                    if (channels != null && channels.Count > 0)
                    {
                        keyCriteria.Mode = CriteriaMode.Or;
                        foreach (string ownerID in channels)
                        {
                            keyCriteria.AddOr(CriteriaType.Equals, "OwnerID", ownerID);
                        }
                    }
                    keyCriteria.AddOr(CriteriaType.Equals, "AccountID", query.AccountID);
                    if (keyCriteria.Criterias.Count > 0)
                    {
                        c.Criterias.Add(keyCriteria);
                    }
                }
                else
                {
                    c.Add(CriteriaType.Equals, "AccountID", query.AccountID);
                }
            }
            if (query.IsShowHome != null && query.IsShowHome == "1")
            {
                c.Add(CriteriaType.Equals, "IsShow", 1);
            }
            if (!string.IsNullOrEmpty(query.Tag))
            {
                c.Add(CriteriaType.Like, "Tags", "%" + query.Tag + "%");
            }
            if (query.IsImage != null && query.IsImage == "1")
            {
                c.Add(CriteriaType.Equals, "IsImage", 1);
            }
            if (query.Overdue)
            {
                Criteria subC = new Criteria(CriteriaType.None);
                subC.Mode = CriteriaMode.Or;
                Criteria subChildC1 = new Criteria(CriteriaType.MoreThanEquals, "Overdue", DateTime.Now);
                subC.Criterias.Add(subChildC1);
                Criteria subChildC2 = new Criteria(CriteriaType.Equals, "Overdue", DateTime.MinValue);
                subC.Criterias.Add(subChildC2);
                Criteria subChildC3 = new Criteria(CriteriaType.LessThanEquals, "Overdue", DateTime.Today.AddYears(-30));
                subC.Criterias.Add(subChildC3);
                c.Criterias.Add(subC);
            }
            if (!string.IsNullOrEmpty(query.ArticleParentID))
            {
                c.Add(CriteriaType.Equals, "ParentID", query.ArticleParentID);
            }
            //if (!string.IsNullOrEmpty(query.SearcherKey))

            if (!string.IsNullOrEmpty(query.ArticleID))
            {
                c.Add(CriteriaType.Like, "ListKeys", "%" + query.ArticleID + "%");
            }
            return(c);
        }