/// <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; }