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()); } }
private static TryLoadSettingsFromSql LoadLocalSettingsFromSQL() { string exceptionMsg; if (!SqlWorks.CheckSQL_Connection(MainSettings.JsonSettings.ConnectionString, out exceptionMsg)) { return(new TryLoadSettingsFromSql(false, $"Ошибка подключения к SQL-базе заданий.\r\nПричина: {exceptionMsg}")); } if (MainSqlSettings.ComputerId == null || MainSqlSettings.ComputerId == 0) { return(new TryLoadSettingsFromSql(false, "Ошибка регистрации компьютера, не получен ComputerId. Проверьте настройки и перезапустите службу.")); } else { try { LocalSqlSettings = new SqlLocalSettings(); LocalSqlSettings.LoadSqlLocalSettings(); } catch (Exception ex) { return(new TryLoadSettingsFromSql(false, ex.Message)); } return(new TryLoadSettingsFromSql()); } }
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); }
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); }
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 void AddOperState(OperStates state) { if (Id != null && Id.Value > 0) { if (!isPluginTestingMode) { SqlWorks.ExecProc("AddOperState", Id, (int)state); } } }
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 bool CheckSQLConnection(JsonLocalSettings jsonLocalSettings, bool isShowSuccessMessage = true) { if (SqlWorks.CheckSQL_Connection(jsonLocalSettings.ConnectionString)) { if (isShowSuccessMessage) { MessageBox.Show("Тест соединения успешно пройден.", "Тест подключения", MessageBoxButtons.OK, MessageBoxIcon.Information); } return(true); } else { MessageBox.Show("Ошибка при попытке установить соединение", "Тест подключения", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } }
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 void SettingsForm_Shown(object sender, EventArgs e) { CheckService(); tabControlSettings.Appearance = TabAppearance.FlatButtons; tabControlSettings.ItemSize = new Size(0, 1); tabControlSettings.SizeMode = TabSizeMode.Fixed; if (SqlWorks.CheckSQL_Connection(MainSettings.JsonSettings.ConnectionString)) { ActivateSettingsPage(tabPageSettings); } else { ActivateSettingsPage(tabPageConnectionString); } _serviceCheckTimer = new System.Threading.Timer(ServiceCheckTimerTick, null, _serviceCheckTimeout, Timeout.Infinite); }
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); } }
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 TryLoadCommonGlobalSettings LoadMonitorCommonGlobalSettings() { var loadFromJsonResult = LoadFromJson(); if (!loadFromJsonResult.IsComplete) { return(new TryLoadCommonGlobalSettings(false, loadFromJsonResult.Message)); } string exceptionMsg; if (!SqlWorks.CheckSQL_Connection(MainSettings.JsonSettings.ConnectionString, out exceptionMsg)) { return(new TryLoadCommonGlobalSettings(false, $"Ошибка подключения к SQL-базе заданий.\r\nПричина: {exceptionMsg}")); } _globalSettings = new CommonGlobalSettings(); return(_globalSettings.LoadCommonGlobalSettings()); }
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 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 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); } } }
public TryLoadSettingsFromSql LoadSqlMainSettingsFromSQL() { DataSet ds = null; ds = SqlWorks.ExecProcExt(MainSettings.JsonSettings.ConnectionString, "GetComputerSettingsViaMac", HardwareInfo.GetMacAddress()); if (ds != null) { ComputerId = ConvertSafe.ToInt32(ds.Tables[0].Rows[0]["ComputerId"]); ShopID = ConvertSafe.ToString(ds.Tables[0].Rows[0]["ShopId"]); Is1CServer = ConvertSafe.ToBoolean(ds.Tables[0].Rows[0]["Is1CServer"]); IsMainCashbox = ConvertSafe.ToBoolean(ds.Tables[0].Rows[0]["IsMainCashbox"]); return(new TryLoadSettingsFromSql()); } else { ComputerId = 0; ShopID = string.Empty; Is1CServer = false; IsMainCashbox = false; return(new TryLoadSettingsFromSql(false, "Компьтер не зарегистрирован.")); } }
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); } } }
private void btnSave_Click(object sender, EventArgs e) { var toJson = new JsonLocalSettings { ServerTask = tbServerSQL.Text, BaseTask = tbBaseSql.Text, UserTask = tbUserSQL.Text, PasswordTask = tbPasswordSQL.Text, }; NewtonJson.WriteJsonFile(toJson, MainSettings.JsonSettingsFileFullPath); MainForm.MonitorCommonGlobalSettings.Server1C = tbServer1C.Text; MainForm.MonitorCommonGlobalSettings.Base1C = tbBase1C.Text; MainForm.MonitorCommonGlobalSettings.User1C = tbUser1C.Text; MainForm.MonitorCommonGlobalSettings.Password1C = tbPassword1C.Text; MainForm.MonitorCommonGlobalSettings.Platform = tbPlatform.Text; MainForm.MonitorCommonGlobalSettings.AddressAst = tbAddressAst.Text; MainForm.MonitorCommonGlobalSettings.UserAst = tbUserAst.Text; MainForm.MonitorCommonGlobalSettings.PasswordAst = tbPasswordAst.Text; SqlWorks.SaveCommonGlobalSettingsToBase(MainForm.MonitorCommonGlobalSettings); }
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")); } }
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 btnNextStep_Click(object sender, EventArgs e) { Button button = sender as Button; int tag = (int)button.Tag; switch (tag) { case 1: //Сохраняем Json var formJson = new JsonLocalSettings { BaseTask = txtBaseTask.Text, ServerTask = txtServerTask.Text, PasswordTask = txtPasswordTask.Text, UserTask = txtUserTask.Text }; if (!CheckSQLConnection(formJson, false)) { return; } NewtonJson.WriteJsonFile(formJson, MainSettings.JsonSettingsFileFullPath); break; case 2: //Сохраняем главные настройки компьютера var formSqlMainSettings = new SqlMainSettings { ComputerId = MainSettings.MainSqlSettings.ComputerId, Is1CServer = cbIsServerLocated.Checked, IsMainCashbox = cbIsMainCashbox.Checked, ShopID = cbShopID.Text }; SqlWorks.SaveMainSqlSettingsToBase(formSqlMainSettings); //Сохраняем дополнительные настройки компьютера SqlWorks.SaveLocalSqlSettingsToBase(new SqlLocalSettings { Server1C = txtServer1C.Text, Base1C = txtBase1C.Text, User1C = txtUser1C.Text, Pass1C = txtPass1C.Text, Version1C = txtVersion1C.Text, IsCheck1C = cbIsCheck1C.Checked, SelfUpdatePath = txtSelfUpdatePath.Text, OperationsListCheckTimeout = Convert.ToInt32(txtTimeOut.Text) }); var loadSettingsresult = MainSettings.LoadSettings(); if (!loadSettingsresult.IsComplete) { MessageBox.Show(loadSettingsresult.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { Tools.SelfRestart(0); //TODO: тут нужно как-то дать знать на форму что служба перезапущена и все заебись! Hide(); notifyIcon1.Visible = true; } break; } ActivateSettingsPage(tabPageSettings); }