Beispiel #1
0
        protected void SetCustomSearchCriteria(ref SearchBuilder sb)
        {
            if (UserIdFinder != null)
            {
                sb.Criteria.Add("UserId IN (" + UserIdFinder.FindQuery + ")");
            }

            if (!StringUtils.IsBlank(Keyword))
            {
                JoinableList jList = new JoinableList(" OR ");

                if (NumericUtils.IsInt32(Keyword))
                {
                    jList.Add(string.Format("({0}={1})", AuditUserHistory.Columns.UserId, Keyword));
                }

                string safeSector = SqlUtils.SafeValue(Keyword);

                jList.Add(string.Format("({0} LIKE '%{1}%')", AuditUserHistory.Columns.SessionId, safeSector));
                jList.Add(string.Format("({0} LIKE '%{1}%')", AuditUserHistory.Columns.IpAddress, safeSector));
                jList.Add(string.Format("({0} LIKE '%{1}%')", AuditUserHistory.Columns.Notes, safeSector));
                jList.Add(string.Format("(Description LIKE '%{0}%')", safeSector));
                jList.Add(string.Format("(UserName LIKE '%{0}%')", safeSector));
                jList.Add(string.Format("(UserEmail LIKE '%{0}%')", safeSector));

                sb.Criteria.Add(jList.ToString());
            }

            if (StartDate.HasValue)
            {
                string criteria = string.Format("[Date] >= '{0}'", StartDate.Value.ToString("yyyy-MM-dd"));
                sb.Criteria.Add(criteria);
            }

            if (EndDate.HasValue)
            {
                string criteria = string.Format("[Date] <= '{0}'", EndDate.Value.ToString("yyyy-MM-dd"));
                sb.Criteria.Add(criteria);
            }

            if (SuccessfulLogins)
            {
                // TODO: Doing a LIKE query is not very efficient.  Need to change this... seperate login events perhaps
                // and add an AuditUserAction for Successful Login and Login Errors

                string criteria = string.Format("(([{0}]={1}) AND ([Notes] LIKE 'Login Successful.%'))", AuditUserHistory.Columns.AuditUserActionId, Convert.ToInt32(AuditUserAction.UserLogin));
                sb.Criteria.Add(criteria);
            }

            if (AuditUserActionList.Count > 0)
            {
                JoinableList jList = new JoinableList();

                foreach (AuditUserAction action in AuditUserActionList)
                {
                    jList.Add(Convert.ToInt32(action));
                }

                sb.Criteria.Add("AuditUserActionId IN (" + jList + ")");
            }

            Debug.WriteLine(sb.GetCountQuery());
        }