Exemple #1
0
        private static void InputPublisherFields(BookItem book)
        {
            var publisherItem = new PublisherItem();

            Console.WriteLine("Введите имя издателя:");
            publisherItem.Name = ConsoleExtensions.ReadNotEmptyString();

            book.Publisher = publisherItem;
        }
        public AuthResult SignIn()
        {
            while (true)
            {
                PrintMainMenu();

                var choice = Console.ReadKey();
                switch (choice.Key)
                {
                case ConsoleKey.D1:
                {
                    Console.Clear();
                    Console.WriteLine("Форма входа в аккаунт");
                    Console.WriteLine("Введите логин:");
                    var login = ConsoleExtensions.ReadNotEmptyString();
                    Console.WriteLine("Введите пароль:");
                    var password = ConsoleExtensions.InputPassword();

                    var authResult = AuthService.SignIn(login, password);

                    if (!authResult.IsSuccess || authResult.Role == null)
                    {
                        Console.WriteLine("Такого аккаунта нет в системе");
                        Console.WriteLine();
                        break;
                    }

                    Console.WriteLine("\n\nВход успешно произведен\nНажмите любую клавишу для продолжения");
                    Console.ReadKey();
                    Console.Clear();


                    return(authResult);
                }

                case ConsoleKey.D2:
                {
                    Environment.Exit(0);
                    break;
                }

                default:
                {
                    Console.Clear();
                    break;
                }
                }
            }
        }
