private static CompetitionItemRoiRow[] BuildResult(DbStoredProc proc, SportType sportType, int[] competitionUniqueIDs, BrokerType[] brokerTypes) { if (brokerTypes != null) { proc = proc.WithParam("argbrokerids", brokerTypes.Select(b => (short)b), DbType.Int16); } if (competitionUniqueIDs != null) { proc = proc.WithParam("argcompetitionuniqueids", competitionUniqueIDs, DbType.Int32); } if (sportType != SportType.Unknown) { proc = proc.WithParam("argsporttype", (short) sportType); } var data = proc.MultiRowExec(DatabaseActions.GetAdapter(TargetDB.MASTER), "fn_getbetroi").Data; var result = new CompetitionItemRoiRow[data.Count]; for (var i = 0; i < result.Length; i++) { var row = data[i]; var betData = (int[])row[1]; var betIDs = new Dictionary<BetOddType, int>(); for (var j = 0; j < betData.Length; j+=2) { betIDs[(BetOddType) (short) betData[j]] = betData[j + 1]; } result[i] = new CompetitionItemRoiRow { ID = (int)row[0], BetIDs = betIDs, Roi = (float) row[2], RoiType = (RoiType) (short) row[3] }; } return result; }
public static RoiTransport BuildRoiTransport(CompetitionItemRoiRow roi, Dictionary<int, IBet<int>> betMap) { var oddsGetterMap = BetMappingHelper<int>.OddsGetterMap; var odds = roi.BetIDs .Select(b => new KeyValuePair<BetOddType, BetItemTransport>(b.Key, oddsGetterMap[b.Key](betMap[b.Value]))) .ToDictionary(kv => kv.Key, kv => kv.Value); return new RoiTransport { RoiType = roi.RoiType, Roi = roi.Roi, Odds = odds }; }