Exemplo n.º 1
0
        public ReturnCode SettingDelete(int IdFolder, string IdSetting)
        {
            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            ReturnCode code = ReturnCodeFactory.Success($"Setting has been deleted: {IdSetting}");

            if (IdSetting.Trim().Length < 1)
            {
                return(ReturnCodeFactory.Error((int)Errors.SettingNameNotSpecified, "Setting name not specified"));
            }
            int count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    count = command.ZzOpenConnection().ZzAdd("@IdFolder", IdFolder).ZzAdd("@IdSetting", IdSetting).ZzGetScalarInteger(DbManager.SqlSettingCount);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.SettingNotFound, "Setting not found"));
                    }
                    count = command.ZzExecuteNonQuery(DbManager.SqlSettingDelete);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.Unknown, "Error trying to delete a setting"));
                    }
                }
            return(code);
        }
Exemplo n.º 2
0
        public ReturnCode SwapRank(int IdFolder, Setting settingOne, Setting settingTwo)
        {
            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            ReturnCode code = ReturnCodeFactory.Success($"Setting rank exchange completed");

            if ((settingOne == null) || (settingTwo == null))
            {
                return(ReturnCodeFactory.Error("At least one parameter is null"));
            }
            int count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    count = command.ZzOpenConnection().ZzAdd("@IdFolder", IdFolder).ZzAdd("@IdSetting", settingOne.IdSetting).ZzAdd("@Rank", settingTwo.Rank).ZzExecuteNonQuery(DbManager.SqlSetRank);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error("Error trying to change a rank of a setting"));
                    }
                    command.Parameters.Clear();
                    count = command.ZzAdd("@IdFolder", IdFolder).ZzAdd("@IdSetting", settingTwo.IdSetting).ZzAdd("@Rank", settingOne.Rank).ZzExecuteNonQuery(DbManager.SqlSetRank);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error("Error trying to change a rank of a setting"));
                    }
                }
            return(code);
        }
Exemplo n.º 3
0
        public ReturnCode DeleteAllSettingsOfOneFolder(int IdFolder)
        {
            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            ReturnCode code  = ReturnCodeFactory.Success($"Settings has been deleted");
            int        count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    count = command.ZzOpenConnection().ZzAdd("@IdFolder", IdFolder).ZzExecuteNonQuery(DbManager.SqlDeleteAllSettingsOfOneFolder);
                    if (count == 0)
                    {
                        code = ReturnCodeFactory.Success($"No any settings were deleted");
                    }
                    count = command.ZzGetScalarInteger(DbManager.SqlAllSettingsCount);
                    if (count != 0)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.Unknown, "Error trying to delete all settings of the folder"));
                    }
                }
            return(code);
        }
Exemplo n.º 4
0
        public ReturnCode FolderInsert(int IdParent, string NameFolder)
        {
            if (FolderNotFound(IdParent))
            {
                return(FolderNotFound());
            }
            ReturnCode code        = ReturnCodeFactory.Success($"New folder has been created: {NameFolder}");
            int        IdNewFolder = -1;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    command.ZzOpenConnection().ZzText(DbManager.SqlFolderCountByIdParent).ZzAdd("@IdParent", IdParent).ZzAdd("@NameFolder", NameFolder);
                    int count = command.ZzGetScalarInteger();
                    if (count != 0)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.FolderAlreadyExists, "A folder with the same name already exists"));
                    }
                    count = command.ZzExecuteNonQuery(DbManager.SqlFolderInsert);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.Unknown, "Error trying to add a new folder"));
                    }
                    IdNewFolder = command.ZzGetScalarInteger(DbManager.SqlGetIdFolder);
                    if (IdNewFolder > 0)
                    {
                        code.IdObject = IdNewFolder;
                    }
                    else
                    {
                        return(ReturnCodeFactory.Error((int)Errors.Unknown, "Error trying to add a new folder"));
                    }
                }
            return(code);
        }
Exemplo n.º 5
0
        public ReturnCode FolderRename(int IdFolder, string NameFolder)
        {
            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            ReturnCode code  = ReturnCodeFactory.Success($"Folder has been renamed: {NameFolder}");
            int        count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    command.ZzOpenConnection().ZzText(DbManager.SqlFolderCountByIdFolder).ZzAdd("@IdFolder", IdFolder).ZzAdd("@NameFolder", NameFolder);
                    count = command.ZzGetScalarInteger();
                    if (count != 0)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.FolderAlreadyExists, "A folder with the same name already exists"));
                    }
                    count = command.ZzExecuteNonQuery(DbManager.SqlFolderRename);
                    if (count < 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.Unknown, "Error trying to rename a folder"));
                    }
                }
            if (IdFolder == DbManager.IdFolderRoot)
            {
                RootFolderName = GetRootFolderName();
            }
            return(code);
        }
Exemplo n.º 6
0
        private async Task EventButtonSettingDelete(object sender, EventArgs e)
        {
            const string ErrorHeader = "Error trying to delete a setting";
            ReturnCode   code        = ReturnCodeFactory.Error(ErrorHeader);
            string       NameSetting = CurrentIdSetting;

            try
            {
                code = DbSettings.SettingDelete(CurrentIdFolder, CurrentIdSetting);
            }
            catch (Exception ex)
            {
                Ms.Error(ErrorHeader, ex).Control(TxSettingRename).Create();
                return;
            }

            if (code.Success)
            {
                await RefreshGridSettingsAndClearSelection(); // Setting was deleted //
            }
            else
            {
                Ms.Message(ErrorHeader, code.StringValue).Wire(TxSettingDelete).Warning();
            }
            ShowNotification(code.Success, code.StringValue);
        }