Exemple #3
0
        private static void InputAuthorFields(BookItem book)
        {
            var authorItem = new AuthorItem();

            Console.WriteLine("Введите имя автора:");
            authorItem.Name = ConsoleExtensions.ReadNotEmptyString();

            Console.WriteLine("Введите фамилию автора:");
            authorItem.Surname = ConsoleExtensions.ReadNotEmptyString();

            Console.WriteLine("Введите отчество автора:");
            authorItem.Patronymic = ConsoleExtensions.ReadNotEmptyString();

            book.Author = authorItem;
        }
        public void UsersManagement()
        {
            Console.Clear();

            var exitToken = true;

            while (exitToken)
            {
                PrintUserManagementMenu();

                var choice = Console.ReadKey();
                switch (choice.Key)
                {
                case ConsoleKey.D1:
                {
                    Console.Clear();

                    var users = BusinessService.GetUsersIncludeBooks();
                    foreach (var user in users)
                    {
                        Console.WriteLine($"Id: {user.Id}");
                        Console.WriteLine($"Логин: {user.Login}");
                        Console.WriteLine($"Роль: {user.Role.GetDescription()}");
                        Console.WriteLine($"Номер читательского билета: {user.LibraryCardNumber}");
                        if (user.LastTakenBooks != null && user.LastTakenBooks.Any())
                        {
                            Console.WriteLine($"Последние взятые книги: {user.LastTakenBooks.Select(w => w.Name).Aggregate((i, j) => i + ", " + j)}");
                        }

                        Console.WriteLine();
                    }

                    PrintPressAnyBottom();
                    Console.Clear();
                    break;
                }

                case ConsoleKey.D2:
                {
                    Console.Clear();

                    var users = BusinessService.GetUserListWithBooks();
                    foreach (var user in users)
                    {
                        Console.WriteLine($"Id: {user.Id}");
                        Console.WriteLine($"Логин: {user.Login}");
                        Console.WriteLine($"Роль: {user.Role.GetDescription()}");
                        Console.WriteLine($"Номер читательского билета: {user.LibraryCardNumber}");
                        if (user.LastTakenBooks != null && user.LastTakenBooks.Any())
                        {
                            Console.WriteLine($"Книги на руках: {user.LastTakenBooks?.Select(w => w.Name).Aggregate((i, j) => i + ", " + j)}");
                        }

                        Console.WriteLine();
                    }

                    PrintPressAnyBottom();
                    Console.Clear();
                    break;
                }

                case ConsoleKey.D3:
                {
                    Console.Clear();
                    Console.WriteLine("Создание новой учетной записи");

                    Console.WriteLine("Введите логин:");
                    var login = ConsoleExtensions.ReadNotEmptyString();;

                    Console.WriteLine("Введите пароль:");
                    var password = ConsoleExtensions.InputPassword();

                    Console.WriteLine("\nВведите уникальный 6-значный номер читательского билета или оставьте пустым для автоматической генерации");
                    var cardNumber = InputCardNumber();

                    Console.WriteLine("Тип записи: 0 - пользователь, 1 - администратор:");
                    var roleType = ConsoleExtensions.ReadRoleType();

                    var userItem = new UserItem
                    {
                        Login             = login,
                        LibraryCardNumber = cardNumber,
                        Password          = password,
                        Role = roleType
                    };

                    var result = BusinessService.CreateUser(userItem);


                    if (!result.IsSuccess)
                    {
                        foreach (var error in result.Errors)
                        {
                            Console.WriteLine(error.Message);
                        }

                        Console.WriteLine();
                    }
                    else
                    {
                        Console.WriteLine("\n\nСоздание прошло успешно\nНажмите любую клавишу для продолжения");
                    }
                    Console.ReadKey();
                    Console.Clear();

                    break;
                }

                case ConsoleKey.D4:
                {
                    Console.Clear();
                    Console.WriteLine("Редактирование существующей учетной записи");
                    Console.WriteLine($"Для выхода введите {Constants.OperationConstants.ReturnOperationId}");
                    Console.WriteLine("Выберите учетную запись:");

                    var selectedUserId = SelectUserFromList();
                    Console.Clear();
                    if (selectedUserId == Constants.OperationConstants.ReturnOperationId)
                    {
                        break;
                    }

                    Console.WriteLine("Введите новый логин:");
                    var login = ConsoleExtensions.ReadNotEmptyString();

                    Console.WriteLine("Введите новый пароль:");
                    var password = ConsoleExtensions.ReadNotEmptyString();

                    Console.WriteLine("Введите новый уникальный 6-значный номер читательского билета или оставьте пустым для автоматической генерации");
                    var cardNumber = InputCardNumber(selectedUserId);

                    Console.WriteLine("Новый тип записи: 0 - пользователь, 1 - администратор:");
                    var roleType = ConsoleExtensions.ReadRoleType();

                    var userItem = new UserItem
                    {
                        Id                = selectedUserId,
                        Login             = login,
                        LibraryCardNumber = cardNumber,
                        Password          = password,
                        Role              = roleType
                    };

                    var result = BusinessService.UpdateUser(userItem);

                    Console.Clear();
                    if (!result.IsSuccess)
                    {
                        foreach (var error in result.Errors)
                        {
                            Console.WriteLine(error.Message);
                        }

                        Console.WriteLine();
                    }

                    break;
                }

                case ConsoleKey.D5:
                {
                    Console.Clear();
                    Console.WriteLine("Удаление учетной записи");
                    Console.WriteLine($"Для выхода введите {Constants.OperationConstants.ReturnOperationId}");
                    Console.WriteLine("Выберите учетную запись:");

                    var selectedUserId = SelectUserFromList(CurrentUserId);
                    if (selectedUserId == Constants.OperationConstants.ReturnOperationId)
                    {
                        Console.Clear();
                        break;
                    }

                    BusinessService.DeleteUser(selectedUserId);

                    Console.Clear();
                    Console.WriteLine("Пользователь был успешно удален");

                    break;
                }

                case ConsoleKey.D6:
                {
                    Console.Clear();
                    exitToken = false;
                    break;
                }

                default:
                {
                    Console.Clear();
                    break;
                }
                }
            }
        }
