/// <summary>Called when [ok button clicked].</summary>
        /// <param name="sender">The source of the event</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        private void OnOKButton_Clicked(object sender, EventArgs e)
        {
            var coll = new BookDataCollection();

            BookListPathsProperties.AuthorsNameCurrent = lblAuthor.Text;
            var clsComb = new CombinePathsClass();

            var filePath = clsComb.CombineDirectoryPathWithFileName(BookListPathsProperties.PathAuthorsDirectory,
                                                                    BookListPathsProperties.AuthorsNameCurrent);

            var valid  = new ValidationClass();
            var msgBox = new MyMessageBoxClass();

            if (!valid.ValidateStringHasLength(filePath))
            {
                msgBox.Msg = "Unable to complete the operation.";
                msgBox.ShowErrorMessageBox();
                return;
            }

            BookListPathsProperties.PathOfCurrentWorkingFile = filePath;

            coll.ClearCollection();
            Close();
        }
        /// <summary>  Get the selected authors path to the file.</summary>
        private void GetUnformattedDataFrom()
        {
            var dirFileOp = new FileClass();

            var dirPath = BookListPathsProperties.PathAuthorsDirectory;

            Debug.Assert(dirPath != null, nameof(dirPath) + " != null");

            var cls = new CombinePathsClass();

            BookListPathsProperties.PathToCurrentAuthorsFile = cls.CombineDirectoryPathWithFileName(dirPath,
                                                                                                    BookListPathsProperties.AuthorsNameCurrent);

            this.GetAuthorsName(BookListPathsProperties.AuthorsNameCurrent);
        }
        /// <summary>
        ///     Called when [show all titles for author button clicked].
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        private void OnShowAllTitlesSingleAuthorButton_Clicked(object sender, EventArgs e)
        {
            this._msgBox.NameOfMethod = MethodBase.GetCurrentMethod().Name;

            var dirAuthors = BookListPathsProperties.PathAuthorsDirectory;

            var cls1     = new CombinePathsClass();
            var filePath =
                cls1.CombineDirectoryPathWithFileName(dirAuthors, BookListPathsProperties.CurrentWorkingFileName);

            var cls2 = new BookDataCollection();

            cls2.ClearCollection();

            var cls3 = new InputClass();

            cls3.ReadTitlesFromFileLoop(filePath);

            var cls4 = new AuthorOperationsClass();

            cls4.ShowAllBookTitlesBySingleAuthorLoop();

            this.lstTiltes.Items.Clear();
        }
        /// <summary>
        ///     The OnSaveRecordButton_Clicked.
        /// </summary>
        /// <param name="sender">
        ///     The source of the event. <see cref="Object" /> The source of the
        ///     event.
        /// </param>
        /// <param name="e">
        ///     The e <see cref="EventArgs" /> Instance containing the event data.
        /// </param>
        private void OnSaveRecordButton_Clicked(object sender, EventArgs e)
        {
            _msgBox.NameOfMethod = MethodBase.GetCurrentMethod().Name;

            var dirFileOp = new FileClass();

            var dirAuthors = BookListPathsProperties.PathAuthorsDirectory;

            var authorOp = new AuthorOperationsClass();

            if (!_valid.ValidateStringIsNotNull(dirAuthors))
            {
                return;
            }
            if (!_valid.ValidateStringHasLength(dirAuthors))
            {
                return;
            }
            if (!_valid.ValidateStringHasLength(txtAuthor.Text.Trim()))
            {
                return;
            }
            if (!_valid.ValidateDirectoryExists(dirAuthors))
            {
                return;
            }


            var fileName = authorOp.AddDashBetweenAuthorsFirstMiddleLastName(txtAuthor.Text);

            if (!_valid.ValidateStringHasLength(fileName))
            {
                return;
            }

            var cls      = new CombinePathsClass();
            var filePath = cls.CombineDirectoryPathWithFileName(dirAuthors, fileName);

            if (!_valid.ValidateStringHasLength(filePath))
            {
                return;
            }

            if (_valid.ValidateFileExists(filePath, false))
            {
                _msgBox.Msg = "This file all ready exists.";
                _msgBox.ShowInformationMessageBox();
                return;
            }

            if (dirFileOp.CreateNewFile(filePath))
            {
                _msgBox.Msg = "Author file created successfully.";
                _msgBox.ShowInformationMessageBox();
                BookListPathsProperties.AuthorsNameCurrent       = fileName;
                BookListPathsProperties.PathOfCurrentWorkingFile = filePath;

                AddNewAuthorFileNameToAuthorsList(fileName);

                return;
            }

            BookListPathsProperties.AuthorsNameCurrent       = string.Empty;
            BookListPathsProperties.PathOfCurrentWorkingFile = string.Empty;

            _msgBox.Msg = "Failed to create the file for this author.";
            _msgBox.ShowErrorMessageBox();
        }