Exemplo n.º 7
0
        public ReturnCode SettingUpdate(int IdFolder, string IdSetting, int IdType, string value)
        {
            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            ReturnCode code = ReturnCodeFactory.Success($"Changes saved: {IdSetting}");

            if (IdSetting.Trim().Length < 1)
            {
                return(ReturnCodeFactory.Error((int)Errors.SettingNameNotSpecified, "Setting name not specified"));
            }
            int count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    count = command.ZzOpenConnection().ZzAdd("@IdFolder", IdFolder).ZzAdd("@IdSetting", IdSetting).ZzGetScalarInteger(DbManager.SqlSettingCount);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.SettingDoesNotExist, "The setting with the specified name does not exist"));
                    }
                    count = command.ZzAdd("@IdType", IdType).ZzAdd("@SettingValue", value).ZzExecuteNonQuery(DbManager.SqlSettingUpdate);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.SettingUpdateFailed, "Error trying to change a value of the setting"));
                    }
                    code.StringNote = value;
                }
            return(code);
        }
Exemplo n.º 8
0
        public ReturnCode SettingCreate(int IdFolder, string IdSetting, int IdType, string value)
        {
            //IdSetting = IdSetting.RemoveSpecialCharacters();
            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            ReturnCode code = ReturnCodeFactory.Success($"New setting has been created: {IdSetting}");

            if (IdSetting.Trim().Length < 1)
            {
                return(ReturnCodeFactory.Error((int)Errors.SettingNameNotSpecified, "Setting name not specified"));
            }
            int count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    count = command.ZzOpenConnection().ZzAdd("@IdFolder", IdFolder).ZzAdd("@IdSetting", IdSetting).ZzGetScalarInteger(DbManager.SqlSettingCount);
                    if (count > 0)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.SettingAlreadyExists, "A setting with the same name already exists"));
                    }
                    count = command.ZzAdd("@IdType", IdType).ZzAdd("@SettingValue", value).ZzExecuteNonQuery(DbManager.SqlSettingInsert);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.SettingInsertFailed, "Error trying to add a new setting"));
                    }
                    code.StringNote = value;
                }
            return(code);
        }
Exemplo n.º 9
0
        public ReturnCode SettingRename(int IdFolder, string IdSettingOld, string IdSettingNew)
        {
            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            ReturnCode code = ReturnCodeFactory.Success($"Setting has been renamed: {IdSettingNew}");

            if (IdSettingNew.Trim().Length < 1)
            {
                return(ReturnCodeFactory.Error((int)Errors.SettingNameNotSpecified, "New setting name not specified"));
            }

            int count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    count = command.ZzOpenConnection().ZzAdd("@IdFolder", IdFolder).ZzAdd("@IdSetting", IdSettingNew).ZzGetScalarInteger(DbManager.SqlSettingCount);
                    if (count > 0)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.SettingAlreadyExists, "A setting with the same name already exists"));
                    }
                    command.Parameters.Clear();
                    count = command.ZzAdd("@IdFolder", IdFolder).ZzAdd("@IdSettingOld", IdSettingOld).ZzAdd("@IdSettingNew", IdSettingNew).ZzExecuteNonQuery(DbManager.SqlSettingRename);
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.Unknown, "Error trying to rename a setting"));
                    }
                }
            return(code);
        }
Exemplo n.º 10
0
        private void EventButtonRenameFolder(object sender, EventArgs e)
        {
            const string ErrorHeader = "Failed to rename folder";
            RadTreeNode  node        = TvFolders.SelectedNode;
            ReturnCode   code        = ReturnCodeFactory.Error(ErrorHeader);

            if (node == null)
            {
                Ms.ShortMessage(MsgType.Fail, "The folder you want to rename is not specified", 380, TxFolderRename).Create();
                return;
            }

            int    IdFolder     = DbSettings.GetIdFolder(node);
            string NodeFullPath = node.FullPath;

            if (IdFolder < 0)
            {
                Ms.ShortMessage(MsgType.Fail, "The folder you want to rename is not specified", 350, TxFolderRename).Create();
                return;
            }

            string NameFolder = TxFolderRename.Text.RemoveSpecialCharacters();

            TxFolderRename.Text = NameFolder;

            if (NameFolder.Length < 1)
            {
                Ms.ShortMessage(MsgType.Fail, "No new folder name specified", 340, TxFolderRename).Create();
                return;
            }

            if (node.Text == NameFolder)
            {
                Ms.ShortMessage(MsgType.Fail, "The new name is no different from the previous one", 400, TxFolderRename).Create();
                return;
            }

            try
            {
                code = DbSettings.FolderRename(IdFolder, NameFolder);
            }
            catch (Exception ex)
            {
                Ms.Error(ErrorHeader, ex).Control(TxFolderRename).Create();
                return;
            }

            if (code.Success)
            {
                Ms.ShortMessage(MsgType.Debug, code.StringValue, GetMessageBoxWidth(code.StringValue), TxFolderRename).Create();
                ClearArraySearchResult();
                node.Text     = NameFolder;
                node.Selected = false;
                node.Selected = true;
            }
            else
            {
                Ms.Message(ErrorHeader, code.StringValue, TxFolderRename).Fail();
            }
        }
Exemplo n.º 11
0
 public ReturnCode SaveSettingText(string FolderPath, string IdSetting, TypeSetting type, string value)
 {
     if (SettingTypeIsText(type) == false)
     {
         return(ReturnCodeFactory.Error((int)Errors.SettingInappropriateType, "Incorrect [TypeSetting] value for the [SaveSettingText] method."));
     }
     return(SettingCreateOrUpdate(FolderPath, IdSetting, type, value));
 }
