Esempio n. 1
0
        /// <summary>
        /// تعداد رکوردها را پس از اعمال شروط بازمیگرداند
        /// </summary>
        /// <param name="cretriaParam"></param>
        /// <returns></returns>
        public virtual int GetCountByCriteria(ConditionOperations conOp, params CriteriaStruct[] cretriaParam)
        {
            ICriteria crit        = this.NHibernateSession.CreateCriteria(typeof(T));
            Junction  disjunction = Restrictions.Disjunction();

            for (int i = 0; i < cretriaParam.Length; i++)
            {
                CriteriaStruct c = cretriaParam[i];
                this.MakeCriteria(c, ref crit, ref disjunction, conOp);
            }
            crit.Add(disjunction);
            int count = (int)crit.SetProjection(Projections.Count("ID")).UniqueResult();

            return(count);
        }
Esempio n. 2
0
        /// <summary>
        /// تعداد رکوردها را پس از اعمال شروط بازمیگرداند
        /// </summary>
        /// <param name="cretriaParam"></param>
        /// <returns></returns>
        public virtual IList <T> GetByCriteriaByPage(int pageIndex, int pageSize, ConditionOperations conOp, params CriteriaStruct[] cretriaParam)
        {
            ICriteria crit        = this.NHibernateSession.CreateCriteria(typeof(T));
            Junction  disjunction = Restrictions.Disjunction();

            for (int i = 0; i < cretriaParam.Length; i++)
            {
                CriteriaStruct c = cretriaParam[i];
                this.MakeCriteria(c, ref crit, ref disjunction, conOp);
            }
            crit.Add(disjunction);
            IList <T> list = crit.SetFirstResult(pageIndex * pageSize).SetMaxResults(pageSize).List <T>();

            return(list);
        }
        public ConditionExpressionElement(ConditionElement element, IPropertyFinder finder)
            : base(TreeCode.Expression)
        {
            if (element.Left.Type == LexAnalyzer.TokenTypes.Id)
            {
                LeftName = element.Left.Value.ToUpper();
                LeftId   = finder.GetId(LeftName, out IsString);
            }
            else
            {
                throw new SyntacticException("Unexpected token " + element.Operation.ToString());
            }

            if (IsString)
            {
                RightString = element.Right.Value;
                switch (element.Operation.Type)
                {
                case LexAnalyzer.TokenTypes.Equal:
                    operation = ConditionOperations.Eq;
                    break;

                default:
                    throw new SyntacticException("Unexpected token " + element.Operation.ToString());
                }
            }
            else
            {
                GetRightNmr(element.Right);
                switch (element.Operation.Type)
                {
                case LexAnalyzer.TokenTypes.Equal:
                    operation = ConditionOperations.Eq;
                    break;

                case LexAnalyzer.TokenTypes.GE:
                    operation = ConditionOperations.GE;
                    break;

                case LexAnalyzer.TokenTypes.Greater:
                    operation = ConditionOperations.Greater;
                    break;

                case LexAnalyzer.TokenTypes.Less:
                    operation = ConditionOperations.Less;
                    break;

                case LexAnalyzer.TokenTypes.LE:
                    operation = ConditionOperations.LE;
                    break;

                case LexAnalyzer.TokenTypes.And:
                    operation = ConditionOperations.And;
                    break;

                case LexAnalyzer.TokenTypes.Or:
                    operation = ConditionOperations.Or;
                    break;

                default:
                    throw new SyntacticException("Unexpected token " + element.Operation.ToString());
                }
            }
            IsExpr = true;
        }
Esempio n. 4
0
 public void DefineCondition(StateMachineUtil.Parameters.Parameter lhs, ConditionOperations operation, object rhs)
 {
     _conditions.Add(new Condition(lhs, operation, rhs));
 }
