/// <summary>
        /// 获取投注信息
        /// </summary>
        /// <param name="db">数据库连接对象</param>
        /// <returns>返回投注信息</returns>
        public PageResult<BettingExport> GetBettings(IModelToDbContextOfLottery db)
        {
            if (this.PageIndex < 1) { this.PageIndex = 1; }
            SettingOfBase settingOfBase = new SettingOfBase(db);
            int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1);

            Expression<Func<Betting, bool>> predicate1 = x => x.Id > 0;
            Expression<Func<Betting, bool>> predicate2 = x => x.Id > 0;
            Expression<Func<Betting, bool>> predicate3 = x => x.Id > 0;
            Expression<Func<Betting, bool>> predicate4 = x => x.Id > 0;
            Expression<Func<Betting, bool>> predicate5 = x => x.Id > 0;

            if (this.KeywordForUsername != null)
            {
                this.KeywordForUsername = VerifyHelper.EliminateSpaces(this.KeywordForUsername);
                string[] keywords = this.KeywordForUsername.Split(new char[] { ' ' });
                predicate1 = x => keywords.All(kw => x.Owner.Username.Contains(kw));
            }
            if (this.OwnerId != null)
            {
                int ownerId = (int)this.OwnerId;
                predicate2 = x => x.Owner.Id == ownerId;
            }
            if (this.BeginTime != null)
            {
                DateTime beginTime = (DateTime)this.BeginTime;
                predicate3 = x => x.CreatedTime >= beginTime;
            }
            if (this.EndTime != null)
            {
                DateTime endTime = (DateTime)this.EndTime;
                predicate4 = x => x.CreatedTime < endTime;
            }
            if (this.Status != null)
            {
                BettingStatus status = (BettingStatus)this.Status;
                predicate5 = x => x.Status == status;
            }

            int countOfAllMessages = db.Bettings
                .Where(predicate1)
                .Where(predicate2)
                .Where(predicate3)
                .Where(predicate4)
                .Where(predicate5)
                .Count();
            var tList = db.Bettings
                .Where(predicate1)
                .Where(predicate2)
                .Where(predicate3)
                .Where(predicate4)
                .Where(predicate5)
                .OrderByDescending(x => x.CreatedTime)
                .Skip(startRow)
                .Take(settingOfBase.PageSizeForAdmin)
                .ToList()
                .ConvertAll(x => new BettingExport(x));

            return new PageResult<BettingExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList);
        }
        /// <summary>
        /// 获取彩票信息
        /// </summary>
        /// <param name="db">数据库连接对象</param>
        /// <returns>返回彩票信息</returns>
        public PageResult<LotteryTicketExport> GetLotteryTickets(IModelToDbContextOfLottery db)
        {
            if (this.PageIndex < 1) { this.PageIndex = 1; }
            SettingOfBase settingOfBase = new SettingOfBase(db);
            int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1);

            Expression<Func<LotteryTicket, bool>> predicate1 = x => x.Id > 0;

            if (this.KeywordForName != null)
            {
                this.KeywordForName = VerifyHelper.EliminateSpaces(this.KeywordForName);
                string[] keywords = this.KeywordForName.Split(new char[] { ' ' });
                predicate1 = x => keywords.All(kw => x.Name.Contains(kw));
            }

            int countOfAllMessages = db.LotteryTickets
                .Where(predicate1)
                .Count();
            var tList = db.LotteryTickets
                .Where(predicate1)
                .OrderBy(x => x.Order)
                .Skip(startRow)
                .Take(settingOfBase.PageSizeForAdmin)
                .ToList()
                .ConvertAll(x => new LotteryTicketExport(x));

            return new PageResult<LotteryTicketExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList);
        }
 /// <summary>
 /// 获取彩票信息
 /// </summary>
 /// <param name="db">数据库连接对象</param>
 /// <returns>返回彩票信息</returns>
 public NormalResult<List<LotteryTicketExport>> GetTickets(IModelToDbContextOfLottery db)
 {
     List<LotteryTicketExport> tList = db.LotteryTickets.Where(x => x.Hide == false)
         .OrderBy(x => x.Order)
         .ToList()
         .ConvertAll(x => new LotteryTicketExport(x));
     return new NormalResult<List<LotteryTicketExport>>(tList);
 }
 /// <summary>
 /// 获取开奖记录
 /// </summary>
 /// <param name="db">数据库连接对象</param>
 /// <returns>返回开奖记录</returns>
 public NormalResult<List<LotteryExport>> GetLotteries(IModelToDbContextOfLottery db)
 {
     List<LotteryExport> tList = db.Lotterys
         .Where(x => x.Ticket.Id == this.TicketId)
         .OrderByDescending(x => x.CreatedTime)
         .Take(this.Count)
         .ToList()
         .ConvertAll(x => new LotteryExport(x));
     return new NormalResult<List<LotteryExport>>(tList);
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="db"></param>
 /// <returns></returns>
 public NormalResult<List<TopBonus>> GetTopBonus(IModelToDbContextOfLottery db)
 {
     if (this.TicketId == null)
     {
         List<TopBonus> t = new List<TopBonus>();
         List<TopBonus> t1 = db.VirtualBonuss
             .OrderByDescending(x => x.Sum)
             .Take(this.Notes)
             .ToList()
             .ConvertAll(x => new TopBonus(x));
         List<TopBonus> t2 = db.Bettings
             .OrderByDescending(x => x.Bonus)
             .Take(this.Notes)
             .ToList()
             .ConvertAll(x => new TopBonus(x));
         List<TopBonus> t3 = db.BettingWithChasings
             .OrderByDescending(x => x.Bonus)
             .Take(this.Notes)
             .ToList()
             .ConvertAll(x => new TopBonus(x));
         t.AddRange(t1);
         t.AddRange(t2);
         t.AddRange(t3);
         t = t.OrderByDescending(x => x.Sum).Take(this.Notes).ToList();
         return new NormalResult<List<TopBonus>>(t);
     }
     else
     {
         int ticketId = (int)this.TicketId;
         List<TopBonus> t = new List<TopBonus>();
         List<TopBonus> t1 = db.VirtualBonuss
             .Where(x => x.Ticket.Id == ticketId)
             .OrderByDescending(x => x.Sum)
             .Take(this.Notes)
             .ToList()
             .ConvertAll(x => new TopBonus(x));
         List<TopBonus> t2 = db.Bettings
             .Where(x => x.HowToPlay.Tag.Ticket.Id == ticketId)
             .OrderByDescending(x => x.Bonus)
             .Take(this.Notes)
             .ToList()
             .ConvertAll(x => new TopBonus(x));
         List<TopBonus> t3 = db.BettingWithChasings
             .Where(x => x.Chasing.HowToPlay.Tag.Ticket.Id == ticketId)
             .OrderByDescending(x => x.Bonus)
             .Take(this.Notes)
             .ToList()
             .ConvertAll(x => new TopBonus(x));
         t.AddRange(t1);
         t.AddRange(t2);
         t.AddRange(t3);
         t = t.OrderByDescending(x => x.Sum).Take(this.Notes).ToList();
         return new NormalResult<List<TopBonus>>(t);
     }
 }
        /// <summary>
        /// 设置并保存
        /// </summary>
        /// <param name="db"></param>
        public void SetAndSave(IModelToDbContextOfLottery db)
        {
            SettingOfLottery setting = new SettingOfLottery(db);

            setting.UnitPrice = this.UnitPrice;
            setting.PayoutBase = this.PayoutBase;
            setting.LineForProhibitBetting = this.LineForProhibitBetting;
            setting.MaximumPayout = this.MaximumPayout;
            setting.ConversionRates = this.ConversionRates;
            setting.MaximumBetsNumber = this.MaximumBetsNumber;
            setting.ClosureSingleTime = this.ClosureSingleTime;

            setting.Save(db);
        }
        /// <summary>
        /// 获取追号信息
        /// </summary>
        /// <param name="db">数据库连接对象</param>
        /// <returns>返回追号信息</returns>
        public PageResult<ChasingExport> GetChasings(IModelToDbContextOfLottery db)
        {
            if (this.PageIndex < 1) { this.PageIndex = 1; }
            SettingOfBase settingOfBase = new SettingOfBase(db);
            int startRow = settingOfBase.PageSizeForClient * (this.PageIndex - 1);

            Expression<Func<Chasing, bool>> predicate1 = x => x.Owner.Id == this.Self.Id;
            Expression<Func<Chasing, bool>> predicate2 = x => x.Id > 0;
            Expression<Func<Chasing, bool>> predicate3 = x => x.Id > 0;

            if (this.BeginTime != null)
            {
                DateTime beginTime = (DateTime)this.BeginTime;
                predicate2 = x => x.CreatedTime >= beginTime;
            }
            if (this.EndTime != null)
            {
                DateTime endTime = (DateTime)this.EndTime;
                predicate3 = x => x.CreatedTime < endTime;
            }

            int countOfAllMessages = db.Chasings
                .Where(predicate1)
                .Where(predicate2)
                .Where(predicate3)
                .Count();
            var tList = db.Chasings
                .Where(predicate1)
                .Where(predicate2)
                .Where(predicate3)
                .OrderByDescending(x => x.CreatedTime)
                .Skip(startRow)
                .Take(settingOfBase.PageSizeForClient)
                .ToList()
                .ConvertAll(x =>
                {
                    List<BettingWithChasing> bettings = db.BettingWithChasings.Where(b => b.Chasing.Id == x.Id).ToList();
                    return new ChasingExport(x, bettings);
                });

            return new PageResult<ChasingExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForClient, tList);
        }
 /// <summary>
 /// 获取彩票模块的系统设置
 /// </summary>
 /// <param name="db">数据集</param>
 /// <returns>返回彩票模块的系统设置</returns>
 public NormalResult<SettingOfLotteryExport> GetSettingOfLottery(IModelToDbContextOfLottery db)
 {
     var s = new SettingOfLotteryExport(new SettingOfLottery(db));
     return new NormalResult<SettingOfLotteryExport>(s);
 }