/// <summary> /// Preencho o repositório com as HQs novas /// </summary> public void Dump(IComicRepository comicRepository, IAuthorRepository authorRepository, IGenreRepository genreRepository, IPublisherRepository publisherRepository, ILogRepository logRepository) { //Se já processei nesse período, retorno DateTime lastSyncDate = logRepository.GetLastComicListUpdate(); if (lastSyncDate.AddHours(24) > DateTime.Now) return; //Espero terminar de processar while (_working) Thread.Sleep(10); //Busco todas as HQs do banco IList<Comic> repoList = comicRepository.Read(); //Comparo o que mudou foreach (ComicVisitor cacheComic in _cache) { if (repoList.Any(c => c.ComicName.ToUpper().Equals(cacheComic.ComicName.ToUpper()))) continue; //Se tem uma HQ nova, adiciono Comic dbComic = ComicVisitor.ToComic(cacheComic); comicRepository.Add(dbComic); cacheComic.ComicId = dbComic.ComicId; } comicRepository.Save(); logRepository.SetLastComicListUpdate(DateTime.Now); }
/// <summary> /// Preencho a HQ com a id passada /// </summary> public async void Dump(IComicRepository comicRepository, IAuthorRepository authorRepository, IGenreRepository genreRepository, IPublisherRepository publisherRepository, IChapterRepository chapterRepository, ILogRepository logRepository, int id) { //Se já processei nesse período, retorno DateTime lastSyncDate = logRepository.GetLastComicListUpdate(); if (lastSyncDate.AddHours(24) > DateTime.Now) return; //Espero terminar de processar while (_working) Thread.Sleep(10); //Busco a HQ do repositório Comic dbComic = comicRepository.Get(id); //Se não tem no repositório, retorno if (dbComic == null) return; //Busco a HQ do cache ComicVisitor cacheComic = _cache.FirstOrDefault(c => c.ComicUrl == dbComic.ComicUrl); //Se não existe a HQ no cache ou já foi processada, retorno if (cacheComic == null) return; if (cacheComic.ComicState != ComicState.Empty) return; cacheComic.ComicId = id; //Se não processei a HQ ainda //Preencho a HQ cacheComic.ComicState = ComicState.Working; cacheComic = (ComicVisitor)_comicCrawler.Edit(cacheComic); AddAuthor(dbComic, authorRepository, cacheComic.DirtyStateAuthor); AddGenre(dbComic, genreRepository, cacheComic.DirtyStateGenre); AddPublisher(dbComic, publisherRepository, cacheComic.DirtyStatePublisher); AddChapters(id, chapterRepository, cacheComic.Chapters); //Libero a HQ cacheComic.ComicState = ComicState.Visited; }