Exemplo n.º 12
0
        private void EventButtonDeleteFolder(object sender, EventArgs e)
        {
            const string ErrorHeader = "Failed to delete folder";
            RadTreeNode  node        = TvFolders.SelectedNode;
            ReturnCode   code        = ReturnCodeFactory.Error(ErrorHeader);

            if (node == null)
            {
                Ms.ShortMessage(MsgType.Fail, "The folder you want to delete is not specified", 350, TxFolderDelete).Create();
                return;
            }

            if (node.Level == 0)
            {
                Ms.ShortMessage(MsgType.Warning, "It is not allowed to delete a root folder", 350, TxFolderDelete).Create();
                return;
            }

            RadTreeNode parent = node.Parent;

            if (parent == null)
            {
                Ms.ShortMessage(MsgType.Fail, "The folder containing the folder to be deleted was not found", 450, TxFolderDelete).Create();
                return;
            }

            string NodeFullPath = parent.FullPath;
            int    IdFolder     = DbSettings.GetIdFolder(node);

            try
            {
                code = DbSettings.FolderDelete(IdFolder, node.Text);
            }
            catch (Exception ex)
            {
                Ms.Error(ErrorHeader, ex).Control(TxFolderDelete).Create();
                return;
            }

            if (code.Success)
            {
                Ms.ShortMessage(MsgType.Debug, code.StringValue, GetMessageBoxWidth(code.StringValue), TxFolderDelete).Create();
                parent.Selected = true;
                ClearArraySearchResult();
                node.Remove();
                if (parent.Nodes.Count < 1)
                {
                    parent.ImageIndex = 0;
                }
            }
            else
            {
                Ms.Message(ErrorHeader, code.StringValue, TxFolderDelete).Fail();
            }
        }
Exemplo n.º 13
0
        public async Task <ReturnCode> FolderForceDeleteAsync(string FolderPath)
        {
            ReturnCode code     = ReturnCodeFactory.Error();
            int        IdFolder = await GetIdFolderAsync(FolderPath);

            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            if (IdFolder == DbManager.IdFolderRoot)
            {
                return(ReturnCodeFactory.Error("The root folder cannot be specified as an argument to this function."));
            }
            List <int> list = await GetListOfIdFoldersAsync(IdFolder);

            int count = 0;

            async Task ProcessOneFolder(SQLiteCommand cmd, int InnerIdFolder)
            {
                List <int> InnerList = GetListOfIdFolders(cmd, InnerIdFolder);

                foreach (int item in InnerList)
                {
                    await ProcessOneFolder(cmd, item);
                }
                await DeleteSettingsAndFolder(cmd, InnerIdFolder);
            }

            async Task DeleteSettingsAndFolder(SQLiteCommand cmd, int InnerIdFolder)
            {
                cmd.Parameters.Clear();
                await cmd.ZzAdd("@IdFolder", InnerIdFolder).ZzExecuteNonQueryAsync(DbManager.SqlDeleteAllSettingsOfOneFolder);

                cmd.ZzExecuteNonQuery(DbManager.SqlFolderDelete);
                count++;
            }

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection).ZzOpenConnection())
                {
                    foreach (int item in list)
                    {
                        await ProcessOneFolder(command, item);
                    }
                }

            DeleteAllSettingsOfOneFolder(IdFolder);
            code             = FolderDelete(IdFolder, FolderPath);
            code.StringNote += $" Folders processed = {++count}";
            return(code);
        }
Exemplo n.º 14
0
        public ReturnCode CheckIdSettingCharacters(string IdSetting)
        {
            if (IdSetting.Trim() == string.Empty)
            {
                return(ReturnCodeFactory.Error("Incorrect name of the setting."));
            }
            string CorrectedIdSetting = IdSetting.RemoveSpecialCharacters();

            if (CorrectedIdSetting != IdSetting)
            {
                return(ReturnCodeFactory.Error($"Special characters are not allowed in the setting name. Allowed name may be = {CorrectedIdSetting}"));
            }
            return(ReturnCodeFactory.Success());
        }
Exemplo n.º 15
0
        public ReturnCode GetRandomSetting()
        {
            ReturnCode code = ReturnCodeFactory.Error();

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(DbManager.SqlGetRandomSetting, connection).ZzOpenConnection())
                    using (SQLiteDataReader reader = command.ExecuteReader())
                        while (reader.Read())
                        {
                            code = ReturnCodeFactory.Create(ReturnCodeFactory.NcSuccess, reader.GetInt32(0), reader.GetString(1), string.Empty);
                            //Trace.WriteLine("---> " + ReturnCodeFormatter.ToString(code));
                            break;
                        }
            return(code);
        }
        private ReturnCode CheckDatabaseStructure()
        {
            ReturnCode code             = ReturnCodeFactory.Success($"Database structure is ok");
            int        CheckObjectCount = 4;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    command.ZzOpenConnection().ZzText(DbManager.SqlCheckDatabaseStructure);
                    if (command.ZzGetScalarInteger() != CheckObjectCount)
                    {
                        code = ReturnCodeFactory.Error(ReturnCodeFactory.NcError, "The database structure is not compliant with the standard. When working with the database errors may occur.");
                    }
                }
            return(code);
        }
Exemplo n.º 17
0
        private async Task EventButtonSettingRename(object sender, EventArgs e)
        {
            ReturnCode code             = ReturnCodeFactory.Error("An error occurred while trying to change the setting name");
            string     NameSettingDraft = TxSettingRename.Text.Trim();
            string     NameSetting      = NameSettingDraft.RemoveSpecialCharacters();

            TxSettingRename.Text = NameSetting;

            if (NameSetting.Length < 1)
            {
                if (NameSettingDraft.Length < 1)
                {
                    Ms.ShortMessage(MsgType.Fail, "Missing new setting name", 350, TxSettingRename).Create();
                    return;
                }
                else
                {
                    Ms.ShortMessage(MsgType.Fail, "You have specified characters that cannot be used in the name of setting", 400, TxSettingRename).Create();
                    return;
                }
            }

            const string ErrorHeader = "Failed to change setting name";

            try
            {
                code = DbSettings.SettingRename(CurrentIdFolder, CurrentIdSetting, NameSetting);
            }
            catch (Exception ex)
            {
                Ms.Error(ErrorHeader, ex).Control(TxSettingRename).Create();
                return;
            }

            if (code.Success)
            {
                await RefreshGridSettingsAndClearSelection(); // Setting was renamed //

                //Ms.Message($"{NameSetting}", code.StringValue).Wire(TxSettingRename).Offset(TxSettingRename.Width, -2 * TxSettingRename.Height).Ok();
                //SettingsToolbarSetEmptyPage();
            }
            else
            {
                Ms.Message(ErrorHeader, code.StringValue).Wire(TxSettingRename).Warning();
            }
            ShowNotification(code.Success, code.StringValue);
        }