Esempio n. 5
0
        /// <summary>
        /// شرط را اعمال میکند
        /// و خروجی را در پارامتر دوم و سوم میریزد
        /// </summary>
        /// <param name="criteriaStruct"></param>
        /// <param name="criteria"></param>
        private void MakeCriteria(CriteriaStruct criteriaStruct, ref ICriteria criteria, ref Junction disjunction, ConditionOperations conOp)
        {
            CriteriaStruct c = criteriaStruct;

            switch (c.Operation)
            {
            case CriteriaOperation.Equal:
                if (conOp == ConditionOperations.AND)
                {
                    criteria.Add(Restrictions.Eq(c.PropertyName, c.Value));
                }
                else if (conOp == ConditionOperations.OR)
                {
                    disjunction.Add(Restrictions.Eq(c.PropertyName, c.Value));
                }
                break;

            case CriteriaOperation.NotEqual:
                if (conOp == ConditionOperations.AND)
                {
                    criteria.Add(Restrictions.Not(Restrictions.Eq(c.PropertyName, c.Value)));
                }
                else if (conOp == ConditionOperations.OR)
                {
                    disjunction.Add(Restrictions.Not(Restrictions.Eq(c.PropertyName, c.Value)));
                }
                break;

            case CriteriaOperation.GreaterThan:
                if (conOp == ConditionOperations.AND)
                {
                    criteria.Add(Restrictions.Gt(c.PropertyName, c.Value));
                }
                else if (conOp == ConditionOperations.OR)
                {
                    disjunction.Add(Restrictions.Gt(c.PropertyName, c.Value));
                }
                break;

            case CriteriaOperation.LessThan:
                if (conOp == ConditionOperations.AND)
                {
                    criteria.Add(Restrictions.Lt(c.PropertyName, c.Value));
                }
                else if (conOp == ConditionOperations.OR)
                {
                    disjunction.Add(Restrictions.Lt(c.PropertyName, c.Value));
                }
                break;

            case CriteriaOperation.GreaterEqThan:
                if (conOp == ConditionOperations.AND)
                {
                    criteria.Add(Restrictions.Ge(c.PropertyName, c.Value));
                }
                else if (conOp == ConditionOperations.OR)
                {
                    disjunction.Add(Restrictions.Ge(c.PropertyName, c.Value));
                }
                break;

            case CriteriaOperation.LessEqThan:
                if (conOp == ConditionOperations.AND)
                {
                    criteria.Add(Restrictions.Le(c.PropertyName, c.Value));
                }
                else if (conOp == ConditionOperations.OR)
                {
                    disjunction.Add(Restrictions.Le(c.PropertyName, c.Value));
                }
                break;

            case CriteriaOperation.IsNotNull:
                criteria.Add(Restrictions.IsNotNull(c.PropertyName));
                break;

            case CriteriaOperation.IsNull:
                criteria.Add(Restrictions.IsNull(c.PropertyName));
                break;

            case CriteriaOperation.IN:
                if (conOp == ConditionOperations.AND)
                {
                    criteria.Add(Restrictions.In(c.PropertyName, (object[])c.Value));
                }
                else if (conOp == ConditionOperations.OR)
                {
                    disjunction.Add(Restrictions.In(c.PropertyName, (object[])c.Value));
                }
                break;

            case CriteriaOperation.Like:
                if (conOp == ConditionOperations.AND)
                {
                    if (c.Value is string)
                    {
                        criteria.Add(Restrictions.Like(c.PropertyName, c.Value.ToString(), MatchMode.Anywhere));
                    }
                    else
                    {
                        criteria.Add(Restrictions.Like(c.PropertyName, c.Value));
                    }
                }
                else if (conOp == ConditionOperations.OR)
                {
                    if (c.Value is string)
                    {
                        disjunction.Add(Restrictions.Like(c.PropertyName, c.Value.ToString(), MatchMode.Anywhere));
                    }
                    else
                    {
                        disjunction.Add(Restrictions.Like(c.PropertyName, c.Value));
                    }
                }
                break;
            }
        }
Esempio n. 6
0
 public Condition(StateMachineUtil.Parameters.Parameter lhs, ConditionOperations operation, object rhs)
 {
     _leftHandSide  = lhs;
     _operation     = operation;
     _rightHandSide = rhs;
 }