private async void button2_Click(object sender, EventArgs e) //Добавить в кэш из xlsx { try { DisableButtons(); toolStripStatusLabel1.Text = "Выполняется, ждите..."; OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.InitialDirectory = Path.GetDirectoryName(settings.Path); fileDialog.Filter = "xlsx files (*.xslx)|*.xlsx"; if (fileDialog.ShowDialog() == DialogResult.OK) { bool overrideMode = (DialogResult.Yes == MessageBox.Show("Загружаемые данные новее чем в кэше? \r\nЕсли не уверены, нажмите \"Нет\"", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)); using (CacheDB cacheDB = new CacheDB()) using (ExcelFile excel = new ExcelFile()) { await excel.Open(fileDialog.FileName); var patients = await excel.ToList(); int n = await cacheDB.AddPatients(patients, overrideMode); toolStripStatusLabel1.Text = string.Format("Готово. В кэш добавлено {0} записи(ей).", n); } } else { toolStripStatusLabel1.Text = "Отменено."; } EnableButtons(); } catch (Exception) { toolStripStatusLabel1.Text = "Произошла непредвиденная ошибка. Операция завершена некорректно."; throw; } finally { EnableButtons(); } }
private async void button6_Click(object sender, EventArgs e) //начать определение ФИО { try { DisableButtons(); if (settings.TestPassed == false) { await TestSetting(); } if (settings.TestPassed) { int maxReq = 0, madeReq = 0, step = 2; string xlsxStatus; if (settings.DownloadFile) { toolStripStatusLabel1.Text = string.Format("{0}. Выполняется загрузка файла из СРЗ, ждите...", step++); using (WebSiteSRZ site = new WebSiteSRZ(settings.Site, settings.ProxyAddress, settings.ProxyPort)) { await site.Authorize(settings.Accounts[0]); await site.DownloadFile(settings.Path, dateTimePicker1.Value); site.Logout(); } } toolStripStatusLabel1.Text = string.Format("{0}. Выполняется обработка из кэша, ждите...", step++); foreach (Credential cred in settings.Accounts) { maxReq += cred.Requests; } using (CacheDB cacheDB = new CacheDB()) using (var excel = new ExcelFile()) { await excel.Open(settings.Path, settings.ColumnSynonims); ConcurrentStack <string> listJobs = await excel.GetPatientsFromCache(cacheDB, maxReq, true); if (listJobs.Count > 0) { toolStripStatusLabel1.Text = string.Format("{0}. Выполняется поиск пациентов в СРЗ, ждите...", step++); List <Patient> patients = await WebSiteSRZ.GetPatients(listJobs, settings.CopyAccounts(), settings.Threads, settings); madeReq = patients.Count; toolStripStatusLabel1.Text = string.Format("{0}. Выполняется добавление в кэш, ждите...", step++); await cacheDB.AddPatients(patients, true); toolStripStatusLabel1.Text = string.Format("{0}. Выполняется обработка из кэша, ждите...", step++); listJobs = await excel.GetPatientsFromCache(cacheDB, int.MaxValue); } if (listJobs.Count == 0) { if (settings.RenameGender) { await excel.RenameSex(); } if (settings.RenameColumnNames) { await excel.ProcessColumns(); } if (settings.ColumnOrder) { await excel.SetColumnsOrder(); } if (settings.ColumnAutoWidth) { await excel.FitColumnWidth(); } if (settings.AutoFilter) { await excel.AutoFilter(); } xlsxStatus = "Файл готов, найдены все ФИО."; } else { xlsxStatus = String.Format("Файл не готов, осталось запросить в СРЗ {0} ФИО.", listJobs.Count); } await excel.Save(); toolStripStatusLabel1.Text = String.Format("Готово. Запрошено пациентов в СРЗ: {0} из {1} разрешенных. {2}", madeReq, maxReq, xlsxStatus); if (autoStart) { Environment.Exit(0); //выход с кодом 0 если запущено с командной строки } } } } catch (Exception) { toolStripStatusLabel1.Text = "Произошла непредвиденная ошибка. Операция завершена некорректно."; if (autoStart) { Environment.Exit(1); //выход с кодом 1 если запущено с командной строки } throw; } finally { EnableButtons(); } }