Exemplo n.º 18
0
        private ReturnCode SettingCreateOrUpdate(string FolderPath, string IdSetting, TypeSetting type, string value)
        {
            int IdFolder = GetIdFolder(FolderPath);

            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            int IdType = (int)type;
            //IdSetting = IdSetting.RemoveSpecialCharacters();
            ReturnCode code = ReturnCodeFactory.Success($"New setting has been created: {IdSetting}");

            if (IdSetting.Trim().Length < 1)
            {
                return(ReturnCodeFactory.Error((int)Errors.SettingNameNotSpecified, "Setting name not specified"));
            }
            int count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    count = command.ZzOpenConnection().ZzAdd("@IdFolder", IdFolder).ZzAdd("@IdSetting", IdSetting).ZzGetScalarInteger(DbManager.SqlSettingCount);
                    if (count > 0) // UPDATE value of existing setting //
                    {
                        code  = ReturnCodeFactory.Success($"Changes saved: {IdSetting}");
                        count = command.ZzAdd("@IdType", IdType).ZzAdd("@SettingValue", value).ZzExecuteNonQuery(DbManager.SqlSettingUpdate);
                        if (count != 1)
                        {
                            return(ReturnCodeFactory.Error((int)Errors.SettingUpdateFailed, "Error trying to change a value of the setting"));
                        }
                        code.StringNote = value;
                    }
                    else // ADD a new value of setting //
                    {
                        count = command.ZzAdd("@IdType", IdType).ZzAdd("@SettingValue", value).ZzExecuteNonQuery(DbManager.SqlSettingInsert);
                        if (count != 1)
                        {
                            return(ReturnCodeFactory.Error((int)Errors.SettingInsertFailed, "Error trying to add a new setting"));
                        }
                        code.StringNote = value;
                    }
                }
            return(code);
        }
        public ReturnCode ConnectToDatabase(string PathToDatabase = "")
        {
            if (PathToDatabase == string.Empty)
            {
                PathToDatabase = Path.Combine(Path.Combine(Application.StartupPath, DefaultFolder), DefaultFileName);
            }

            //MessageBox.Show(PathToDatabase);

            SetPathToDatabase(PathToDatabase);
            ReturnCode code;

            try
            {
                code = CheckDatabaseStructure();
            }
            catch
            {
                return(ReturnCodeFactory.Error("The file you specified is not a SQLite database."));
            }

            if (code.Error)
            {
                return(code);
            }

            if (TableTypes != null)
            {
                TableTypes.Clear();
            }
            try
            {
                TableTypes     = GetTable(DbManager.TnTypes);
                RootFolderName = GetRootFolderName();
            }
            catch (Exception ex)
            {
                RootFolderName = string.Empty;
                return(ReturnCodeFactory.Error("Could not read data from the database file.", ex.Message));
            }
            return(ReturnCodeFactory.Success());
        }
Exemplo n.º 20
0
        /// <summary>
        /// Get all settings of all folders.
        /// </summary>
        public List <Setting> GetAllSettings()
        {
            ReturnCode     code = ReturnCodeFactory.Error();
            List <Setting> list = new List <Setting>();

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(DbManager.SqlGetAllSettings, connection).ZzOpenConnection())
                    using (SQLiteDataReader reader = command.ExecuteReader())
                        while (reader.Read())
                        {
                            list.Add(Setting.Create
                                     (
                                         reader.GetInt32(0),
                                         reader.GetString(1),
                                         reader.GetInt32(2),
                                         reader.GetString(3),
                                         reader.GetInt32(4)
                                     ));
                        }
            return(list);
        }
Exemplo n.º 21
0
        public ReturnCode FolderDelete(int IdFolder, string NameFolder)
        {
            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            ReturnCode code  = ReturnCodeFactory.Success($"Folder has been deleted: {NameFolder}");
            int        count = 0;

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    command.ZzOpenConnection().ZzText(DbManager.SqlFolderCountSimple).ZzAdd("@IdFolder", IdFolder);
                    count = command.ZzGetScalarInteger();
                    if (count != 1)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.FolderNotFound, "The folder you specified was not found"));
                    }
                    count = command.ZzGetScalarInteger(DbManager.SqlCountChildFolder);
                    if (count != 0)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.FolderHasChildFolder, "You cannot delete a folder that has other folders inside"));
                    }
                    count = command.ZzGetScalarInteger(DbManager.SqlCountChildSettings);
                    if (count != 0)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.FolderHasSettings, "You cannot delete a folder that contains settings"));
                    }
                    count = command.ZzExecuteNonQuery(DbManager.SqlFolderDelete);
                    if (count == 0)
                    {
                        return(ReturnCodeFactory.Error((int)Errors.Unknown, "Error trying to delete a folder"));
                    }
                }
            return(code);
        }
