public async Task <List <ResultModel> > GetResults()
        {
            //string[] allowedSport = new string[] { "Football", "TENIS", "Hokej", "Košarka", "Rukomet" };
            //string[] allowedFootballLeague = new string[]
            //    {"ŠPANJOLSKA", "ITALIJA", "FRANCUSKA", "ENGLESKA", "NJEMAČKA"};
            var    date = DateTime.Now;
            string url  = $"https://sportdataprovider.volcanobet.me/api/public/Results/getResultOverviews?date={date.Year}-{date.Month.ToString("00")}-{date.Day}T00:00:00.000Z&sportId=1&clientType=WebConsumer&v=1.1.435&lang=sr-Latn-EN";
            //string url = "https://sportdataprovider.volcanobet.me/api/public/Results/getDailyResultOverviews?sportId=1&clientType=WebConsumer&v=1.1.496-rc6&lang=sr-Latn-ME";
            string         html;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.AutomaticDecompression = DecompressionMethods.GZip;
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                using (Stream stream = response.GetResponseStream())
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        html = reader.ReadToEnd();
                    }
            var results         = JsonConvert.DeserializeObject <List <ResultsModel> >(html);
            var convertedResult = new List <ResultModel>();

            foreach (var result in results.Where(t => t.Scores.Count > 0))
            {
                var match = await _context.Result.Where(t => t.Id == result.Fixture.EventId).FirstOrDefaultAsync();

                if (match == null)
                {
                    var r = new ResultModel();
                    r.Id           = result.Fixture.EventId;
                    r.SportName    = result.Fixture.Sport.Name;
                    r.LeagueName   = $"{result.Fixture.League.LocationName} - {result.Fixture.League.Name}";
                    r.Time         = result.Fixture.StartDate.AddHours(1);
                    r.HomeTeam     = result.Fixture.Participants[0].Name;
                    r.AwayTeam     = result.Fixture.Participants[1].Name;
                    r.WinningTypes = CalculateWinningTypes(Int32.Parse(result.Scores[0].Value),
                                                           Int32.Parse(result.Scores[1].Value));
                    r.Result = $"{result.Scores[0].Value}:{result.Scores[1].Value}";
                    _context.AddRange(r);
                    _context.SaveChanges();
                    convertedResult.Add(r);
                }
            }

            return(convertedResult);
        }
        public async Task GenerateOffer()
        {
            var            date      = DateTime.Now;
            var            yesterday = date.AddDays(-1).ToString("yyyy-MM-dd");
            var            tommorow  = date.AddDays(1).ToString("yyyy-MM-dd");
            string         url       = $"https://sportdataprovider.volcanobet.me/api/public/prematch/SportEvents?SportId=1&from={yesterday}T23:00:00.000Z&to={tommorow}T06:00:00.000Z&timezone=-60&clientType=WebConsumer&v=1.1.496-rc6&lang=sr-Latn-EN";
            string         html;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.AutomaticDecompression = DecompressionMethods.GZip;
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                using (Stream stream = response.GetResponseStream())
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        html = reader.ReadToEnd();
                    }
            var offer = JsonConvert.DeserializeObject <OfferModel>(html);
            var sport = await _context.Sport.Where(s => s.Name == offer.Sport.Name).FirstOrDefaultAsync();

            if (sport == null)
            {
                sport      = new Sport();
                sport.Name = offer.Sport.Name;
                _context.AddRange(sport);
                _context.SaveChanges();
            }

            foreach (var location in offer.Locations)
            {
                foreach (var league in location.Leagues)
                {
                    var leagueDatabase = await _context.League.Where(l => l.Name == $"{location.Name} - {league.Name}")
                                         .SingleOrDefaultAsync();

                    if (leagueDatabase == null)
                    {
                        leagueDatabase       = new League();
                        leagueDatabase.Name  = $"{location.Name} - {league.Name}";
                        leagueDatabase.Sport = sport;
                        _context.League.AddRange(leagueDatabase);
                        _context.SaveChanges();
                    }

                    foreach (var eventDate in league.EventDateGroups)
                    {
                        foreach (var eventDateEvent in eventDate.Events)
                        {
                            var matchModel = new Match();
                            matchModel.Competition = league.Name;
                            matchModel.Id          = eventDateEvent.Id;
                            var types = new Type();
                            matchModel.Sport = sport;
                            matchModel.Time  = eventDateEvent.Fixture.StartDate.AddHours(1);
                            var firstTeam = await _context.Team
                                            .Where(t => t.Name == eventDateEvent.Fixture.Participants[0].Name)
                                            .FirstOrDefaultAsync();

                            var secondTeam = await _context.Team
                                             .Where(t => t.Name == eventDateEvent.Fixture.Participants[1].Name)
                                             .FirstOrDefaultAsync();

                            if (firstTeam == null)
                            {
                                firstTeam        = new Team();
                                firstTeam.League = leagueDatabase;
                                firstTeam.Name   = eventDateEvent.Fixture.Participants[0].Name;
                                _context.Team.AddRange(firstTeam);
                                matchModel.HomeTeam = firstTeam;
                            }

                            if (firstTeam != null)
                            {
                                matchModel.HomeTeam = firstTeam;
                            }
                            if (secondTeam == null)
                            {
                                secondTeam        = new Team();
                                secondTeam.League = leagueDatabase;
                                secondTeam.Name   = eventDateEvent.Fixture.Participants[1].Name;
                                _context.Team.AddRange(secondTeam);
                                matchModel.AwayTeam = secondTeam;
                            }

                            if (secondTeam != null)
                            {
                                matchModel.AwayTeam = secondTeam;
                            }
                            foreach (var market in eventDateEvent.Markets)
                            {
                                if (market.Name == "1x2")
                                {
                                    foreach (var pick in market.Picks)
                                    {
                                        if (pick.Name == "1")
                                        {
                                            types._1 = pick.Odds;
                                        }
                                        if (pick.Name == "x")
                                        {
                                            types._X = pick.Odds;
                                        }
                                        if (pick.Name == "2")
                                        {
                                            types._2 = pick.Odds;
                                        }
                                    }
                                }

                                if (market.Name == "Double chance")
                                {
                                    foreach (var pick in market.Picks)
                                    {
                                        if (pick.Name == "1x")
                                        {
                                            types._1X = pick.Odds;
                                        }
                                        if (pick.Name == "x2")
                                        {
                                            types._X2 = pick.Odds;
                                        }
                                        if (pick.Name == "12")
                                        {
                                            types._12 = pick.Odds;
                                        }
                                    }
                                }
                            }

                            var matchExist = await _context.Match
                                             .Include(h => h.HomeTeam)
                                             .Include(a => a.AwayTeam)
                                             .Where(m => m.HomeTeam == matchModel.HomeTeam && m.AwayTeam == matchModel.AwayTeam &&
                                                    m.Time == matchModel.Time).FirstOrDefaultAsync();

                            if (matchExist == null && matchModel.HomeTeam != null && matchModel.AwayTeam != null)
                            {
                                matchModel.Type     = types;
                                matchModel.TopMatch = false;
                                matchModel.Hide     = false;
                                _context.Match.Add(matchModel);
                                _context.SaveChanges();
                            }
                        }
                    }
                }
            }
        }