コード例 #1
0
        public object Get([FromUri] VisitorSearchModel pager = null)
        {
            if (pager == null)
            {
                pager = new VisitorSearchModel();
            }
            var query      = _context.People;
            var totalCount = query.Count();

            var pred = PredicateBuilder.True <Person>();

            if (!string.IsNullOrWhiteSpace(pager.Firstname))
            {
                pred = pred.And(p => p.Firstname.Contains(pager.Firstname));
            }
            if (!string.IsNullOrWhiteSpace(pager.Lastname))
            {
                pred = pred.And(p => p.Lastname.Contains(pager.Lastname));
            }
            if (!string.IsNullOrWhiteSpace(pager.EmailAddress))
            {
                pred = pred.And(p => p.EmailAddress.Contains(pager.EmailAddress));
            }
            if (!string.IsNullOrWhiteSpace(pager.Zipcode))
            {
                pred = pred.And(p => p.Zipcode.Contains(pager.Zipcode));
            }

            if (pager.FuzzyMatchRange != null && pager.FuzzyMatchRange.Length == 1)
            {
                var min = pager.FuzzyMatchRange[0].ToDecimal();
                pred = pred.And(p => p.FuzzyMatchValue >= min);
            }
            if (pager.FuzzyMatchRange != null && pager.FuzzyMatchRange.Length == 2)
            {
                var min = pager.FuzzyMatchRange[0].ToDecimal();
                var max = pager.FuzzyMatchRange[1].ToDecimal();
                pred = pred.And(p => p.FuzzyMatchValue >= min && p.FuzzyMatchValue <= max);
            }
            var greaterThanDate = DateTime.Now.AddDays(pager.DaysOld * -1);

            if (greaterThanDate.Date != DateTime.Today.Date)
            {
                pred = pred.And(p => p.DateCreated >= greaterThanDate);
            }

            var filteredQuery = query.Where(pred);
            var pagerCount    = filteredQuery.Count();

            var results = filteredQuery
                          .Order(pager.OrderBy, pager.OrderDirection == "desc" ? SortDirection.Descending : SortDirection.Ascending)
                          .ThenByDescending(m => m.DateCreated)
                          .Skip(pager.PageSize * (pager.Page - 1) ?? 0)
                          .Take(pager.PageSize ?? PAGE_SIZE)
                          .ToList();

            var totalPages = Math.Ceiling((double)pagerCount / pager.PageSize ?? PAGE_SIZE);

            pager.TotalCount    = totalCount;
            pager.FilteredCount = pagerCount;
            pager.TotalPages    = totalPages;
            pager.Results       = results;

            return(Ok(pager));
        }
コード例 #2
0
        /// <summary>
        /// flag (time:按照时间查询 top:按照次数查询)
        /// </summary>
        public string GetListByTimeAndTop(VisitorSearchModel v)
        {
            string Time = DataHelper.IsNullReturnLine(v.Time);
            string VCertificateNumber = DataHelper.IsNullReturnLine(v.VCertificateNumber);
            string Top  = DataHelper.IsNullReturnLine(v.Top);
            string Flag = DataHelper.IsNullReturnLine(v.Flag);
            string sql  = "";

            SqlParameter[] pms = null;
            if (string.IsNullOrEmpty(VCertificateNumber))
            {
                return(ConvertHelper.resultJson(0, "证件号不能为空"));
            }
            if (Flag == "time")
            {
                if (string.IsNullOrEmpty(Time))
                {
                    return(ConvertHelper.resultJson(0, "请选择时间"));
                }
                string timeStart = Time.Split(' ')[0] + " 00:00:00";
                string timeEnd   = Time.Split(' ')[1] + " 23:59:59";
                pms = new SqlParameter[] {
                    new SqlParameter("@timeStart", SqlDbType.NVarChar)
                    {
                        Value = (timeStart)
                    },
                    new SqlParameter("@timeEnd", SqlDbType.NVarChar)
                    {
                        Value = (timeEnd)
                    },
                    new SqlParameter("@VCertificateNumber", SqlDbType.NVarChar)
                    {
                        Value = (VCertificateNumber)
                    }
                };
                sql += "select v.VId,v.VName,v.VSex,v.VNation,v.VBirthDate,v.VAddress,v.VIssuingAuthority,v.VExpiryDate,v.VCertificateType,v.VCertificateNumber,v.VType,v.VFromCourtId,v.VInTime,v.VOutTime,v.VInPost,v.VOutPost,v.VInDoorkeeper,v.VOutDoorkeeper,v.VVisitingReason,v.VIntervieweeDept,v.VInterviewee,v.VOffice,v.VOfficePhone,v.VExtensionPhone,v.VMobilePhone,v.VRemark,c.CName from T_VisitorAccessInf v ";
                sql += "left join T_CourtInf c ";
                sql += "on v.VFromCourtId = c.CNumber ";
                sql += "where v.VInTime between @timeStart and @timeEnd ";
                sql += "and v.VCertificateNumber=@VCertificateNumber ";
                sql += "order by v.VId desc";
            }
            else if (Flag == "top")
            {
                if (string.IsNullOrEmpty(Top.ToString()))
                {
                    return(ConvertHelper.resultJson(0, "次数不能为空"));
                }
                pms = new SqlParameter[] {
                    new SqlParameter("@Top", SqlDbType.Int)
                    {
                        Value = (Convert.ToInt32(Top))
                    },
                    new SqlParameter("@VCertificateNumber", SqlDbType.NVarChar)
                    {
                        Value = (VCertificateNumber)
                    }
                };
                sql += "select top (@Top) v.VId,v.VName,v.VSex,v.VNation,v.VBirthDate,v.VAddress,v.VIssuingAuthority,v.VExpiryDate,v.VCertificateType,v.VCertificateNumber,v.VType,v.VFromCourtId,v.VInTime,v.VOutTime,v.VInPost,v.VOutPost,v.VInDoorkeeper,v.VOutDoorkeeper,v.VVisitingReason,v.VIntervieweeDept,v.VInterviewee,v.VOffice,v.VOfficePhone,v.VExtensionPhone,v.VMobilePhone,v.VRemark,c.CName from T_VisitorAccessInf v ";
                sql += "left join T_CourtInf c ";
                sql += "on v.VFromCourtId = c.CNumber ";
                sql += "where v.VCertificateNumber=@VCertificateNumber ";
                sql += "order by v.VId desc";
            }
            DataTable dt;

            try
            {
                dt = SQLHelper.ExecuteDataTable(sql, CommandType.Text, pms);
                return("{\"code\":1,\"data\":" + ConvertHelper.DataTableToJson(dt) + "}");
                //return ConvertHelper.DataTableToJson(dt);
                //return dt;
            }
            catch (Exception e)
            {
                //在webapi中要想抛出异常必须这样抛出,否则只抛出一个默认500的异常
                var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content      = new StringContent(e.ToString()),
                    ReasonPhrase = "error"
                };
                throw new HttpResponseException(resp);
            }
        }