Exemplo n.º 22
0
        private async void EventFolderForceDelete(object sender, EventArgs e)
        {
            string FolderFullPath = TxOne.Text;

            TxTwo.Text = FolderFullPath;
            TxOne.Clear();

            if (FolderFullPath.Trim().Length < 1)
            {
                Print("ERROR ! Folder name is empty");
                return;
            }

            Print("");
            Print("---------------------------------------------------------------------------------------------");
            BxFolderForceDelete.Enabled = false;
            BxForceDeleteFolderUsingTreeview.Enabled = false;

            Application.DoEvents();

            Stopwatch sw = new Stopwatch();

            await Task.Delay(500);

            Application.DoEvents();

            ReturnCode code = ReturnCodeFactory.Error("ERROR ! No any action was performed!");

            if ((sender as RadButton).Name == BxFolderForceDelete.Name)
            {
                Print(" * * *  FolderForceDelete");
                sw   = Stopwatch.StartNew();
                code = DbSettings.FolderForceDelete(FolderFullPath);
            }

            if ((sender as RadButton).Name == BxFolderForceDeleteAsync.Name)
            {
                Print(@" /\/\/\  FolderForceDeleteAsync");
                sw   = Stopwatch.StartNew();
                code = await DbSettings.FolderForceDeleteAsync(FolderFullPath);
            }

            if ((sender as RadButton).Name == BxForceDeleteFolderUsingTreeview.Name)
            {
                Print(" ^ ^ ^  FolderForceDeleteUsingTreeview");
                sw   = Stopwatch.StartNew();
                code = DbSettings.FolderForceDeleteUsingTreeview(FolderFullPath);
            }

            sw.Stop();

            BxFolderForceDelete.Enabled = true;
            BxForceDeleteFolderUsingTreeview.Enabled = true;

            Application.DoEvents();

            Print(ReturnCodeFormatter.ToString(code));
            Print($"Time = {sw.ElapsedMilliseconds} ms");

            await Task.Delay(500);

            code = DbSettings.FolderDelete(FolderFullPath, FolderFullPath);

            Print($"CHECK is folder deleted: {ReturnCodeFormatter.ToString(code)}");

            CxProcess.Execute(@"e:\restore_test_db.bat", "");
        }
Exemplo n.º 23
0
        private async Task EventSettingSave(bool AddNewSetting)
        {
            string     ErrorHeader = AddNewSetting ? "Failed to create a new setting" : "Failed to change setting value";
            ReturnCode code        = ReturnCodeFactory.Error(ErrorHeader);
            string     IdSetting   = AddNewSetting ? TxSettingAdd.Text.RemoveSpecialCharacters() : CurrentIdSetting;

            TxSettingAdd.Text = AddNewSetting ? IdSetting : string.Empty;

            if (IdSetting.Length < 1)
            {
                Ms.Message("Error", "Setting name not specified").Control(DxTypes).Warning(); return;
            }

            TypeSetting type = AddNewSetting ? GetTypeFromDropDownList() : (TypeSetting)CurrentSetting.IdType;

            switch (type)
            {
            case TypeSetting.Unknown:
                PvEditor.SelectedPage = PgEmpty;
                code = ReturnCodeFactory.Error("Setting type not specified");
                break;

            case TypeSetting.Boolean:
                PvEditor.SelectedPage = PgBoolean;
                code = DbSettings.SaveSettingBoolean(AddNewSetting, CurrentIdFolder, IdSetting, StxBoolean.Value);
                break;

            case TypeSetting.Datetime:
                PvEditor.SelectedPage = PgDatetime;
                code = DbSettings.SaveSettingDatetime(AddNewSetting, CurrentIdFolder, IdSetting, StxDatetime.Value);
                break;

            case TypeSetting.Integer64:
                PvEditor.SelectedPage = PgInteger;
                StxLongInteger.Text   = StxLongInteger.Text.Trim();
                if (Manager.CvManager.CvInt64.IsValid(StxLongInteger.Text) == false)
                {
                    Ms.Message("Error", "Value is not an integer").Control(PnUpper).Offset(TvFolders.Width, -100).Warning(); return;
                }
                code = DbSettings.SaveSettingInteger64(AddNewSetting, CurrentIdFolder, IdSetting, Manager.CvManager.CvInt64.FromString(StxLongInteger.Text).Value);
                break;

            case TypeSetting.Text:
                PvEditor.SelectedPage = PgText;
                code = DbSettings.SaveSettingText(AddNewSetting, CurrentIdFolder, IdSetting, TypeSetting.Text, StxText.Text);
                break;

            case TypeSetting.Password:
                PvEditor.SelectedPage = PgPassword;
                code = DbSettings.SaveSettingText(AddNewSetting, CurrentIdFolder, IdSetting, TypeSetting.Password, StxPassword.Text);
                break;

            case TypeSetting.File:
                PvEditor.SelectedPage = PgFile;
                code = DbSettings.SaveSettingText(AddNewSetting, CurrentIdFolder, IdSetting, TypeSetting.File, StxFile.Text);
                break;

            case TypeSetting.Folder:
                PvEditor.SelectedPage = PgFolder;
                code = DbSettings.SaveSettingText(AddNewSetting, CurrentIdFolder, IdSetting, TypeSetting.Folder, StxFolder.Text);
                break;

            case TypeSetting.Font:
                PvEditor.SelectedPage = PgFont;
                if (StxFont.Text.Length < 1)
                {
                    Ms.Message("Error", "You did not select a font").Control(DxTypes).Warning(); return;
                }
                code = DbSettings.SaveSettingText(AddNewSetting, CurrentIdFolder, IdSetting, TypeSetting.Font, StxFont.Text);
                break;

            case TypeSetting.Color:
                PvEditor.SelectedPage = PgColor;
                if (StxColor.Text.Length < 1)
                {
                    Ms.Message("Error", "You did not select a color").Control(DxTypes).Warning(); return;
                }
                code = DbSettings.SaveSettingText(AddNewSetting, CurrentIdFolder, IdSetting, TypeSetting.Color, StxColor.Text);
                break;

            default:
                PvEditor.SelectedPage = PgEmpty;
                break;
            }

            Manager.UiControl.AllowChangeSelectedItem(true);

            if (code.Success)
            {
                TxSettingAdd.Clear();
                await RefreshGridSettingsAndClearSelection(); // Setting: INSERT or UPDATE //
            }
            else
            {
                Ms.Message("Error", code.StringValue).Control(DxTypes).Offset(30, -100).Warning();
            }
            ShowNotification(code.Success, code.StringValue);
        }
