public bool RestoreBDByTime(DateTime dateTimeRestore)
        {
            QueryStrings.CurrentPathDevice = ExecuteQuery <String> .Execute(ConnectionInfo, QueryStrings.GetDevicePath, (sqlDataReader) =>
            {
                return(SqlSupport.Read <String>(sqlDataReader, "physical_name"));
            }).FirstOrDefault();


            QueryStrings.ThirdRestoreDBByTime = dateTimeRestore.ToString("yyyy-MM-dd HH:mm:ss");

            try
            {
                ExecuteQuery <int> .ExecuteNonQuery(ConnectionInfo, QueryStrings.FirstRestoreDbByTime);

                ExecuteQuery <int> .Execute(ConnectionInfo, QueryStrings.SecondRestoreDBByTime, null);

                ExecuteQuery <int> .ExecuteNonQuery(ConnectionInfo, QueryStrings.ThirdRestoreDBByTime);

                ExecuteQuery <int> .ExecuteNonQuery(ConnectionInfo, QueryStrings.LastRestoreDBByTime);

                return(true);
            }
            catch (SqlException sqlEx)
            {
                return(false);
            }
        }
        public bool CreateDevice()
        {
            String currentPath = this.GetType().Assembly.Location;

            String folderPath = currentPath.Substring(0, currentPath.LastIndexOf("\\"));

            DirectoryInfo directoryInfo = null;

            if (!Directory.Exists($"{folderPath}\\BackupFiles\\{CurrentDataBase.Name}"))
            {
                directoryInfo = Directory.CreateDirectory($"{folderPath}\\BackupFiles\\{CurrentDataBase.Name}");
            }

            if (directoryInfo == null)
            {
                QueryStrings.CurrentPathDevice = $"{folderPath}\\BackupFiles\\{CurrentDataBase.Name}\\{CurrentDataBase.Name}.bak";
            }
            else
            {
                QueryStrings.CurrentPathDevice = $"{directoryInfo.FullName}\\{CurrentDataBase.Name}.bak";
            }

            IEnumerable <Boolean> result = ExecuteQuery <Boolean> .Execute(ConnectionInfo, QueryStrings.CreateDevice, (sqlDataReader) => {
                return(SqlSupport.Read <Boolean>(sqlDataReader, ""));
            });

            this.CurrentDataBase = _currentDB;

            return(result.FirstOrDefault());
        }
        private string GetCurrentDeviceOfDB()
        {
            IEnumerable <String> devicesname = ExecuteQuery <String> .Execute(ConnectionInfo, QueryStrings.GetAllDeviceNameByDBName
                                                                              , (sqlDataReader) =>
            {
                return(SqlSupport.Read <String>(sqlDataReader, "logical_device_name"));
            });

            return(devicesname.FirstOrDefault());
        }
        private bool CurrentDBHadDevice()
        {
            IEnumerable <String> devicesname = ExecuteQuery <String> .Execute(ConnectionInfo, QueryStrings.GetAllDeviceName
                                                                              , (sqlDataReader) =>
            {
                return(SqlSupport.Read <String>(sqlDataReader, "name"));
            });

            return(devicesname.Where(x => x.Contains(CurrentDataBase.Name)).Count() > 0);
        }
 private IEnumerable <PositionBackupInfo> GetAllPositionBackupVersions()
 {
     return(ExecuteQuery <PositionBackupInfo> .Execute(ConnectionInfo, QueryStrings.GetAllPositionOfBackupVersions,
                                                       (sqlDataReader) =>
     {
         return new PositionBackupInfo()
         {
             Position = SqlSupport.Read <Int32>(sqlDataReader, "position"),
             Description = SqlSupport.Read <String>(sqlDataReader, "description"),
             BackupDateTime = SqlSupport.Read <DateTime>(sqlDataReader, "backup_start_date"),
             UserBackup = SqlSupport.Read <String>(sqlDataReader, "user_name"),
         };
     }
                                                       ));
 }
        public bool ValidateRestoreDBByTime()
        {
            try
            {
                int result = ExecuteQuery <int> .Execute(ConnectionInfo, QueryStrings.ValidateRestoreDBByTime, (sqlDataReader) => {
                    return(SqlSupport.Read <Int32>(sqlDataReader, "result"));
                }).FirstOrDefault <int>();

                if (result == 0)
                {
                    return(false);
                }
                return(true);
            }
            catch (SqlException sqlEx)
            {
                return(false);
            }
        }
        public BK(ConnectionInfo connectionInfo, ListDatabaseBaseChanged changed, CurrentDatabaseChanged currentChanged)
        {
            ConnectionInfo = connectionInfo;
            this.OnListDatabaseBaseChanged = changed;
            this.OnCurrentDatabaseChanged  = currentChanged;

            DatabaseBases = ExecuteQuery <DatabaseBase> .Execute(connectionInfo, QueryStrings.GetAllDatabaseName,
                                                                 (sqlDataReader) =>
            {
                return(new DatabaseBase()
                {
                    ID = SqlSupport.Read <Int32>(sqlDataReader, "database_id"),
                    Name = SqlSupport.Read <String>(sqlDataReader, "name"),
                });
            }).ToList <DatabaseBase>();

            if (DatabaseBases.Count != 0)
            {
                CurrentDataBase = DatabaseBases[0];
            }
        }