예제 #1
0
 public Dictionary<int, ResultTransport> GetResultForCompetitions(int[] competitionIDs)
 {
     return InvokeSafe(() => {
         var results = CompetitionResult.DataSource
             .WhereIn(CompetitionResult.Fields.CompetitionitemID, competitionIDs)
             .AsList(
                 CompetitionResult.Fields.CompetitionitemID,
                 CompetitionResult.Fields.ScoreID
             );
         var mapSubresult = CompetitionResultAdvanced.DataSource
             .WhereIn(CompetitionResultAdvanced.Fields.CompetitionresultID, results.Select(r => r.ID))
             .Sort(CompetitionResultAdvanced.Fields.ID, SortDirection.Asc)
             .AsMapByField<int>(CompetitionResultAdvanced.Fields.CompetitionresultID,
                 CompetitionResultAdvanced.Fields.ScoreID
             );
         var result = new Dictionary<int, ResultTransport>();
         foreach (var r in results) {
             var competitionID = r.CompetitionitemID;
             var subresult = mapSubresult.TryGetValueOrDefault(r.ID) ?? new List<CompetitionResultAdvanced>();
             result[competitionID] = new ResultTransport {
                 CompetitionID = competitionID,
                 ScoreID = r.ScoreID,
                 SubScore = subresult.Select(s => s.ScoreID).ToArray()
             };
         }
         return result;
     }, null);
 }
예제 #2
0
 public static List<BetOddType> GetSuccessOddTypes(SportType sportType, ResultTransport resultTransport, Dictionary<BetOddType, BetItemTransport> currentBets)
 {
     var resultScore = ScoreHelper.Instance.GenerateScore(resultTransport.ScoreID);
     var successActs = new List<BetOddType> {ScoreHelper.Instance.GetResultType(resultScore.Item1, resultScore.Item2)};
     var totalScore = Tuple.Create(resultScore.Item1, resultScore.Item2);
     if (_sportTypesTotalScoreBySum.Contains(sportType)) {
         totalScore = Tuple.Create((short) 0, (short) 0);
         resultTransport.SubScore.Select(ScoreHelper.Instance.GenerateScore).Each(tuple => { totalScore = Tuple.Create((short) (totalScore.Item1 + tuple.Item1), (short) (totalScore.Item2 + tuple.Item2)); });
     }
     if (currentBets != null) {
         BetItemTransport betItemTransport;
         if (currentBets.TryGetValue(BetOddType.Handicap2, out betItemTransport)) {
             var advancedParam = betItemTransport.AdvancedParam;
             successActs.Add(advancedParam < totalScore.Item1 - totalScore.Item2
                 ? BetOddType.Handicap1
                 : advancedParam > totalScore.Item1 - totalScore.Item2
                     ? BetOddType.Handicap2
                     : BetOddType.Unknown);
         }
         if (currentBets.TryGetValue(BetOddType.TotalUnder, out betItemTransport)) {
             successActs.Add(betItemTransport.AdvancedParam > totalScore.Item1 + totalScore.Item2
                 ? BetOddType.TotalUnder
                 : betItemTransport.AdvancedParam < totalScore.Item1 + totalScore.Item2
                     ? BetOddType.TotalOver
                     : BetOddType.Unknown);
         }
     }
     return successActs;
 }
예제 #3
0
 public Dictionary<int, ResultTransport> GetResultLiveForCompetitions(int[] competitionIDs)
 {
     return InvokeSafe(() => {
         var results = CompetitionResultLive.DataSource
             .WhereIn(CompetitionResultLive.Fields.CompetitionitemID, competitionIDs)
             .Sort(CompetitionResultLive.Fields.ID, SortDirection.Desc)
             .AsList(
                 CompetitionResultLive.Fields.CompetitionitemID,
                 CompetitionResultLive.Fields.ScoreID
             );
         var mapSubresult = CompetitionResultLiveAdvanced.DataSource
             .WhereIn(CompetitionResultLiveAdvanced.Fields.CompetitionresultliveID, results.Select(r => r.ID))
             .Sort(CompetitionResultLiveAdvanced.Fields.ID, SortDirection.Asc)
             .AsMapByField<long>(CompetitionResultLiveAdvanced.Fields.CompetitionresultliveID,
                 CompetitionResultLiveAdvanced.Fields.ScoreID
             );
         var result = new Dictionary<int, ResultTransport>();
         foreach (var r in results) {
             var competitionID = r.CompetitionitemID;
             var subresult = mapSubresult.TryGetValueOrDefault(r.ID) ?? new List<CompetitionResultLiveAdvanced>();
             if (result.ContainsKey(competitionID)) {
                 continue;
             }
             result[competitionID] = new ResultTransport {
                 CompetitionID = competitionID,
                 ScoreID = r.ScoreID,
                 SubScore = new [] { subresult.Select(s => s.ScoreID).LastOrDefault() }
             };
         }
         return result;
     }, null);
 }