/// <inheritDoc/>
        public void GetSpecificBibliography(Publication publication)
        {
            ConferenceArticle conferenceArticle = publication.ConferenceArticle;

            WriteLine("Zadejte název sborníku konference: " + conferenceArticle.BookTitle);
            WriteLine("Místo vydání: " + conferenceArticle.Address);
            WriteLine("Nakladatel: " + conferenceArticle.Publisher);
            WriteLine(conferenceArticle.FromPage == conferenceArticle.ToPage ?
                      (string.Format("Strana: {0}", conferenceArticle.FromPage)) :
                      (string.Format("Strany: {0} - {1}", conferenceArticle.FromPage, conferenceArticle.ToPage)));
            WriteLine(!string.IsNullOrEmpty(conferenceArticle.ISBN) ?
                      ("ISBN: " + conferenceArticle.ISBN) :
                      ("ISSN: " + conferenceArticle.ISSN));
        }
        /// <inheritDoc/>
        public void CreateSpecificBibliography(Publication publication, List <Author> authors)
        {
            ConferenceArticle conferenceArticle = new ConferenceArticle();

            WriteLine("Zadejte název sborníku konference:");
            conferenceArticle.BookTitle = ReadNonEmptyString("Název sborníku nesmí být prázdný.");
            WriteLine("Zadejte místo vydání:");
            conferenceArticle.Address = ReadNonEmptyString("Adresa nesmí být prázdná.");
            WriteLine("Zadejte nakladatele:");
            conferenceArticle.Publisher = ReadNonEmptyString("Název vydavatele nesmí být prázdný.");
            WriteLine("Citace od strany:");
            conferenceArticle.FromPage = ReadValidNumber("Zadejte číslo počáteční strany citace.");
            WriteLine("Citace do strany:");

            int toPage = ReadValidNumber("Zadejte číslo poslední strany citace.");

            while (toPage < conferenceArticle.FromPage)
            {
                WriteLine("Poslední číslo nesmí být menší než počáteční.");
                toPage = ReadValidNumber("Zadejte číslo poslední strany citace.");
            }
            conferenceArticle.ToPage = toPage;

            WriteLine("Zadejte ISBN nebo ponechte prázdný řádek pro zadání ISSN:");
            string isbn = ReadLine();

            if (!string.IsNullOrEmpty(isbn))
            {
                conferenceArticle.ISBN = isbn;
            }
            else
            {
                WriteLine("Zadejte ISSN:");
                conferenceArticle.ISSN = ReadNonEmptyString("ISSN nesmí být prázdné.");
            }

            // vytvoření záznamu z načtených informací
            model.CreatePublication(publication, authors, conferenceArticle);
        }
        /// <inheritDoc/>
        public List <string> ValidatePublicationTypeSpecificBibliography(
            Publication publication, List <Author> authors, out ASpecificPublication specificPublication)
        {
            List <string> errors = new List <string>();

            specificPublication = new ConferenceArticle();
            ConferenceArticle conferenceArticle = specificPublication as ConferenceArticle;

            if (string.IsNullOrWhiteSpace(bookTitleTextBox.Text))
            {
                errors.Add("Název sborníku nesmí být prázdný.");
            }
            else
            {
                conferenceArticle.BookTitle = bookTitleTextBox.Text;
            }

            if (string.IsNullOrWhiteSpace(addressTextBox.Text))
            {
                errors.Add("Místo vydání nesmí být prázdné.");
            }
            else
            {
                conferenceArticle.Address = addressTextBox.Text;
            }

            if (string.IsNullOrWhiteSpace(publisherTextBox.Text))
            {
                errors.Add("Jméno vydavatele nesmí být prázdné.");
            }
            else
            {
                conferenceArticle.Publisher = publisherTextBox.Text;
            }

            conferenceArticle.FromPage = pageNumberValidator.
                                         validateFromPageNumber(errors, fromPageNumericUpDown);
            conferenceArticle.ToPage = pageNumberValidator.
                                       validateToPageNumber(errors, toPageNumericUpDown, pageSingleRadioButton,
                                                            pageRangeRadioButton, conferenceArticle.FromPage);

            if (string.IsNullOrWhiteSpace(identificationTextBox.Text))
            {
                errors.Add("Identifikační číslo (ISBN/ISSN) nesmí být prázdné.");
            }
            else
            {
                if (isbnRadioButton.IsChecked == true)
                {
                    conferenceArticle.ISBN = identificationTextBox.Text;
                }
                else if (issnRadioButton.IsChecked == true)
                {
                    conferenceArticle.ISSN = identificationTextBox.Text;
                }
                else
                {
                    errors.Add("Musí být vybrán typ identifikačního čísla.");
                }
            }

            return(errors);
        }
        /// <inheritDoc/>
        public void UpdateSpecificBibliography(int publicationId, Publication publication, List <Author> authors)
        {
            ConferenceArticle conferenceArticle = new ConferenceArticle();

            WriteLine("Zadejte nový název sborníku konference:");
            string bookTitle = ReadLine().Trim();

            if (!string.IsNullOrEmpty(bookTitle))
            {
                conferenceArticle.BookTitle = bookTitle;
            }

            WriteLine("Zadejte nové místo vydání:");
            string address = ReadLine().Trim();

            if (!string.IsNullOrEmpty(address))
            {
                conferenceArticle.Address = address;
            }

            WriteLine("Zadejte nového nakladatele:");
            string publisher = ReadLine().Trim();

            if (!string.IsNullOrEmpty(publisher))
            {
                conferenceArticle.Publisher = publisher;
            }

            WriteLine("Nová počáteční strana citace:");
            int fromPage;

            if (int.TryParse(ReadLine(), out fromPage))
            {
                conferenceArticle.FromPage = fromPage;
            }

            WriteLine("Nová poslední strana citace:");
            int toPage;

            if (int.TryParse(ReadLine(), out toPage) && toPage >= conferenceArticle.FromPage)
            {
                conferenceArticle.ToPage = toPage;
            }

            WriteLine("Zadejte nové ISBN nebo ponechte prázdný řádek pro zadání ISSN:");
            string isbn = ReadLine();

            if (!string.IsNullOrEmpty(isbn))
            {
                conferenceArticle.ISBN = isbn;
            }
            else
            {
                WriteLine("Zadejte nové ISSN:");
                string issn = ReadLine();

                if (!string.IsNullOrEmpty(issn))
                {
                    conferenceArticle.ISSN = issn;
                }
            }

            model.UpdatePublication(publicationId, publication, authors, conferenceArticle);
        }