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); }
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; }
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); }