private async Task UpdateFixtures(EPS3838Sport sport)
        {
            var sinceKey = $"Fixtures_{(int)sport}";

            await using var db = _serviceProvider.CreateScope().ServiceProvider.GetRequiredService <AppDatabase>();

            var since = await db.Sinces.FirstOrDefaultAsync(f => f.For == sinceKey);

            if (since == null)
            {
                since = new DBSince {
                    For = sinceKey
                };
                await db.Sinces.AddAsync(since);
            }

            var line = await _ps3838Client.FixturesV3Async(sport, since : since.Value);

            since.Value = line.Last;

            foreach (var league in line.League)
            {
                var existLeague = await db.Leagues.FirstOrDefaultAsync(f => f.Id == league.Id);

                if (existLeague == null)
                {
                    existLeague = new DBLeague {
                        Id = league.Id, Name = league.Name, SportId = (int)sport
                    };
                    await db.Leagues.AddAsync(existLeague);
                }

                foreach (var @event in league.Events.Where(w => w.ParentId == null && w.ResultingUnit == EPS3838Unit.Regular))
                {
                    var existEvent = await db.Events.FirstOrDefaultAsync(f => f.Id == @event.Id);

                    if (existEvent == null)
                    {
                        var newEvent = new DBEvent
                        {
                            Id       = @event.Id,
                            Home     = @event.Home,
                            Away     = @event.Away,
                            IsLive   = @event.LiveStatus == EPS3838LiveStatus.Live,
                            IsOpen   = @event.Status != EPS3838EventStatus.Unavailable,
                            StartAt  = @event.Starts,
                            LeagueId = existLeague.Id
                        };

                        await db.Events.AddAsync(newEvent);
                    }
                    else
                    {
                        existEvent.IsLive = @event.LiveStatus == EPS3838LiveStatus.Live;
                        existEvent.IsOpen = @event.Status != EPS3838EventStatus.Unavailable;
                    }
                }
            }

            await db.SaveChangesAsync();
        }
示例#2
0
        private ManagementLeague()
        {
            var DBLeague = new DBLeague();

            DBLeague.ReadAllLeagues(Leagues);
        }