static void DoOperations(GeoIPDbContext dbContext, Config config) { DateTime start = DateTime.Now; DateTime finish; DateTime startNext; //download updates; string md5FileName, dataFileName, md5Hash; startNext = DateTime.Now; Console.WriteLine($"Загрузка обновлений: {startNext}"); if (Utilites.DownloadFile(config.MD5FileUrl, config.TempFolder, out md5FileName)) { using (StreamReader md5Reader = new StreamReader(md5FileName)) { md5Hash = md5Reader.ReadLine(); } if (Utilites.DownloadFile(config.DataFileUrl, config.TempFolder, md5Hash, out dataFileName, out bool checkRes)) { Console.WriteLine($"Check MD5: {(checkRes ? "OK" : "failed")}"); } else { return; } } else { return; } finish = DateTime.Now; Console.WriteLine($"Загрузка завершена: {finish - startNext}"); //extract updates; startNext = DateTime.Now; Console.WriteLine($"Распаковка обновлений: {startNext}"); string[] extractedFiles = Utilites.ExtractFromZip(dataFileName, config.CashFolder, new string[] { config.Locations_CSV_FileName, config.BlocksIPv4_CSV_FileName }); finish = DateTime.Now; Console.WriteLine($"Распаковка завершена: {finish - startNext}"); //remove temporary files and ordering data; startNext = DateTime.Now; Console.WriteLine($"Удаление временных файлов: {startNext}"); string blocksFileName; string locationsFileName = blocksFileName = string.Empty; for (int i = 0; i < extractedFiles.Length; i++) { if (extractedFiles[i].EndsWith(config.Locations_CSV_FileName)) { locationsFileName = extractedFiles[i]; } else if (extractedFiles[i].EndsWith(config.BlocksIPv4_CSV_FileName)) { blocksFileName = extractedFiles[i]; } } string cashedFilesPath = Path.GetDirectoryName(locationsFileName); File.Move(md5FileName, Path.Combine(cashedFilesPath, Path.GetFileName(md5FileName))); File.Move(dataFileName, Path.Combine(cashedFilesPath, Path.GetFileName(dataFileName))); finish = DateTime.Now; Console.WriteLine($"Удаление завершено: {finish - startNext}"); //install updates; startNext = DateTime.Now; Console.WriteLine($"Установка обновлений: {startNext}"); bool updRes = Updater.DatabaseUpdate(config.ConnectionString, blocksFileName, locationsFileName); if (updRes) { dbContext.Updates.Add(new Database.Models.UpdateInfo { Hash = md5Hash, DateTime = DateTime.Now }); dbContext.SaveChanges(); } finish = DateTime.Now; Console.WriteLine($"{(updRes ? "Установка успешно завершена: " : "Установка завершена с ошибками: ")} " + $"{finish - startNext}"); Console.WriteLine($"Затраченное время: {finish - start}"); }