Beispiel #1
0
        public override ShareCollection GetHotShares(ShareType? shareType, DateTime? beginDate, HotShareSortType sortType, int pageNumber, int pageSize, out int totalCount)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.TableName = "[bx_SharesView]";
                query.Pager.PrimaryKey = "[UserShareID]";
                if (sortType == HotShareSortType.ShareCount)
                    query.Pager.SortField = "ShareCount";
                else
                    query.Pager.SortField = " [AgreeAndOpposeCount] ";
                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = pageSize;
                query.Pager.IsDesc = true;
                query.Pager.SelectCount = true;

                StringBuilder sql = new StringBuilder(" UserShareID IN(SELECT MIN(UserShareID) FROM bx_SharesView WHERE ");
                if (shareType.HasValue && shareType.Value != ShareType.All)
                {
                    sql.Append(" [Type] = @Type AND ");

                    query.CreateParameter<ShareType>("@Type", shareType.Value, SqlDbType.TinyInt);
                }

                if (beginDate != null)
                {
                    sql.Append(" [CreateDate] >= @BeginDate AND ");
                    query.CreateParameter<DateTime>("@BeginDate", beginDate.Value, SqlDbType.DateTime);
                }

                sql.Append(" [PrivacyType] = 0 GROUP BY ShareID) ");
                query.Pager.Condition = sql.ToString();

                ShareCollection shares;
                totalCount = 0;
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    shares = new ShareCollection(reader);

                    if (reader.NextResult())
                    {
                        if (reader.Read())
                        {
                            totalCount = reader.Get<int>(0);
                        }
                    }
                }
                FillComments(shares, query);
                return shares;
            }
        }
Beispiel #2
0
 public abstract ShareCollection GetHotShares(ShareType?shareType, DateTime?beginDate, HotShareSortType sortType, int pageNumber, int pageSize, out int totalCount);