コード例 #1
0
        public int ConvertToQuery()
        {
            var qb = DbUtil.Db.QueryBuilderScratchPad();

            qb.CleanSlate(DbUtil.Db);

            if (m.memberstatus > 0)
            {
                qb.AddNewClause(QueryType.MemberStatusId, CompareType.Equal,
                                QueryModel.IdCode(cv.MemberStatusCodes(), m.memberstatus));
            }

            if (m.name.HasValue())
            {
                string First, Last;
                NameSplit(m.name, out First, out Last);
                if (First.HasValue())
                {
                    var g = qb.AddNewGroupClause(CompareType.AnyTrue);
                    g.AddNewClause(QueryType.LastName, CompareType.StartsWith, Last);
                    g.AddNewClause(QueryType.MaidenName, CompareType.StartsWith, Last);
                    g = qb.AddNewGroupClause(CompareType.AnyTrue);
                    g.AddNewClause(QueryType.FirstName, CompareType.StartsWith, First);
                    g.AddNewClause(QueryType.NickName, CompareType.StartsWith, First);
                    g.AddNewClause(QueryType.MiddleName, CompareType.StartsWith, First);
                }
                else
                {
                    if (Last.AllDigits())
                    {
                        qb.AddNewClause(QueryType.PeopleId, CompareType.Equal, Last.ToInt());
                    }
                    else
                    {
                        qb.AddNewClause(QueryType.LastName, CompareType.StartsWith, Last);
                    }
                }
            }
            if (m.address.IsNotNull())
            {
                if (AddrRegex.IsMatch(m.address))
                {
                    var match = AddrRegex.Match(m.address);
                    m.address = match.Groups["addr"].Value;
                }
                m.address = m.address.Trim();
                if (m.address.HasValue())
                {
                    var g = qb.AddNewGroupClause(CompareType.AnyTrue);
                    g.AddNewClause(QueryType.PrimaryAddress, CompareType.Contains, m.address);
                    g.AddNewClause(QueryType.PrimaryAddress2, CompareType.Contains, m.address);
                    g.AddNewClause(QueryType.PrimaryCity, CompareType.Contains, m.address);
                    g.AddNewClause(QueryType.PrimaryZip, CompareType.Contains, m.address);
                }
            }
            if (m.communication.IsNotNull())
            {
                m.communication = m.communication.Trim();
                if (m.communication.HasValue())
                {
                    var g = qb.AddNewGroupClause(CompareType.AnyTrue);
                    g.AddNewClause(QueryType.CellPhone, CompareType.Contains, m.communication);
                    g.AddNewClause(QueryType.EmailAddress, CompareType.Contains, m.communication);
                    g.AddNewClause(QueryType.EmailAddress2, CompareType.Contains, m.communication);
                    g.AddNewClause(QueryType.HomePhone, CompareType.Contains, m.communication);
                    g.AddNewClause(QueryType.WorkPhone, CompareType.Contains, m.communication);
                }
            }
            if (m.birthdate.HasValue() && m.birthdate.NotEqual("na"))
            {
                DateTime dt;
                if (DateTime.TryParse(m.birthdate, out dt))
                {
                    if (Regex.IsMatch(m.birthdate, @"\d+/\d+/\d+"))
                    {
                        qb.AddNewClause(QueryType.Birthday, CompareType.Equal, m.birthdate);
                    }
                    else
                    {
                        qb.AddNewClause(QueryType.Birthday, CompareType.Equal, m.birthdate);
                    }
                }
                else
                {
                    int n;
                    if (int.TryParse(m.birthdate, out n))
                    {
                        if (n >= 1 && n <= 12)
                        {
                            qb.AddNewClause(QueryType.Birthday, CompareType.Equal, m.birthdate);
                        }
                        else
                        {
                            qb.AddNewClause(QueryType.Birthday, CompareType.Equal, m.birthdate);
                        }
                    }
                }
            }
            if (m.campus > 0)
            {
                qb.AddNewClause(QueryType.CampusId, CompareType.Equal,
                                QueryModel.IdCode(cv.AllCampuses(), m.campus));
            }
            else if (m.campus == -1)
            {
                qb.AddNewClause(QueryType.CampusId, CompareType.IsNull,
                                QueryModel.IdCode(cv.AllCampuses(), m.campus));
            }
            if (m.gender != 99)
            {
                qb.AddNewClause(QueryType.GenderId, CompareType.Equal,
                                QueryModel.IdCode(cv.GenderCodes(), m.gender));
            }
            if (m.marital != 99)
            {
                qb.AddNewClause(QueryType.MaritalStatusId, CompareType.Equal,
                                QueryModel.IdCode(cv.MaritalStatusCodes(), m.marital));
            }
            if (m.statusflags != null)
            {
                foreach (var f in m.statusflags)
                {
                    qb.AddNewClause(QueryType.StatusFlag, CompareType.Equal,
                                    QueryModel.IdCode(cv.StatusFlags(), f));
                }
            }
            qb.AddNewClause(QueryType.IncludeDeceased, CompareType.Equal, "1,T");
            DbUtil.Db.SubmitChanges();
            return(qb.QueryId);
        }