Exemplo n.º 24
0
        private void EventButtonAddFolder(object sender, EventArgs e)
        {
            const string ErrorHeader = "Error trying to add a new folder";
            RadTreeNode  parent      = TvFolders.SelectedNode;
            ReturnCode   code        = ReturnCodeFactory.Error(ErrorHeader);

            if (parent == null)
            {
                Ms.ShortMessage(MsgType.Fail, "The folder where the new one is added is not specified", 400, TxFolderAdd).Create();
                return;
            }

            int    IdFolder       = DbSettings.GetIdFolder(parent);
            string ParentFullPath = parent.FullPath;
            bool   Error          = false;

            if (IdFolder < 0)
            {
                Ms.ShortMessage(MsgType.Fail, "The folder where the new one is added is not specified", 400, TxFolderAdd).Create();
                return;
            }

            if (parent.Level > 14)
            {
                Ms.ShortMessage(MsgType.Fail, "Hierarchical nesting too deep", 280, TxFolderAdd).Create();
                return;
            }

            string NameFolderDraft = TxFolderAdd.Text.Trim();
            string NameFolder      = NameFolderDraft.RemoveSpecialCharacters();

            TxFolderAdd.Text = NameFolder;

            if (NameFolder.Length < 1)
            {
                if (NameFolderDraft.Length < 1)
                {
                    Ms.ShortMessage(MsgType.Fail, "New folder name not specified", 230, TxFolderAdd).Offset(-100 + TxFolderAdd.Size.Width, -70).Create();
                    return;
                }
                else
                {
                    Ms.ShortMessage(MsgType.Fail, "You have specified characters that cannot be used in the folder name", 470, TxFolderAdd).Create();
                    return;
                }
            }

            int IdNewFolder = -1;

            try
            {
                code = DbSettings.FolderInsert(IdFolder, NameFolder);
            }
            catch (Exception ex)
            {
                Error = true;
                Ms.Error(ErrorHeader, ex).Control(TxFolderAdd).Create();
                IdNewFolder = -1;
            }

            IdNewFolder = code.IdObject;

            if (code.Error)
            {
                if (Error == false)
                {
                    Ms.Message(ErrorHeader, code.StringValue, TxFolderAdd).Fail();
                }
            }

            if (IdNewFolder <= 0)
            {
                if ((Error == false) && (code.Success))
                {
                    Ms.Message(ErrorHeader, code.StringValue, TxFolderAdd).Fail();
                }
            }
            else // Give out SUCCESS MESSAGE //
            {
                if (NameFolderDraft.Length == NameFolder.Length)
                {
                    Ms.ShortMessage(MsgType.Debug, code.StringValue, GetMessageBoxWidth(code.StringValue), TxFolderAdd)
                    .Offset(TxFolderAdd.Width, -5 * TxFolderAdd.Height).Create();
                }
                else
                {
                    Ms.Message("Some characters you specify\nhave been excluded from the name", code.StringValue)
                    .Control(TxFolderAdd).Offset(200, 0).Delay(7).Info();
                    Ms.Message("The folder name contained forbidden characters:", NameFolderDraft).NoAlert().Warning();
                    Ms.Message("The name has been corrected:", NameFolder).NoAlert().Warning();
                }

                EventRefreshDataFromDatabaseFile();

                parent = TvFolders.GetNodeByPath(ParentFullPath);
                if (parent == null)
                {
                    Ms.Message(MsgType.Error, "Error!", $"Method TvFolders.GetNodeByPath(ParentFullPath) has returned [null]. ParentFullPath={ParentFullPath}", null, MsgPos.Unknown, 0).NoAlert().Create();
                    Ms.ShortMessage(MsgType.Warning, $"Error! Details in the message log", 300, TxFolderAdd).NoTable().Create();
                }
                else
                {
                    TvManager.TryToSelectFolderAfterCreating(parent, NameFolder);
                }
            }
            TxFolderAdd.Clear();
        }
