private static QueryCriterion CreateLoanCustomFilter(ReportSettings ReportSettings)
        {
            QueryCriterion queryCriterion = ReportSettings.ToQueryCriterion();

            switch (ReportSettings.LoanFilterType)
            {
            case ReportLoanFilterType.Role:
                QueryCriterion criterion1 = (QueryCriterion) new BinaryOperation(BinaryOperator.And, (QueryCriterion) new OrdinalValueCriterion("LoanAssociateUser.RoleID", (object)ReportSettings.LoanFilterRoleId), (QueryCriterion) new StringValueCriterion("LoanAssociateUser.UserID", ReportSettings.LoanFilterUserInRole));
                queryCriterion = queryCriterion != null?queryCriterion.And(criterion1) : criterion1;

                break;

            case ReportLoanFilterType.Organization:
                QueryCriterion criterion2 = (QueryCriterion) new OrdinalValueCriterion("AssociateUser.org_id", (object)ReportSettings.LoanFilterOrganizationId);
                if (ReportSettings.LoanFilterIncludeChildren)
                {
                    criterion2 = criterion2.Or((QueryCriterion) new XRefValueCriterion("Associateuser.org_id", "org_descendents.descendent", (QueryCriterion) new OrdinalValueCriterion("org_descendents.oid", (object)ReportSettings.LoanFilterOrganizationId)));
                }
                queryCriterion = queryCriterion != null?queryCriterion.And(criterion2) : criterion2;

                break;

            case ReportLoanFilterType.UserGroup:
                QueryCriterion criterion3 = (QueryCriterion) new OrdinalValueCriterion("AssociateGroup.GroupID", (object)ReportSettings.LoanFilterUserGroupId);
                queryCriterion = queryCriterion != null?queryCriterion.And(criterion3) : criterion3;

                break;
            }
            if (ReportSettings.DynamicQueryCriterion != null)
            {
                queryCriterion = queryCriterion != null?queryCriterion.And(ReportSettings.DynamicQueryCriterion) : ReportSettings.DynamicQueryCriterion;
            }
            return(queryCriterion);
        }