Beispiel #1
0
        public List <LineDTO> GetLinesFromEvent(LineDTO template, List <Market> markets)
        {
            var localLines = new List <LineDTO>();

            foreach (var market in markets)
            {
                var copy = template.Clone();

                var localGameType = string.Empty;

                // Извлекаем тип игры: угловые, (желтые, красные карты), картер, и т.д.
                if (string.IsNullOrEmpty(localGameType))
                {
                    localGameType = ConverterHelper.GetGameType(market.market_name);
                }

                if (!ConverterHelper.GetPeriod(market.result_type_name, out var period))
                {
                    continue;
                }

                copy.CoeffType = $"{period} {localGameType}";

                if (!CheckExceptions(copy, market))
                {
                    continue;
                }

                foreach (var outcome in market.outcomes)
                {
                    if (!outcome.outcome_visible)
                    {
                        continue;
                    }

                    var line = copy.Clone();

                    // Номер команды

                    if (market.market_name.ContainsIgnoreCase("match winner", "1 X 2", "Double chance", "Odd / Even"))
                    {
                        line.CoeffKind = outcome.outcome_short_name;
                    }
                    else if (market.market_name.ContainsIgnoreCase("Draw No Bet"))
                    {
                        line.CoeffKind = $"W{outcome.outcome_short_name}";
                    }
                    else if (market.market_name.ContainsIgnoreCase("Handicap"))
                    {
                        line.CoeffKind = $"HANDICAP{outcome.participant_number}";
                    }
                    else if (market.market_name.ContainsIgnoreCase("Over/Under"))
                    {
                        line.CoeffKind = $"TOTAL{outcome.outcome_name.Split(" ")[0].ToUpper()}";
                    }
                    else if (market.market_name.ContainsIgnoreCase("Team total"))
                    {
                        line.CoeffKind = $"ITOTAL{outcome.outcome_name.Split(" ")[0].ToUpper()}{outcome.participant_number}";
                    }
                    else if (market.market_name.ContainsIgnoreCase("Odd / Even"))
                    {
                        line.CoeffKind = $"ITOTAL{outcome.outcome_name.Split(" ")[0].ToUpper()}{outcome.participant_number}";
                    }
                    else
                    {
                        continue;
                    }

                    //Параметр
                    if (decimal.TryParse(outcome.outcome_param, NumberStyles.Any, CultureInfo.InvariantCulture, out var param))
                    {
                        line.CoeffParam = param;
                    }

                    line.CoeffValue = outcome.outcome_coef;

                    line.LineData = new StoreBet {
                        OutcomeId = outcome.outcome_id.ToLong(), EventId = market.event_id.ToLong(), MarketId = market.market_id.ToLong()
                    };

                    line.UpdateName();

                    localLines.Add(line);
                }
            }

            return(localLines);
        }