Exemplo n.º 1
0
        public virtual NHibernate.ICriteria PrepareOrder(ref NHibernate.ICriteria criteria)
        {
            if (this.IsClientSort())
            {
                criteria.ClearOrders();
                if (string.Compare(this.Order.Trim(), Asc, true) == 0)
                {
                    criteria.AddOrder(NHibernate.Criterion.Order.Asc(this.Sort.Trim()));
                }
                if (string.Compare(this.Order.Trim(), Desc, true) == 0)
                {
                    criteria.AddOrder(NHibernate.Criterion.Order.Desc(this.Sort.Trim()));
                }
            }

            return(criteria);
        }
Exemplo n.º 2
0
 protected virtual void OrderBy(ref NHibernate.ICriteria criteria)
 {
     criteria = criteria.AddOrder(Order.Asc("CreateDate"));
 }
Exemplo n.º 3
0
        /*
         * Для числовых полей доступны следующие условия:
         * []  - null
         * [!] - не null
         * [>] - больше
         * [<] - меньше
         * [!=] - не равно
         * [>=] - больше или равно
         * [<=] - меньше или равно
         * [in] - принадлежит множеству
         * [!in]- не принадлежит множеству
         */
        public IList <T> GetByCriteria(Dictionary <string, object> queryParams, Dictionary <string, object> orderParams = null)
        {
            string alias;
            IList  aliases = new List <string>();

            NHibernate.ICriteria criteria = Session.CreateCriteria(typeof(T));
            foreach (KeyValuePair <string, object> kvp in queryParams)
            {
                string kvpKey = kvp.Key;
                string param  = null;
                if (kvpKey.StartsWith("["))
                {
                    param = kvpKey.Substring(0, kvpKey.IndexOf("]") + 1);
                    //Убираем спец. символы
                    if ((param == "[!]") || (param == "[]") || (param == "[!=]") || (param == "[>]") || (param == "[<]") || (param == "[>=]") || (param == "[<=]") || (param == "[in]") || (param == "[!in]"))
                    {
                        kvpKey = kvpKey.Substring(kvpKey.IndexOf("]") + 1);
                    }
                }
                if (kvpKey.Contains("."))
                {
                    alias = kvpKey.Substring(0, kvpKey.IndexOf("."));
                    if (!aliases.Contains(alias))
                    {
                        aliases.Add(alias);
                        criteria.CreateAlias(alias, alias);
                    }
                }
                if (param == null)
                {
                    criteria.Add(Restrictions.Eq(kvpKey, kvp.Value));
                }
                else
                {
                    if (param == "[]")
                    {
                        criteria.Add(Restrictions.IsNull(kvpKey));
                    }
                    else
                    if (param == "[!]")
                    {
                        criteria.Add(Restrictions.Not(Restrictions.IsNull(kvpKey)));
                    }
                    else
                    if (param == "[!=]")
                    {
                        criteria.Add(Restrictions.Not(Restrictions.Eq(kvpKey, kvp.Value)));
                    }
                    else
                    if (param == "[>]")
                    {
                        criteria.Add(Restrictions.Gt(kvpKey, kvp.Value));
                    }
                    else
                    if (param == "[in]")
                    {
                        ICollection collection;
                        String      val = (string)kvp.Value;
                        if (val.Contains("'"))
                        {
                            collection = GetStringCollection((string)kvp.Value);
                        }
                        else
                        {
                            collection = GetIntCollection((string)kvp.Value);
                        }
                        criteria.Add(Restrictions.In(kvpKey, collection));
                    }
                    else
                    if (param == "[!in]")
                    {
                        ICollection collection;
                        String      val = (string)kvp.Value;
                        if (val.Contains("'"))
                        {
                            collection = GetStringCollection((string)kvp.Value);
                        }
                        else
                        {
                            collection = GetIntCollection((string)kvp.Value);
                        }
                        criteria.Add(Restrictions.Not(Restrictions.In(kvpKey, collection)));
                    }
                    else
                    if (param == "[<]")
                    {
                        criteria.Add(Restrictions.Lt(kvpKey, kvp.Value));
                    }
                    else
                    if (param == "[>=]")
                    {
                        criteria.Add(Restrictions.Ge(kvpKey, kvp.Value));
                    }
                    else
                    if (param == "[<=]")
                    {
                        criteria.Add(Restrictions.Le(kvpKey, kvp.Value));
                    }
                    else
                    {
                        criteria.Add(Restrictions.Eq(kvpKey, kvp.Value));
                    }
                }
            }
            if (orderParams != null)
            {
                foreach (KeyValuePair <string, object> ovp in orderParams)
                {
                    if (ovp.Key.Contains("."))
                    {
                        alias = ovp.Key.Substring(0, ovp.Key.IndexOf("."));
                        if (!aliases.Contains(alias))
                        {
                            aliases.Add(alias);
                            criteria.CreateAlias(alias, alias);
                        }
                    }
                    criteria.AddOrder(new Order(ovp.Key, (bool)ovp.Value));
                }
            }
            return(criteria.List <T>());
        }