Esempio n. 1
0
        private async Task FetchNewMeetings()
        {
            foreach (Source source in await db.Sources.ToListAsync().ConfigureAwait(false))
            {
                ISet <string> seenMeetings = new HashSet <string>(await db.Meetings.Where(m => m.Source == source).Select(m => m.Url.ToString()).ToListAsync().ConfigureAwait(false));
                IScraper      scraper      = CreateScraper(source.Url);

                IEnumerable <Meeting> meetings = await scraper.FindMeetings(null, seenMeetings).ConfigureAwait(false);

                foreach (Meeting meeting in meetings)
                {
                    meeting.Source = source;
                    await db.Meetings.AddAsync(meeting).ConfigureAwait(false);

                    IEnumerable <Document> documents = await scraper.GetDocuments(meeting).ConfigureAwait(false);

                    foreach (Document document in documents)
                    {
                        document.Meeting = meeting;
                        await GetText(document).ConfigureAwait(false);

                        await db.Documents.AddAsync(document).ConfigureAwait(false);

                        await db.SaveChangesAsync().ConfigureAwait(false);
                    }
                }
            }
        }