public void SaveSettingsToDb(int?computerId) { foreach (PropertyInfo pi in this.GetType().GetProperties()) { SqlWorks.ExecProc("SetLocalSettingsForComputer", computerId, pi.Name, pi.GetValue(this, null)); } }
public static void AddOperState(int?operationId, OperStates state) { if (operationId != null && operationId > 0) { SqlWorks.ExecProc("AddOperState", operationId, (int)state); } }
private static bool RegisterViaMac(SqlMainSettings newSettings) { bool result = true; DataSet ds = SqlWorks.ExecProc("RegisterComputer_Service", newSettings.ShopID, Environment.MachineName, NetWork.GetLocalIPAddress(), newSettings.Is1CServer, newSettings.IsMainCashbox, HardwareInfo.GetMacAddress()); if (ds != null) { int? id = Convert.ToInt32(ds.Tables[0].Rows[0]["ComputerId"]); bool isNew = Convert.ToBoolean(ds.Tables[0].Rows[0]["isNew"]); if (id == 0) { id = null; } newSettings.ComputerId = id; if (!isNew && id != null) { ChangeComputerParams(newSettings); } } else { result = false; } return(result); }
private OperationSqlDto GetOperationName(int operationType) { DataSet ds = null; try { ds = SqlWorks.ExecProc("GetOperationTypesList"); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0] != null) { foreach (DataRow row in ds.Tables[0].Rows) { if (Convert.ToInt32(row["Id"]) == operationType) { return(new OperationSqlDto( Convert.ToString(row["Name"]), row["FileName"] == DBNull.Value ? "" : Convert.ToString(row["FileName"]), row["FileMD5"] == DBNull.Value ? "" : Convert.ToString(row["FileMD5"]))); } } } return(new OperationSqlDto()); } catch (Exception ex) { NLogger.LogErrorToBaseOrHdd(MainSettings.MainSqlSettings.ComputerId, ex.ToString(), MainSettings.Constants.MAGIC_UPDATER); return(new OperationSqlDto()); } }
protected override void Execution(object sender = null, DoWorkEventArgs e = null) { if (MainSettings.MainSqlSettings.ComputerId != null) { SqlWorks.ExecProc("SetExternalIp_Service" , MainSettings.MainSqlSettings.ComputerId , NetWork.GetExternalIpAddress()); } }
private static void _workloadAnalyzer_OnWorkloadAvgSave(WorkloadInfo workloadInfo) { SqlWorks.ExecProc("AddAvgPerformanceCounter" , MainSettings.MainSqlSettings.ComputerId , DateTime.UtcNow , workloadInfo.AvgWorkloadInfoCpu , workloadInfo.AvgWorkloadInfoRam , workloadInfo.AvgWorkloadInfoDisk); }
protected void AddOperState(OperStates state) { if (Id != null && Id.Value > 0) { if (!isPluginTestingMode) { SqlWorks.ExecProc("AddOperState", Id, (int)state); } } }
private bool SetOperationReaded(int operationId) { DataSet ds = SqlWorks.ExecProc("SetOperationIsReaded", operationId); if (ds == null) { return(false); } return(Convert.ToBoolean(ds.Tables[0].Rows[0]["Result"])); }
protected override void ActExecution() { if (File.Exists(MainSettings.LogPath1C)) { string txt = File.ReadAllText(MainSettings.LogPath1C, Encoding.GetEncoding("windows-1251")); bool isError = txt.ToLower().Contains("ошибк"); SqlWorks.ExecProc("SendLog1C", MainSettings.MainSqlSettings.ComputerId, isError, txt, operationId); File.Delete(MainSettings.LogPath1C); } }
public static void SendOperationReport(int?operationId, string message, bool isCompleted) { if (operationId != null) { SqlWorks.ExecProc("SendOperationReport", operationId, isCompleted, message); } else { NLogger.LogErrorToHdd($"Ошибка отправки отчета для операции"); } }
public static void SendOperationReport(int?operationId, string message, bool isCompleted) { if (operationId != null && operationId.Value > 0) { SqlWorks.ExecProc("SendOperationReport", operationId, isCompleted, message); } else { NLogger.LogErrorToBaseOrHdd(MainSettings.MainSqlSettings.ComputerId, $"Ошибка отправки отчета для операции"); } }
private void SendOperationReport() { if (Id != null && Id.Value > 0) { if (!isPluginTestingMode) { //if (Id != null && Id.Value > 0) SqlWorks.ExecProc("SendOperationReport", Id, IsCompleted, Message); //else // NLogger.LogErrorToBaseOrHdd(MainSettings.MainSqlSettings.ComputerId, $"Ошибка отправки отчета для операции: {this.GetType().ToString()}"); } } }
private void SettingsForm_Load(object sender, EventArgs e) { try { var loadFromJsonResult = MainSettings.LoadFromJson(); if (!loadFromJsonResult.IsComplete) { //NLogger.LogErrorToHdd(res.Message, MainSettings.Constants.MAGIC_UPDATER_SETTINGS); //MessageBox.Show(res.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //JsonSettings txtServerTask.Text = MainSettings.JsonSettings.ServerTask; txtBaseTask.Text = MainSettings.JsonSettings.BaseTask; txtUserTask.Text = MainSettings.JsonSettings.UserTask; txtPasswordTask.Text = MainSettings.JsonSettings.PasswordTask; var loadSettingsResult = MainSettings.LoadSettings(); if (!loadSettingsResult.IsComplete) { return; } cbShopID.DisplayMember = "ShopId"; cbShopID.ValueMember = "ShopId"; cbShopID.DataSource = SqlWorks.ExecProc("SelectShopsList").Tables[0]; //SqlSettings cbShopID.Text = MainSettings.MainSqlSettings.ShopID; txtServer1C.Text = MainSettings.LocalSqlSettings.Server1C; txtBase1C.Text = MainSettings.LocalSqlSettings.Base1C; txtUser1C.Text = MainSettings.LocalSqlSettings.User1C; txtPass1C.Text = MainSettings.LocalSqlSettings.Pass1C; txtVersion1C.Text = MainSettings.LocalSqlSettings.Version1C; txtTimeOut.Text = MainSettings.LocalSqlSettings.OperationsListCheckTimeout.ToString(); txtSelfUpdatePath.Text = MainSettings.LocalSqlSettings.SelfUpdatePath; cbIsMainCashbox.Checked = MainSettings.MainSqlSettings.IsMainCashbox; cbIsServerLocated.Checked = MainSettings.MainSqlSettings.Is1CServer; cbIsCheck1C.Checked = MainSettings.LocalSqlSettings.IsCheck1C; } catch (Exception ex) { ConnectionToService?.DisposeAsyncClient(); MessageBox.Show(ex.Message.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); NLogger.LogErrorToHdd(ex.Message.ToString(), MainSettings.Constants.MAGIC_UPDATER_SETTINGS); Application.Exit(); } }
private bool Initialize() { if (!File.Exists(MainSettings.JsonSettingsFileFullPath)) { NLogger.LogErrorToHdd("Json - файл настроек не найден", MainSettings.Constants.MAGIC_UPDATER); return(false); } //Загружаем все настройки TryLoadMainSettings loadSettingsResult = MainSettings.LoadSettings(); while (!loadSettingsResult.IsComplete) { NLogger.LogErrorToHdd(loadSettingsResult.NamedMessage, MainSettings.Constants.MAGIC_UPDATER); Thread.Sleep(60000); loadSettingsResult = MainSettings.LoadSettings(); } if (MainSettings.MainSqlSettings.ComputerId == null || MainSettings.MainSqlSettings.ComputerId == 0) { NLogger.LogErrorToHdd("Ошибка регистрации компьютера. Не получен ComputerId.", MainSettings.Constants.MAGIC_UPDATER); return(false); } //Отчитываемся о том, что настройки прочитаны SqlWorks.ExecProc("SetIsAgentSettingsReaded", MainSettings.MainSqlSettings.ComputerId, true); //Если не режим отладки плагинов if (!_isPluginDebugMode) { SqlWorks.ExecProc("UpdateVersion", MainSettings.MainSqlSettings.ComputerId, Extensions.GetApplicationVersion()); TaskerReporter.Start(); RestartTaskerReporter.Start(); switch (MainSettings.LocalSqlSettings.PerformanceCounterMode) { case 0: break; case 1: PerformanceReporter.StartOnlyAvg(); break; case 2: PerformanceReporter.StartAll(); break; } } return(true); }
private void btnOk_Click(object sender, EventArgs e) { _agentSettingsIsReadCheckTimer.Change(Timeout.Infinite, Timeout.Infinite); _agentSettingsIsReadCheckTimer.Dispose(); Thread.Sleep(100); DialogResult dr = MessageBox.Show($"Для обновления настроек агента, необходим его перезапуск.{Environment.NewLine}Отправить операцию перезапуска?{Environment.NewLine}[Ок] - сохранение настроек и перезапуск агента{Environment.NewLine}[Отмена] - сохранение настроек без перезапуска" , "Подтверждение" , MessageBoxButtons.OKCancel , MessageBoxIcon.Question); _sqlLocalSettings.User1C = tbUser1C.Text; _sqlLocalSettings.Pass1C = tbPass1C.Text; _sqlLocalSettings.OperationsListCheckTimeout = Convert.ToInt32(tbOperationsListCheckTimeout.Text); _sqlLocalSettings.SelfUpdatePath = tbSelfUpdatePath.Text; _sqlLocalSettings.Version1C = tbVersion1C.Text; _sqlLocalSettings.IsCheck1C = chbIsCheck1C.Checked; _sqlLocalSettings.SelfUpdateFtpServer = tbSelfUpdateFtpServer.Text; _sqlLocalSettings.SelfUpdateFtpUser = tbSelfUpdateFtpUser.Text; _sqlLocalSettings.SelfUpdateFtpPassword = tbSelfUpdateFtpPassword.Text; _sqlLocalSettings.SelfUpdateFtpPath = tbSelfUpdateFtpPath.Text; _sqlLocalSettings.Is1CBaseOnServer = _is1CBaseOnServer; if (_sqlLocalSettings.Is1CBaseOnServer) { _sqlLocalSettings.Server1C = tbServerOrPath1C.Text; _sqlLocalSettings.Base1C = tbBase1C.Text; } else { _sqlLocalSettings.InformationBaseDirectory = tbServerOrPath1C.Text; } _sqlLocalSettings.PerformanceCounterMode = _performanceCounterMode; _sqlLocalSettings.SaveSettingsToDb(_computerId); //Проставляем флаг в базу о том, что настройки были изменены SqlWorks.ExecProc("SetIsAgentSettingsReaded", _computerId, false); if (dr == DialogResult.OK) { new OperationBase(1003).SendForComputer(_computerId); } }
public static void SendReportToDB(int _operationId, string actionName, bool IsFromLan, string message, bool isComplete = false) { if (_operationId > 0 && !string.IsNullOrEmpty(actionName)) { SqlWorks.ExecProc("SetActionReport" , _operationId , MainSettings.MainSqlSettings.ComputerId , actionName , IsFromLan , isComplete , message); } else { NLogger.LogErrorToBaseOrHdd(MainSettings.MainSqlSettings.ComputerId, $"Невозможно отправить отчет действия: {actionName}. Сообщение: {message}"); } }
private static bool ChangeComputerParams(SqlMainSettings newSettings) { bool result = true; DataSet ds = SqlWorks.ExecProc("ChangeComputerParams_Servece", newSettings.ComputerId, newSettings.ShopID, Environment.MachineName, NetWork.GetLocalIPAddress(), newSettings.Is1CServer, newSettings.IsMainCashbox, Extensions.GetApplicationVersion()); if (ds == null) { result = false; } return(result); }
public static TryRegisterComputerId RegisterComputerId(string shopId, bool is1CServer = true, bool isMainCashbox = false) { if (string.IsNullOrEmpty(shopId)) { return(new TryRegisterComputerId(0, false, "Пустой Id магазина")); } DataSet dsShop = SqlWorks.ExecProc("IsShopExists", shopId); if (dsShop == null || ConvertSafe.ToInt32(dsShop.Tables[0].Rows[0]["result"]) == 0) { return(new TryRegisterComputerId(0, false, $"Магазин с id = {shopId} отсутствует")); } DataSet ds = SqlWorks.ExecProc("RegisterComputer", shopId, Environment.MachineName, NetWork.GetLocalIPAddress(), is1CServer, isMainCashbox, HardwareInfo.GetMacAddress()); if (ds != null) { int?id = Convert.ToInt32(ds.Tables[0].Rows[0]["ComputerId"]); if (id.HasValue) { return(new TryRegisterComputerId(id.Value)); } else { NLogger.LogErrorToHdd("Ошибка регистрации. Не удалось получить ID компьютера.", MainSettings.Constants.MAGIC_UPDATER); return(new TryRegisterComputerId(0, false, "Ошибка регистрации. Не удалось получить ID компьютера.")); } } else { NLogger.LogErrorToHdd("Ошибка регистрации. Не удалось получить ID компьютера.", MainSettings.Constants.MAGIC_UPDATER); return(new TryRegisterComputerId(0, false, "Ошибка регистрации. Не удалось получить ID компьютера.")); } }
private static bool IsFileRegisteregAndRelevantMd5(string fileName) { DataSet ds = SqlWorks.ExecProc("GetOperationTypeByFileName", fileName); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { return(false); } else { string dllFullPath = Path.Combine(MainSettings.GlobalSettings.SelfUpdateFtpPath , MainSettings.Constants.OPERATION_PLUGIN_DIRECTORY_NAME , fileName); var ftpFileMd5Result = FtpWorks.GetFtpFileMd5(MainSettings.GlobalSettings.SelfUpdateFtpServer , MainSettings.GlobalSettings.SelfUpdateFtpUser , MainSettings.GlobalSettings.SelfUpdateFtpPassword , Path.Combine(MainSettings.GlobalSettings.SelfUpdateFtpPath, MainSettings.Constants.OPERATION_PLUGIN_DIRECTORY_NAME) , fileName); if (ftpFileMd5Result.IsComplete) { try { DataRow dr = ds.Tables[0].Rows[0]; return(MD5Works.CompareHahes(ftpFileMd5Result.Value, Convert.ToString(dr["FileMD5"]))); } catch { return(false); } } else { NLogger.LogErrorToBaseAndHdd(MainSettings.MainSqlSettings?.ComputerId, $"Ошибка получения MD5 файла ({dllFullPath})"); return(false); } } }
private static void _workloadAnalyzer_OnWorkloadAllSave(WorkloadInfo workloadInfo) { SqlWorks.ExecProc("AddAvgPerformanceCounter" , MainSettings.MainSqlSettings.ComputerId , DateTime.UtcNow , workloadInfo.AvgWorkloadInfoCpu , workloadInfo.AvgWorkloadInfoRam , workloadInfo.AvgWorkloadInfoDisk); //ProcessorTime foreach (var item in workloadInfo.WorkloadInfoCpuList) { SqlWorks.ExecProc("AddPerformanceCounter" , MainSettings.MainSqlSettings.ComputerId , item.Key , 1 , item.Value); } //RamAvailableMBytes foreach (var item in workloadInfo.WorkloadInfoRamList) { SqlWorks.ExecProc("AddPerformanceCounter" , MainSettings.MainSqlSettings.ComputerId , item.Key , 2 , item.Value); } //CurrentDiskQueueLength foreach (var item in workloadInfo.WorkloadInfoDiskList) { SqlWorks.ExecProc("AddPerformanceCounter" , MainSettings.MainSqlSettings.ComputerId , item.Key , 3 , item.Value); } }
private static bool IsFileRegisteregAndRelevantlastModifiedDate(string fileName) { DataSet ds = SqlWorks.ExecProc("GetOperationTypeByFileName", fileName); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { return(false); } else { string dllFullPath = Path.Combine(MainSettings.GlobalSettings.SelfUpdateFtpPath , MainSettings.Constants.OPERATION_PLUGIN_DIRECTORY_NAME , fileName); DateTime?ftpFileLastModifiedDate = FtpWorks.GetFileLastModifiedDate(MainSettings.GlobalSettings.SelfUpdateFtpServer , MainSettings.GlobalSettings.SelfUpdateFtpUser , MainSettings.GlobalSettings.SelfUpdateFtpPassword , Path.Combine(MainSettings.GlobalSettings.SelfUpdateFtpPath, MainSettings.Constants.OPERATION_PLUGIN_DIRECTORY_NAME) , fileName); if (ftpFileLastModifiedDate.HasValue) { try { DataRow dr = ds.Tables[0].Rows[0]; return(Extensions.IsNullableDateTimeIdentical(ftpFileLastModifiedDate, (DateTime?)dr["LastModifiedDate"])); } catch { return(false); } } else { NLogger.LogErrorToBaseAndHdd(MainSettings.MainSqlSettings?.ComputerId, $"Ошибка получения последней даты изменения файла ({dllFullPath})"); return(false); } } }
public static TryRegisterPlugin RegisterOrUpdatePluginLastModifiedDate(string fileName) { string dllLocalFullPath = Path.Combine(MainSettings.Constants.PluginOperationDllDirectoryPath, fileName); string dllFtpFullPath = Path.Combine(MainSettings.GlobalSettings.SelfUpdateFtpPath , MainSettings.Constants.OPERATION_PLUGIN_DIRECTORY_NAME , fileName); DateTime?ftpFileLastModifiedDate = FtpWorks.GetFileLastModifiedDate(MainSettings.GlobalSettings.SelfUpdateFtpServer , MainSettings.GlobalSettings.SelfUpdateFtpUser , MainSettings.GlobalSettings.SelfUpdateFtpPassword , Path.Combine(MainSettings.GlobalSettings.SelfUpdateFtpPath, MainSettings.Constants.OPERATION_PLUGIN_DIRECTORY_NAME) , fileName); if (ftpFileLastModifiedDate.HasValue) { try { DataSet ds = SqlWorks.ExecProc("GetOperationTypeByFileName", fileName); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { //Регистрируем //Актуализируем файл из фтп, если нужно var res = GetOrUpdateFileFromFtpLastModifiedDate(fileName, null); if (!res.IsComplete) { return(new TryRegisterPlugin(false, $"Ошибка скачивания файла ({fileName}) с ftp в директорию ({MainSettings.Constants.PluginOperationDllDirectoryPath})")); } else { /* * @Name nvarchar(512) * ,@NameRus nvarchar(512) * ,@GroupId int * ,@FileName nvarchar(510) * ,@FileMD5 nvarchar(64) * ,@Description nvarchar(MAX) */ //Пробуем получить имя типа операции var dllResult = GetFromDll(dllLocalFullPath); if (!dllResult.IsComplete) { return(new TryRegisterPlugin(false, $"Ошибка получения типа операции из файла ({dllLocalFullPath})")); } var addDs = SqlWorks.ExecProc("AddOperationType" , dllResult.PluginOperationInstance.SqlName , "" , 1 , fileName , ftpFileLastModifiedDate , MD5Works.GetFileHash(dllLocalFullPath).ToUpper() , ""); if (addDs != null && addDs.Tables.Count > 0 && addDs.Tables[0].Rows.Count > 0) { int id = ConvertSafe.ToInt32(addDs.Tables[0].Rows[0]["Id"]); foreach (var param in dllResult.PluginOperationInstance.RegistrationParams) { var resDs = SqlWorks.ExecProc("UpdateOperationTypesFieldsById" , id , param.Key , param.Value); if (resDs != null && resDs.Tables.Count > 0 && resDs.Tables[0].Rows.Count > 0) { if (Convert.ToInt32(resDs.Tables[0].Rows[0]["ResultId"]) == -1) { return(new TryRegisterPlugin(false, $"Ошибка записи параметров SQL из файла ({dllLocalFullPath}). SQL Error: {Convert.ToString(resDs.Tables[0].Rows[0]["Message"])}")); } } else { return(new TryRegisterPlugin(false, $"Ошибка записи параметров SQL из файла ({dllLocalFullPath})")); } } } return(new TryRegisterPlugin()); } } else { DataRow dr = ds.Tables[0].Rows[0]; DateTime?sqlDateTime = null; try { sqlDateTime = (DateTime?)dr["LastModifiedDate"]; } catch { sqlDateTime = null; } //Обновляем, если нужно if (!Extensions.IsNullableDateTimeIdentical(ftpFileLastModifiedDate, sqlDateTime)) { //Актуализируем файл из фтп, если нужно var res = GetOrUpdateFileFromFtpLastModifiedDate(fileName, sqlDateTime); if (!res.IsComplete) { return(new TryRegisterPlugin(false, $"Ошибка скачивания файла ({fileName}) с ftp в директорию ({MainSettings.Constants.PluginOperationDllDirectoryPath})")); } else { var dllResult = GetFromDll(dllLocalFullPath); if (!dllResult.IsComplete) { return(new TryRegisterPlugin(false, $"Ошибка получения типа операции из файла ({dllLocalFullPath})")); } SqlWorks.ExecProc("UpdateOperationTypeById" , Convert.ToInt32(dr["Id"]) , dllResult.PluginOperationInstance.SqlName , "" , 1 , fileName , ftpFileLastModifiedDate , MD5Works.GetFileHash(dllLocalFullPath).ToUpper() , ""); foreach (var param in dllResult.PluginOperationInstance.RegistrationParams) { var resDs = SqlWorks.ExecProc("UpdateOperationTypesFieldsById" , Convert.ToInt32(dr["Id"]) , param.Key , param.Value); if (resDs != null && resDs.Tables.Count > 0 && resDs.Tables[0].Rows.Count > 0) { if (Convert.ToInt32(resDs.Tables[0].Rows[0]["ResultId"]) == -1) { return(new TryRegisterPlugin(false, $"Ошибка записи параметров SQL из файла ({dllLocalFullPath}). SQL Error: {Convert.ToString(resDs.Tables[0].Rows[0]["Message"])}")); } } else { return(new TryRegisterPlugin(false, $"Ошибка записи параметров SQL из файла ({dllLocalFullPath})")); } } return(new TryRegisterPlugin()); } } return(new TryRegisterPlugin()); } } catch (Exception ex) { return(new TryRegisterPlugin(false, ex.ToString())); } } else { return(new TryRegisterPlugin(false, $"Не удалось получить дату последнего изменения файла ({fileName}) по ftp")); } }
private void ComputerResponse() { SqlWorks.ExecProc("ComputerResponse", MainSettings.MainSqlSettings.ComputerId, Environment.MachineName, NetWork.GetLocalIPAddress(), isTaskerAlive); }
private void GetOperations() { OperationList.Clear(); DataSet ds = null; if (!EnableOnlyRestartOperationMode) { // Берем все оперции за исключением RestartMagicUpdater_Service (1003) т.к. она нужна для // перезапуска MagicUpdater'a и должна выполняться в отдельном потоке. ds = SqlWorks.ExecProc("SelectOperationsList", MainSettings.MainSqlSettings.ComputerId); } else { // Берем только операцию RestartMagicUpdater_Service (1003) ds = SqlWorks.ExecProc("SelectRestartOperation", MainSettings.MainSqlSettings.ComputerId); } if (ds != null) { foreach (DataRow dr in ds.Tables[0].Rows) { int id = Convert.ToInt32(dr["ID"]); if (!SetOperationReaded(id)) { NLogger.LogErrorToBaseOrHdd(MainSettings.MainSqlSettings.ComputerId, $"Ошибка чтения операции. ID: {id}"); continue; } string attrsJson = Convert.ToString(dr["Attributes"]); var operationSqlDto = GetOperationName(Convert.ToInt32(dr["OperationType"])); string ot = operationSqlDto.Name; string fileName = operationSqlDto.FileName; string fileMD5 = operationSqlDto.FileMD5; Type t = null; //Если имя файла не пустое - это плагин операция (dll) if (string.IsNullOrEmpty(fileName)) { t = Type.GetType($"MagicUpdater.Operations.{ot}"); } else { t = PluginOperationAdapter.GetPluginOperationType(ot, fileName, fileMD5); } if (t != null) { try { Operation operation; if (t.GetConstructors()[0].GetParameters().Length == 2) { operation = (Operation)Activator.CreateInstance(t, id, attrsJson); } else { operation = (Operation)Activator.CreateInstance(t, id); } OperationList.Add(operation); } catch (Exception ex) { NLogger.LogErrorToBaseOrHdd(MainSettings.MainSqlSettings.ComputerId, $"Возможная причина. Несовпадение сигнатур операций БД и Шарпа. Original: {ex.Message.ToString()}"); } } else { NLogger.SetReportForOperation(id, false, "Не удалось найти тип операции"); } } } }
private bool CheckAgentIsOn() { try { if (MainSettings.MainSqlSettings.ComputerId.HasValue) { var ds = SqlWorks.ExecProc("GetComputerById", MainSettings.MainSqlSettings.ComputerId.Value); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { bool isOn = ConvertSafe.ToInt32(ds.Tables[0].Rows[0]["IsON"]) == 1 ? true : false; if (isOn) { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(() => { lbAgentStatus.Text = "Агент отчитывается в базу"; lbAgentStatus.BackColor = Color.LightGreen; })); } else { lbAgentStatus.Text = "Агент отчитывается в базу"; lbAgentStatus.BackColor = Color.LightGreen; } return(true); } else { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(() => { lbAgentStatus.Text = "Агент не отчитывается в базу"; lbAgentStatus.BackColor = Color.Pink; })); } else { lbAgentStatus.Text = "Агент не отчитывается в базу"; lbAgentStatus.BackColor = Color.Pink; } return(false); } } else { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(() => { lbAgentStatus.Text = "Агент не отчитывается в базу"; lbAgentStatus.BackColor = Color.Pink; })); } else { lbAgentStatus.Text = "Агент не отчитывается в базу"; lbAgentStatus.BackColor = Color.Pink; } return(false); } } } catch (Exception ex) { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(() => { lbAgentStatus.Text = "Агент не отчитывается в базу"; lbAgentStatus.BackColor = Color.Pink; })); } else { lbAgentStatus.Text = "Агент не отчитывается в базу"; lbAgentStatus.BackColor = Color.Pink; } return(false); } return(false); }
private void btnNextStep_Click(object sender, EventArgs e) { Button button = sender as Button; Pages page = (Pages)button.Tag; int tag = (int)button.Tag; switch (page) { case Pages.JsonSettings: #region JsonSettings //Сохраняем Json try { btnNextStep.Enabled = false; var formJson = new JsonLocalSettings { BaseTask = txtBaseTask.Text, ServerTask = txtServerTask.Text, PasswordTask = txtPasswordTask.Text, UserTask = txtUserTask.Text }; if (!CheckSQLConnection(formJson, false)) { LogString("Ошибка при попытке установить соединение с Sql базой заданий"); return; } LogString("Тест соединения с Sql базой заданий успешно пройден."); try { LogString("Создание Json - файла с настроками."); NewtonJson.WriteJsonFile(formJson, MainSettings.JsonSettingsFileFullPath); } catch (Exception ex) { LogString(ex); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LogString("Json с настройками подключения к базе заданий создан успешно."); LogString("Проверка Json - файла."); var loadFromJsonResult = MainSettings.LoadFromJson(); if (!loadFromJsonResult.IsComplete) { LogString(loadFromJsonResult.Message); MessageBox.Show(loadFromJsonResult.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LogString("Проверка Json - файла завершена успешно."); cbShopID.DisplayMember = "ShopId"; cbShopID.ValueMember = "ShopId"; cbShopID.DataSource = SqlWorks.ExecProc("SelectShopsList")?.Tables[0]; LogString("Поиск настроек агента в Sql базе заданий."); var loadSettingsResult = MainSettings.LoadSettings(); if (!loadSettingsResult.IsComplete) { LogString($"{loadSettingsResult.Message} - настройки не найдены."); try { //Пробуем узнать версию 1С LogString("Пробуем узнать версию 1С"); const string CONST_PART_1C_AGENT_PATH = "\\bin\\ragent.exe"; foreach (ServiceController sc in ServiceController.GetServices()) { using (ManagementObject wmiService = new ManagementObject("Win32_Service.Name='" + sc.ServiceName + "'")) { wmiService.Get(); string currentserviceExePath = wmiService["PathName"].ToString(); if (currentserviceExePath.Contains(CONST_PART_1C_AGENT_PATH)) { currentserviceExePath = currentserviceExePath.Replace(CONST_PART_1C_AGENT_PATH, "|"); string pathCropped = currentserviceExePath.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries).First(); txtVersion1C.Text = pathCropped.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries).Last(); //Показываем baloon tool tip о том что версия была определена автоматически и может быть не корректной _isShowVersion1cToolTip = true; break; } } } } catch (Exception ex) { LogString(ex); } } else { LogString($"Настройки найдены."); //SqlSettings cbShopID.SelectedValue = MainSettings.MainSqlSettings.ShopID; tbBase1C.Text = MainSettings.LocalSqlSettings.Base1C; _is1CBaseOnServer = MainSettings.LocalSqlSettings.Is1CBaseOnServer; tbServerOrPath1C.Text = (MainSettings.LocalSqlSettings.Is1CBaseOnServer ? MainSettings.LocalSqlSettings.Server1C : MainSettings.LocalSqlSettings.InformationBaseDirectory); tbBase1C.Text = MainSettings.LocalSqlSettings.Base1C; txtUser1C.Text = MainSettings.LocalSqlSettings.User1C; txtPass1C.Text = MainSettings.LocalSqlSettings.Pass1C; txtVersion1C.Text = MainSettings.LocalSqlSettings.Version1C; txtTimeOut.Text = MainSettings.LocalSqlSettings.OperationsListCheckTimeout.ToString(); txtSelfUpdatePath.Text = MainSettings.LocalSqlSettings.SelfUpdatePath; cbIsMainCashbox.Checked = MainSettings.MainSqlSettings.IsMainCashbox; cbIsServerLocated.Checked = MainSettings.MainSqlSettings.Is1CServer; cbIsCheck1C.Checked = MainSettings.LocalSqlSettings.IsCheck1C; tbSelfUpdateFtpServer.Text = MainSettings.LocalSqlSettings.SelfUpdateFtpServer; tbSelfUpdateFtpUser.Text = MainSettings.LocalSqlSettings.SelfUpdateFtpUser; tbSelfUpdateFtpPassword.Text = MainSettings.LocalSqlSettings.SelfUpdateFtpPassword; tbSelfUpdateFtpPath.Text = MainSettings.LocalSqlSettings.SelfUpdateFtpPath; } } finally { btnNextStep.Enabled = true; } ActivateSettingsPage(tabPageSettings); #endregion break; case Pages.MainAndLocalSqlSettings: #region MainAndLocalSqlSettings //Если компьютер не зарегистрирован, то регистрируем его #region RegisterAgent if (MainSettings.MainSqlSettings == null || !MainSettings.MainSqlSettings.ComputerId.HasValue || MainSettings.MainSqlSettings.ComputerId.Value == 0) { LogString("Компьютер не зарегистрирован... Производится регистрация компьютера."); var res = MainSettings.RegisterComputerId(ConvertSafe.ToString(cbShopID.SelectedValue)); if (!res.IsComplete) { LogString(res.Message); MessageBox.Show(res.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LogString("Регистрация компьютера произведена успешно."); LogString("Проверка регистрации компьютера."); var loadSettingsRes = MainSettings.LoadMainSettingsFromSQL(); if (!loadSettingsRes.IsComplete) { LogString($"{loadSettingsRes.Message} - настройки не найдены."); MessageBox.Show($"{loadSettingsRes.Message} - настройки не найдены.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (MainSettings.MainSqlSettings == null || !MainSettings.MainSqlSettings.ComputerId.HasValue || MainSettings.MainSqlSettings.ComputerId.Value == 0) { LogString("Ошибка проверки регистрации компьютера. Не получен ComputerId."); MessageBox.Show("Ошибка проверки регистрации компьютера. Не получен ComputerId.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LogString("Проверка регистрации компьютера успешно завершена."); } #endregion btnNextStep.Enabled = _isServiceInstallComplete; try { //Сохраняем главные настройки компьютера LogString("Сохранение главных настроек компьютера."); var formSqlMainSettings = new SqlMainSettings { ComputerId = MainSettings.MainSqlSettings.ComputerId, Is1CServer = cbIsServerLocated.Checked, IsMainCashbox = cbIsMainCashbox.Checked, ShopID = Convert.ToString(cbShopID.SelectedValue) }; SqlWorks.SaveMainSqlSettingsToBase(formSqlMainSettings); } catch (Exception ex) { LogString(ex); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LogString("Настройки компьютера успешно сохранены."); try { //Сохраняем дополнительные настройки компьютера LogString("Сохранение дополнительных настроек компьютера."); var sqlLocalSettings = new SqlLocalSettings { Base1C = tbBase1C.Text, User1C = txtUser1C.Text, Pass1C = txtPass1C.Text, Version1C = txtVersion1C.Text, IsCheck1C = cbIsCheck1C.Checked, SelfUpdatePath = txtSelfUpdatePath.Text, OperationsListCheckTimeout = Convert.ToInt32(txtTimeOut.Text), SelfUpdateFtpServer = tbSelfUpdateFtpServer.Text, SelfUpdateFtpUser = tbSelfUpdateFtpUser.Text, SelfUpdateFtpPassword = tbSelfUpdateFtpPassword.Text, SelfUpdateFtpPath = tbSelfUpdateFtpPath.Text, Is1CBaseOnServer = _is1CBaseOnServer, Server1C = MainSettings.LocalSqlSettings?.Server1C, InformationBaseDirectory = MainSettings.LocalSqlSettings?.InformationBaseDirectory }; if (_is1CBaseOnServer) { sqlLocalSettings.Server1C = tbServerOrPath1C.Text; } else { sqlLocalSettings.InformationBaseDirectory = tbServerOrPath1C.Text; } var res = SqlWorks.SaveLocalSqlSettingsToBase(sqlLocalSettings); if (!res.IsComplete) { LogString(res.Message); MessageBox.Show(res.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception ex) { LogString(ex); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LogString("Дополнительные настройки компьютера успешно сохранены."); LogString("Проверка настроек."); var loadSettingsresult = MainSettings.LoadSettings(); if (!loadSettingsresult.IsComplete) { LogString(loadSettingsresult.Message); MessageBox.Show(loadSettingsresult.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LogString("Проверка настроек успешно завершена."); ActivateSettingsPage(tabInstallService); #endregion LogString("Помечаем магазин как открытый."); SqlWorks.ExecProc("SetShopToOpen", ConvertSafe.ToString(cbShopID.SelectedValue)); break; case Pages.InstallService: ActivateSettingsPage(tabControlTest); break; case Pages.ControlTest: this.Hide(); NLogger.LogDebugToHdd("MagicUpdater успешно установлен."); MessageBox.Show("MagicUpdater успешно установлен.", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); Application.Exit(); break; case Pages.End: break; } }
public static void SetReportForOperation(int operationId, bool isCompleted, string message) { SqlWorks.ExecProc("SendOperationReport", operationId, isCompleted, message); }
public static TryRegisterPlugin RegisterOrUpdatePluginMd5(string nameRus, string fileName, int groupId = 1 /*стандартные операции*/, string description = "") { string dllLocalFullPath = Path.Combine(MainSettings.Constants.PluginOperationDllDirectoryPath, fileName); string dllFtpFullPath = Path.Combine(MainSettings.GlobalSettings.SelfUpdateFtpPath , MainSettings.Constants.OPERATION_PLUGIN_DIRECTORY_NAME , fileName); var ftpFileMd5Result = FtpWorks.GetFtpFileMd5(MainSettings.GlobalSettings.SelfUpdateFtpServer , MainSettings.GlobalSettings.SelfUpdateFtpUser , MainSettings.GlobalSettings.SelfUpdateFtpPassword , Path.Combine(MainSettings.GlobalSettings.SelfUpdateFtpPath, MainSettings.Constants.OPERATION_PLUGIN_DIRECTORY_NAME) , fileName); if (ftpFileMd5Result.IsComplete) { try { string ftpFileMd5 = ftpFileMd5Result.Value; DataSet ds = SqlWorks.ExecProc("GetOperationTypeByFileName", fileName); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { //Регистрируем //Актуализируем файл из фтп, если нужно var res = GetOrUpdateFileFromFtpMd5(fileName, null); if (!res.IsComplete) { return(new TryRegisterPlugin(false, $"Ошибка скачивания файла ({fileName}) с ftp в директорию ({MainSettings.Constants.PluginOperationDllDirectoryPath})")); } else { /* * @Name nvarchar(512) * ,@NameRus nvarchar(512) * ,@GroupId int * ,@FileName nvarchar(510) * ,@FileMD5 nvarchar(64) * ,@Description nvarchar(MAX) */ //Пробуем получить имя типа операции var dllResult = GetFromDll(dllLocalFullPath); if (!dllResult.IsComplete) { return(new TryRegisterPlugin(false, $"Ошибка плучения типа операции из файла ({dllLocalFullPath})")); } SqlWorks.ExecProc("AddOperationType" , dllResult.PluginOperationInstance.SqlName , nameRus , groupId , fileName , null , ftpFileMd5 , description); return(new TryRegisterPlugin()); } } else { DataRow dr = ds.Tables[0].Rows[0]; //Обновляем, если нужно if (!MD5Works.CompareHahes(ftpFileMd5, Convert.ToString(dr["FileMD5"]))) { //Актуализируем файл из фтп, если нужно var res = GetOrUpdateFileFromFtpMd5(fileName, Convert.ToString(dr["FileMD5"])); if (!res.IsComplete) { return(new TryRegisterPlugin(false, $"Ошибка скачивания файла ({fileName}) с ftp в директорию ({MainSettings.Constants.PluginOperationDllDirectoryPath})")); } else { var dllResult = GetFromDll(dllLocalFullPath); if (!dllResult.IsComplete) { return(new TryRegisterPlugin(false, $"Ошибка плучения типа операции из файла ({dllLocalFullPath})")); } SqlWorks.ExecProc("UpdateOperationTypeById" , Convert.ToInt32(dr["Id"]) , dllResult.PluginOperationInstance.SqlName , nameRus , groupId , fileName , null , ftpFileMd5 , description); return(new TryRegisterPlugin()); } } return(new TryRegisterPlugin()); } } catch (Exception ex) { return(new TryRegisterPlugin(false, ex.ToString())); } } else { return(new TryRegisterPlugin(false, $"Не удалось получить MD5 файла ({fileName}) по ftp")); } }