Exemple #5
0
        public void BooksView()
        {
            Console.Clear();

            var exitToken = true;

            while (exitToken)
            {
                Console.Clear();
                PrintBooksViewMenu();

                var choice = Console.ReadKey();
                switch (choice.Key)
                {
                case ConsoleKey.D1:
                {
                    Console.Clear();
                    Console.WriteLine("Вывод списка книг");
                    var books = BusinessService.GetBooksWithEverything();
                    foreach (var book in books)
                    {
                        PrintBookInfo(book);
                    }

                    PrintPressAnyBottom();
                    break;
                }

                case ConsoleKey.D2:
                {
                    Console.Clear();
                    Console.WriteLine("Вывод списка книг в отфильтрованном по определенному полю виде");
                    PrintBookFieldSelection();

                    var selectedFilteringType = ConsoleExtensions.ReadInteger(Enum.GetValues(typeof(BookFilteringType)).Cast <BookFilteringType>().Cast <int>().ToList());
                    Console.Clear();
                    Console.WriteLine("Введите значение для фильтрации");

                    var filter = new BookFilter();
                    switch (selectedFilteringType)
                    {
                    case (int)BookFilteringType.ByName:
                    {
                        filter.Name = ConsoleExtensions.ReadNotEmptyString();
                        break;
                    }

                    case (int)BookFilteringType.ByRegNumber:
                    {
                        filter.RegNumber = ConsoleExtensions.ReadNotEmptyString();
                        break;
                    }

                    case (int)BookFilteringType.ByNumberOfPages:
                    {
                        filter.NumberOfPages = ConsoleExtensions.ReadInteger();
                        break;
                    }

                    case (int)BookFilteringType.ByPublicationYear:
                    {
                        filter.PublicationYear = ConsoleExtensions.ReadInteger();
                        break;
                    }

                    case (int)BookFilteringType.ByIsBookInLibrary:
                    {
                        Console.WriteLine("Введите либо {0}, либо {1}", Constants.Strings.Yes, Constants.Strings.No);
                        filter.IsBookInLibrary = ConsoleExtensions.ReadBoolean();
                        break;
                    }

                    case (int)BookFilteringType.ByPublisherName:
                    {
                        filter.PublisherName = ConsoleExtensions.ReadNotEmptyString();
                        break;
                    }

                    case (int)BookFilteringType.ByAuthorName:
                    {
                        filter.AuthorName = ConsoleExtensions.ReadNotEmptyString();
                        break;
                    }

                    case (int)BookFilteringType.ByLastUserName:
                    {
                        filter.LastUserName = ConsoleExtensions.ReadNotEmptyString();
                        break;
                    }
                    }

                    Console.Clear();
                    var books = BusinessService.GetFilteredBooks(filter);

                    foreach (var book in books)
                    {
                        PrintBookInfo(book);
                    }

                    PrintPressAnyBottom();
                    break;
                }

                case ConsoleKey.D3:
                {
                    Console.Clear();
                    Console.WriteLine("Вывод списка книг в отсортированном виде");
                    PrintBookFieldSelection();

                    var selectedOrderingType = ConsoleExtensions.ReadInteger(Enum.GetValues(typeof(BookFilteringType)).Cast <BookFilteringType>().Cast <int>().ToList());
                    Console.Clear();
                    Console.WriteLine("Вывести по возрастанию? (Да, Нет)");
                    var isAsc = ConsoleExtensions.ReadBoolean();

                    var books = BusinessService.GetSortedBooks((BookFilteringType)selectedOrderingType, isAsc);

                    Console.Clear();
                    ;                           foreach (var book in books)
                    {
                        PrintBookInfo(book);
                    }

                    PrintPressAnyBottom();
                    break;
                }

                case ConsoleKey.D4:
                {
                    Console.Clear();
                    Console.WriteLine("Вывод книг в алфавитном порядке, изданных после заданного года");
                    Console.WriteLine("Введите год:");

                    var selectedYear = ConsoleExtensions.ReadInteger();

                    var books = BusinessService.GetOrderedBooksAfterSelectedYear(selectedYear);
                    Console.Clear();
                    foreach (var book in books)
                    {
                        PrintBookInfo(book);
                    }

                    PrintPressAnyBottom();

                    break;
                }

                case ConsoleKey.D5:
                {
                    Console.Clear();
                    Console.WriteLine("Вывод книг находящихся в текущий момент у читателей");

                    var books = BusinessService.GetAlreadyTakenBooks();
                    foreach (var book in books)
                    {
                        PrintBookInfo(book);
                    }

                    PrintPressAnyBottom();
                    break;
                }

                case ConsoleKey.D6:
                {
                    Console.Clear();
                    exitToken = false;
                    break;
                }

                default:
                {
                    Console.Clear();
                    break;
                }
                }
            }
        }