Exemplo n.º 25
0
        public ReturnCode CreateNewDatabase(string FileName)
        {
            string     sql  = string.Empty;
            ReturnCode code = ReturnCodeFactory.Success();

            try
            {
                SQLiteConnection.CreateFile(FileName);
                using (SQLiteConnection connection = new SQLiteConnection($"Data Source={FileName};Version=3;"))
                {
                    connection.Open();
                    using (SQLiteCommand command = new SQLiteCommand(connection))
                    {
                        sql = @"CREATE TABLE FOLDERS 
            (
            IdFolder INTEGER CONSTRAINT PK_FOLDERS PRIMARY KEY ON CONFLICT ROLLBACK AUTOINCREMENT NOT NULL ON CONFLICT ROLLBACK, 
            IdParent INTEGER NOT NULL ON CONFLICT ROLLBACK CONSTRAINT FK_FOLDERS REFERENCES FOLDERS (IdFolder) 
            ON DELETE RESTRICT ON UPDATE CASCADE, NameFolder TEXT (255) NOT NULL
            );";
                        command.ZzExecuteNonQuery(sql);

                        sql = $@"
            INSERT INTO FOLDERS VALUES({IdFolderRoot}, {IdFolderRoot}, 'application');
            INSERT INTO FOLDERS VALUES(1, {IdFolderRoot}, 'local_database');";
                        command.ZzExecuteNonQuery(sql);

                        sql = @"
            CREATE TABLE TYPES (IdType INTEGER PRIMARY KEY NOT NULL, NameType TEXT (255) NOT NULL, Note TEXT (4000));";
                        command.ZzExecuteNonQuery(sql);

                        sql = @"
            INSERT INTO TYPES VALUES(0,'unknown',NULL);
            INSERT INTO TYPES VALUES(1,'boolean',NULL);
            INSERT INTO TYPES VALUES(2,'datetime',NULL);
            INSERT INTO TYPES VALUES(3,'integer',NULL);
            INSERT INTO TYPES VALUES(4,'text',NULL);
            INSERT INTO TYPES VALUES(5,'password',NULL);
            INSERT INTO TYPES VALUES(6,'folder name',NULL);
            INSERT INTO TYPES VALUES(7,'file name',NULL);
            INSERT INTO TYPES VALUES(8,'font',NULL);
            INSERT INTO TYPES VALUES(9,'color',NULL);";
                        command.ZzExecuteNonQuery(sql);

                        sql = @"CREATE TABLE SETTINGS (
            IdFolder INTEGER NOT NULL, 
            IdSetting TEXT (255) NOT NULL, 
            IdType INTEGER NOT NULL, 
            SettingValue TEXT, 
            Rank INTEGER NOT NULL, 
            CONSTRAINT PK_SETTINGS PRIMARY KEY (IdFolder, IdSetting) 
            ON CONFLICT ROLLBACK, CONSTRAINT FK_SETTINGS_FOLDERS FOREIGN KEY (IdFolder) 
            REFERENCES FOLDERS (IdFolder) ON DELETE RESTRICT ON UPDATE CASCADE, 
            CONSTRAINT FK_SETTINGS_TYPES FOREIGN KEY (IdType) REFERENCES TYPES (IdType) 
            ON DELETE RESTRICT ON UPDATE CASCADE);";
                        command.ZzExecuteNonQuery(sql);

                        sql = @"DELETE FROM sqlite_sequence;";
                        command.ZzExecuteNonQuery(sql);

                        sql = @"INSERT INTO sqlite_sequence VALUES('FOLDERS',2);";
                        command.ZzExecuteNonQuery(sql);

                        sql = @"CREATE UNIQUE INDEX UX_NameFolder ON FOLDERS(IdParent, NameFolder);";
                        command.ZzExecuteNonQuery(sql);

                        sql = @"CREATE VIEW V_SETTINGS AS
            SELECT A.IdFolder,
                   A.IdSetting,
                   A.IdType,
                   B.NameType,
                   A.SettingValue,
                   A.Rank,
                   CASE WHEN A.IdType = 1 THEN A.SettingValue ELSE '' END AS BooleanValue
              FROM SETTINGS A
              LEFT JOIN TYPES B
              ON A.IdType = B.IdType
              ORDER BY A.Rank, A.IdSetting;";
                        command.ZzExecuteNonQuery(sql);
                        connection.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                code = ReturnCodeFactory.Error(ex.Message, "Could not create a new database");
            }
            return(code);
        }
Exemplo n.º 26
0
        private void TestActionUpdateRandomSetting(object sender)
        {
            Setting    setting    = GetRandomSetting();
            string     FolderPath = GetFolderPath(setting);
            ReturnCode code       = ReturnCodeFactory.Error("cancel");

            string guid = "U-" + GetNewGuid(); OperationBegin(guid);

            Trace.WriteLine($"update ... {guid} ... [[{setting.IdSetting}]]");

            Stopwatch sw = Stopwatch.StartNew();

            if (setting.IdType == (int)TypeSetting.Boolean)
            {
                code = DbSettings.SaveSettingBoolean(FolderPath, setting.IdSetting, VxFaker.Random.Bool());
            }
            else if (setting.IdType == (int)TypeSetting.Datetime)
            {
                DateTime dt = new DateTime(2000, 1, 1).AddSeconds(VxFaker.Random.Int(1, 600000000));
                code = DbSettings.SaveSettingDatetime(FolderPath, setting.IdSetting, dt);
            }
            else if (setting.IdType == (int)TypeSetting.Integer64)
            {
                code = DbSettings.SaveSettingInteger64(FolderPath, setting.IdSetting, VxFaker.Random.Long());
            }

            if
            (
                (setting.IdType == (int)TypeSetting.Password) ||
                (setting.IdType == (int)TypeSetting.File) ||
                (setting.IdType == (int)TypeSetting.Folder) ||
                (setting.IdType == (int)TypeSetting.Text))
            {
                string Text = VxFaker.Hacker.Abbreviation() + "~" + VxFaker.Hacker.Adjective() + "$" + VxFaker.Hacker.Phrase() + VxFaker.Company.CompanyName() + VxFaker.Lorem.Sentence(5) + VxFaker.Phone.PhoneNumber() + " " + VxFaker.Address.SecondaryAddress() + " " + VxFaker.System.DirectoryPath() + " " + VxFaker.Address.StreetAddress();
                Text = Text.SafeSubstring(1, VxFaker.Random.Int(1, Text.Length));
                code = DbSettings.SaveSettingText(FolderPath, setting.IdSetting, (TypeSetting)setting.IdType, Text);
            }

            if (setting.IdType == (int)TypeSetting.Color)
            {
                Color color = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
                code = DbSettings.SaveSettingColor(FolderPath, setting.IdSetting, color);
            }

            if (setting.IdType == (int)TypeSetting.Font)
            {
                Font font = new Font("Arial", rnd.Next(8, 28));
                code = DbSettings.SaveSettingFont(FolderPath, setting.IdSetting, font);
            }
            sw.Stop();


            if (code.StringValue == "cancel")
            {
                Trace.WriteLine($"^^^ {guid} --- Cancel updating of setting"); return;
            }

            if (code.Error)
            {
                Trace.WriteLine($"!!! {guid} --- Could not update a setting. Error = {code.StringValue}");
            }
            else
            {
                Trace.WriteLine($"UPDATE --- {guid} --- [[{setting.IdSetting}]] --- {setting.IdType} >>>> ms = {sw.ElapsedMilliseconds}");
                OperationSuccess(guid);
            }
        }
 public static ReceivedValueInteger32 Error(int ErrorCode, string ErrorMessage = CxConvert.Empty)
 {
     return(new ReceivedValueInteger32(ReturnCodeFactory.Error(ErrorCode, ErrorMessage), DefaultValue));
 }
Exemplo n.º 28
0
        private ReturnCode FolderForceDeleteUsingTreeviewOldVersionDeprecated(string FolderPath)
        {
            // Trace.WriteLine($"FolderForceDelete(string FolderPath)  ---> {FolderPath}");
            // This method uses RadTreeView class to perform search operations //
            ReturnCode code = ReturnCodeFactory.Error();

            FolderPath = AddRootFolderNameIfNotSpecified(FolderPath);

            int IdFolder = GetIdFolder(FolderPath);

            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }

            //Trace.WriteLine($"FolderForceDelete(string FolderPath)  ---> Point 1 --- IdFolder = {IdFolder}");

            bool FlagFound = false;

            int count = 0;

            void SearchNode(RadTreeNode node)
            {
                if (FlagFound)
                {
                    return;
                }
                //if (GetIdFolder(node) == IdFolder)
                if (node.FullPath == FolderPath)
                {
                    FlagFound = true;
                    //Trace.WriteLine($"Found !!! ---> {node.FullPath}");
                    LocalMethodDeleteAllSettingsOfOneFolder(node);
                    LocalMethodDeleteFolderAndAllChildFolders(node);
                }
                if (!FlagFound)
                {
                    foreach (var item in node.Nodes)
                    {
                        SearchNode(item);
                    }
                }
            }

            void LocalMethodDeleteAllSettingsOfOneFolder(RadTreeNode node)
            {
                DeleteAllSettingsOfOneFolder(node.FullPath);
                //Trace.WriteLine($"Delete settings of folder ======= {node.FullPath}");
                foreach (var item in node.Nodes)
                {
                    LocalMethodDeleteAllSettingsOfOneFolder(item);
                }
            }

            void LocalMethodDeleteFolderAndAllChildFolders(RadTreeNode node)
            {
                foreach (var item in node.Nodes)
                {
                    LocalMethodDeleteFolderAndAllChildFolders(item);
                }
                ReturnCode result = FolderDelete(node.FullPath, string.Empty);

                if (IdFolder == GetIdFolder(node))
                {
                    code = result;
                }
                count++;
                //Trace.WriteLine($@"Delete folder /\/\/\/\/\/\/\ === {node.FullPath}");
            }

            DataTable  table = GetTableFolders();
            FxTreeView form  = new FxTreeView();

            form.Visible = false;
            FillTreeView(form.TvFolders, table);

            foreach (var item in form.TvFolders.Nodes)
            {
                SearchNode(item);
            }

            form.TvFolders.DataSource = null;
            table.Clear();
            form.TvFolders.Dispose();
            table.Dispose();
            form.Close();

            //Trace.WriteLine($@" >>>>>>>>>>>>>>>>>>>>> {ReturnCodeFormatter.ToString(code)}");
            code.StringNote += $" Folders processed = {count}";
            return(code);
        }
