/// <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); }
/// <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; }
public void DefineCondition(StateMachineUtil.Parameters.Parameter lhs, ConditionOperations operation, object rhs) { _conditions.Add(new Condition(lhs, operation, rhs)); }
/// <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; } }
public Condition(StateMachineUtil.Parameters.Parameter lhs, ConditionOperations operation, object rhs) { _leftHandSide = lhs; _operation = operation; _rightHandSide = rhs; }