Exemple #6
0
        public void FileManagement()
        {
            Console.Clear();

            var exitToken = true;

            while (exitToken)
            {
                Console.Clear();
                PrintFileManagementMenu();

                var choice = Console.ReadKey();

                switch (choice.Key)
                {
                case ConsoleKey.D1:
                {
                    Console.Clear();
                    Console.WriteLine("Создание файла");
                    Console.WriteLine("Введите название файла:");
                    var fileName = ConsoleExtensions.ReadNotEmptyString();

                    var result = FileService.CreateFile(fileName);

                    Console.WriteLine();
                    if (!result.IsSuccess)
                    {
                        foreach (var error in result.Errors)
                        {
                            Console.WriteLine(error.Message);
                        }
                    }
                    else
                    {
                        Console.WriteLine($"Файл данных \"{fileName}\" успешно создан");
                    }

                    PrintPressAnyBottom();
                    break;
                }

                case ConsoleKey.D2:
                {
                    Console.Clear();
                    Console.WriteLine("Список существующих файлов");

                    var fileInfos = FileService.GetCurrentFiles();

                    if (fileInfos == null || fileInfos.Count == 0)
                    {
                        Console.WriteLine("На текущий момент нет файлов с данными");
                    }
                    else
                    {
                        foreach (var(fileId, fileName) in fileInfos)
                        {
                            Console.WriteLine($"{fileId + 1}. {Path.GetFileName(fileName)}");
                        }
                    }

                    PrintPressAnyBottom();
                    break;
                }

                case ConsoleKey.D3:
                {
                    Console.Clear();
                    Console.WriteLine("Загрузка данных из существующего файла");
                    Console.WriteLine("Выберите номер файла");
                    Console.WriteLine($"Для выхода введите {Constants.OperationConstants.ReturnOperationId}");
                    Console.WriteLine("!!! Внимание, данное действие сотрет все несохраненные данные");
                    Console.WriteLine();

                    var fileInfos = FileService.GetCurrentFiles();

                    if (fileInfos == null || fileInfos.Count == 0)
                    {
                        Console.WriteLine("На текущий момент нет файлов с данными");
                    }
                    else
                    {
                        foreach (var(fileId, fileName) in fileInfos)
                        {
                            Console.WriteLine($"{fileId}. {Path.GetFileName(fileName)}");
                        }

                        var fileSelection = ConsoleExtensions.ReadInteger(new List <int> {
                                Constants.OperationConstants.ReturnOperationId, fileInfos.Count - 1
                            });

                        if (fileSelection == Constants.OperationConstants.ReturnOperationId)
                        {
                            break;
                        }

                        var result = FileService.ReadFile(fileInfos[fileSelection]);

                        if (!result.IsSuccess)
                        {
                            foreach (var error in result.Errors)
                            {
                                Console.WriteLine(error.Message);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Операция прошла успешно");
                        }
                    }

                    PrintPressAnyBottom();
                    break;
                }

                case ConsoleKey.D4:
                {
                    Console.Clear();
                    Console.WriteLine("Удаление файла");
                    Console.WriteLine("Выберите номер файла");
                    Console.WriteLine($"Для выхода введите {Constants.OperationConstants.ReturnOperationId}");
                    Console.WriteLine();
                    var fileInfos = FileService.GetCurrentFiles();

                    if (fileInfos == null || fileInfos.Count == 0)
                    {
                        Console.WriteLine("На текущий момент нет файлов с данными");
                    }
                    else
                    {
                        foreach (var(fileId, fileName) in fileInfos)
                        {
                            Console.WriteLine($"{fileId}. {Path.GetFileName(fileName)}");
                        }

                        var fileSelection = ConsoleExtensions.ReadInteger(new List <int> {
                                Constants.OperationConstants.ReturnOperationId, fileInfos.Count - 1
                            });

                        if (fileSelection == Constants.OperationConstants.ReturnOperationId)
                        {
                            break;
                        }

                        var result = FileService.DeleteFile(fileInfos[fileSelection]);

                        if (!result.IsSuccess)
                        {
                            foreach (var error in result.Errors)
                            {
                                Console.WriteLine(error.Message);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Операция прошла успешно");
                        }
                    }

                    PrintPressAnyBottom();
                    break;
                }

                case ConsoleKey.D5:
                {
                    Console.Clear();
                    exitToken = false;
                    break;
                }

                default:
                {
                    Console.Clear();
                    break;
                }
                }
            }
        }
        private BookItem CreateOrUpdateBook()
        {
            var bookItem = new BookItem();

            Console.WriteLine("Введите название книги:");
            bookItem.Name = ConsoleExtensions.ReadNotEmptyString();

            Console.WriteLine("Введите количество страниц:");
            bookItem.NumberOfPages = ConsoleExtensions.ReadInteger();

            Console.WriteLine("Введите год публикации:");
            bookItem.PublicationYear = ConsoleExtensions.ReadYear();

            Console.WriteLine("Введите регистрационный номер:");
            bookItem.RegNumber = ConsoleExtensions.ReadNotEmptyString();

            Console.WriteLine();
            Console.WriteLine($"{Constants.OperationConstants.AddNewSubEntityOperationId}. Добавить нового автора:");
            Console.WriteLine($"{Constants.OperationConstants.SelectSubEntityOperationId}. Выбрать из существующих:");
            var authorOperationChoice = ConsoleExtensions.ReadInteger(new List <int> {
                Constants.OperationConstants.AddNewSubEntityOperationId, Constants.OperationConstants.SelectSubEntityOperationId
            });

            switch (authorOperationChoice)
            {
            case Constants.OperationConstants.SelectSubEntityOperationId:
            {
                Console.WriteLine("Существующие авторы:");
                Console.WriteLine($"Нажмите \"{Constants.OperationConstants.ReturnOperationId}\" для добавления нового автора");
                var selectedAuthorId = SelectAuthorFromList();

                if (selectedAuthorId == Constants.OperationConstants.ReturnOperationId)
                {
                    InputAuthorFields(bookItem);
                }
                else
                {
                    bookItem.AuthorId = selectedAuthorId;
                }

                break;
            }

            case Constants.OperationConstants.AddNewSubEntityOperationId:
            {
                InputAuthorFields(bookItem);
                break;
            }
            }

            Console.WriteLine();
            Console.WriteLine($"{Constants.OperationConstants.AddNewSubEntityOperationId}. Добавить нового издателя:");
            Console.WriteLine($"{Constants.OperationConstants.SelectSubEntityOperationId}. Выбрать из существующих:");
            var publisherOperationChoice = ConsoleExtensions.ReadInteger(new List <int> {
                Constants.OperationConstants.AddNewSubEntityOperationId, Constants.OperationConstants.SelectSubEntityOperationId
            });

            switch (publisherOperationChoice)
            {
            case Constants.OperationConstants.SelectSubEntityOperationId:
            {
                Console.WriteLine("Существующие издатели:");
                Console.WriteLine($"Нажмите \"{Constants.OperationConstants.ReturnOperationId}\" для добавления нового издателя");
                var selectedPublisherId = SelectPublisherFromList();

                if (selectedPublisherId == Constants.OperationConstants.ReturnOperationId)
                {
                    InputPublisherFields(bookItem);
                }
                else
                {
                    bookItem.PublisherId = selectedPublisherId;
                }

                break;
            }

            case Constants.OperationConstants.AddNewSubEntityOperationId:
            {
                InputPublisherFields(bookItem);
                break;
            }
            }

            bookItem.IsBookInLibrary = false;

            return(bookItem);
        }