Exemplo n.º 29
0
 public ReturnCode FolderNotFound() => ReturnCodeFactory.Error((int)Errors.FolderNotFound, "Folder not found");
Exemplo n.º 30
0
        public ReturnCode FolderForceDeleteUsingTreeview(string FolderPath)
        {
            // This method uses RadTreeView class to perform search operations //
            ReturnCode code = ReturnCodeFactory.Error();

            FolderPath = AddRootFolderNameIfNotSpecified(FolderPath);
            int IdFolder = GetIdFolder(FolderPath);

            if (FolderNotFound(IdFolder))
            {
                return(FolderNotFound());
            }
            if (IdFolder == DbManager.IdFolderRoot)
            {
                return(ReturnCodeFactory.Error("The root folder cannot be specified as an argument to this function."));
            }
            bool        FlagFound = false;
            int         count     = 0;
            Stack <int> stack     = new Stack <int>();

            void MarkNodeToBeDeleted(RadTreeNode node)
            {
                stack.Push(GetIdFolder(node));
                //Trace.WriteLine($"Push to stack >>> {node.FullPath} === {x}");
                foreach (var item in node.Nodes)
                {
                    MarkNodeToBeDeleted(item);
                }
            }

            void SearchNode(RadTreeNode node)
            {
                if (FlagFound)
                {
                    return;
                }
                //if (GetIdFolder(node) == IdFolder)
                if (node.FullPath == FolderPath)
                {
                    FlagFound = true;
                    MarkNodeToBeDeleted(node);
                }
                if (!FlagFound)
                {
                    foreach (var item in node.Nodes)
                    {
                        SearchNode(item);
                    }
                }
            }

            DataTable  table = GetTableFolders();
            FxTreeView form  = new FxTreeView();

            form.Visible = false;
            FillTreeView(form.TvFolders, table);

            foreach (var item in form.TvFolders.Nodes)
            {
                SearchNode(item);
            }

            using (SQLiteConnection connection = GetSqliteConnection())
                using (SQLiteCommand command = new SQLiteCommand(connection).ZzOpenConnection())
                    while (stack.Count > 0)
                    {
                        int x = stack.Pop();
                        command.Parameters.Clear();
                        command.ZzAdd("@IdFolder", x).ZzExecuteNonQuery(DbManager.SqlDeleteAllSettingsOfOneFolder);
                        if (stack.Count > 0)
                        {
                            command.ZzExecuteNonQuery(DbManager.SqlFolderDelete);
                        }
                        count++;
                    }

            code = FolderDelete(FolderPath, FolderPath);

            form.TvFolders.DataSource = null;
            table.Clear();
            form.TvFolders.Dispose();
            table.Dispose();
            form.Close();

            code.StringNote += $" Folders processed = {count}";
            return(code);
        }