static void Main() { var entriesComparersTypes = GetTypesThatImplementsInterface(typeof(IEqualityComparer <Entry>)); var firstComparer = Activator.CreateInstance(entriesComparersTypes.First()); //Aktualnie dumpy będą zapisywane w plikach IDumpsRepository dumpsRepository = new DumpFileRepository(); IDziennikBaltyckiService dziennikBaltyckiService = new DziennikBaltyckiService(); var webSiteIntegrationsTypes = GetTypesThatImplementsInterface(typeof(IWebSiteIntegration)); foreach (var webSiteIntegrationType in webSiteIntegrationsTypes) { //Poniższa linijka kodu z pomocą refleksji tworzy instancje konkretnej integracji var webSiteIngegration = (IWebSiteIntegration)Activator.CreateInstance( webSiteIntegrationType, dumpsRepository, firstComparer, dziennikBaltyckiService); //Pobierz wszystkie dane dumpów, jednak bez konkretnych ofert by nie zaśmiecić pamięci var oldDumpsDetails = webSiteIngegration.DumpsRepository.GetAllDumpDetails(webSiteIngegration.WebPage); //Tu następuje wykonywanie zrzutu ze strony internetowej var newDump = webSiteIngegration.GenerateDump(); foreach (var oldDumpDetails in oldDumpsDetails) { //Załaduj całego dumpa z pamięci wraz z ofertami var oldDump = webSiteIngegration.DumpsRepository.GetDump(oldDumpDetails); //Znajdź wszystkie oferty w starych dumpach których nie ma w nowym dumpie... foreach (var closedEntry in oldDump.Entries.Where(_ => _.OfferDetails.IsStillValid == true) .Except( newDump.Entries, webSiteIngegration.EntriesComparer)) { //...i oznacz je jako niekatualne closedEntry.OfferDetails.IsStillValid = false; } //Zapisz zmiany w dumpach do repozytorium webSiteIngegration.DumpsRepository.UpdateDump(oldDump); } //Zapisz nowy dump do repozytorium webSiteIngegration.DumpsRepository.InsertDump(newDump); } }
public void SetUp() { _page = new Page(); _dziennikBaltyckiService = new DziennikBaltyckiService(); }