/// <summary>
        /// Search and buy a book by category listing
        /// </summary>
        /// <param name="user">Takes a user to be connected with the purchase</param>
        internal static void BuyByChooseByCategory(User user)
        {
            var categories     = FindAndListCategories();
            var chosenCategory = ChooseCategoryToView(categories);
            var books          = api.GetBooksInCategory(chosenCategory.Id);

            if (books.Count == 0)
            {
                SharedError.NothingFound();
            }
            else
            {
                var book = ListAndChooseBook(books);
                if (book != null)
                {
                    ShowInfoAboutBook(user, book);
                }
            }
        }
        /// <summary>
        /// Delete category (if empty)
        /// </summary>
        /// <param name="admin">Takes a user with admin priviliges</param>
        private static void DeleteCategory(User admin)
        {
            var continueLoop = true;

            do
            {
                Console.Clear();
                AdminView.DeleteCategory();
                var categories = api.GetCategories();
                SharedView.ListCategories(categories);
                var input = SharedController.GetAndValidateInput();
                if (input.validatedInput > 0 &&
                    input.validatedInput <= categories.Count)
                {
                    if (api.DeleteCategory(
                            admin.Id,
                            categories[input.validatedInput - 1].Id))
                    {
                        SharedError.Success();
                    }
                    else
                    {
                        var books = api.GetBooksInCategory(categories[input.validatedInput - 1].Id);
                        SharedError.BooksStillInCategory(books.Count);
                    }
                }
                else
                {
                    if (input.validatedInput == 0 &&
                        input.menuInput.ToLower() == "x")
                    {
                        continueLoop = false;
                    }
                    else
                    {
                        SharedError.PrintWrongInput();
                    }
                }
            } while (continueLoop);
        }