Ejemplo n.º 1
0
        private void AddReaderInBlackList_Click(object sender, RoutedEventArgs e)
        {
            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                Order order = dbContainer.Orders.Find(_selectedOrder.Id);
                User  user  = dbContainer.Users.Find(_currentUser.Id);

                if (order != null)
                {
                    bool blocked = order.Reader.Blocked; // Сохраняем старое значение поля Blocked у читателя
                    order.Reader.Blocked = true;

                    EntityRecord record = dbContainer.EntityRecords.First(c => c.Reader.Id == order.Reader.Id); // Находим запись нужного читателя для редактирования в таблице EntityRecords

                    // Меняем значения у объекта типа EntityRecord
                    record.ModifiedBy = user;
                    record.State      = "Изменён";

                    CreateEntityHistory("Заблокирован", blocked ? "Да" : "Нет", order.Reader.Blocked ? "Да" : "Нет", record);

                    dbContainer.SaveChanges();
                    MessageBox.Show($"Читатель: {order.Reader.Name}. Указанный читатель успешно отправлен в очередь на добавление в чёрный список.");
                }
            }

            Close();
        }
Ejemplo n.º 2
0
        private readonly Book _selectedBook; // Выбранная книга в BookDataGrid для редактирования

        public BookWindow(bool isAddMode, Book book, User user)
        {
            InitializeComponent();
            _isAddMode    = isAddMode;
            _selectedBook = book;
            _currentUser  = user;

            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                BookCatalogComboBox.ItemsSource = dbContainer.Catalogs.ToList();
                BookGenreComboBox.ItemsSource   = dbContainer.Genres.ToList();

                if (!_isAddMode) // Режим редактирования существующей книги
                {
                    AddUpdateButton.Content = "Редактировать";

                    book = dbContainer.Books.Find(book.Id);

                    if (book != null)
                    {
                        BookNameTextBox.Text             = book.Name;
                        BookGenreComboBox.SelectedItem   = book.Genre;
                        BookAuthorTextBox.Text           = book.Author;
                        BookYearMaskedTextBox.Text       = book.Year.ToString();
                        BookCatalogComboBox.SelectedItem = book.Catalog;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private readonly Reader _selectedReader; // Выбранный читатель в ReaderDataGrid для редактирования

        public ReaderWindow(bool isAddMode, Reader reader, User user)
        {
            InitializeComponent();
            _isAddMode      = isAddMode;
            _selectedReader = reader;
            _currentUser    = user;

            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                if (!_isAddMode) // Режим редактирования существующего читателя
                {
                    AddUpdateButton.Content = "Редактировать";

                    BlockedReaderCheckBox.IsEnabled = true;
                    RemovedReaderCheckBox.IsEnabled = true;

                    reader = dbContainer.Readers.Find(reader.Id);

                    if (reader != null)
                    {
                        ReaderNameTextBox.Text          = reader.Name;
                        BlockedReaderCheckBox.IsChecked = reader.Blocked;
                        RemovedReaderCheckBox.IsChecked = reader.Removed;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        private readonly User _selectedReader; // Выбранный пользователь системы в UserDataGrid для редактирования

        public UserWindow(bool isAddMode, User user, User currentUser)
        {
            InitializeComponent();
            _isAddMode      = isAddMode;
            _selectedReader = user;

            if (currentUser.UserRole == "Администратор")
            {
                UserUserRoleComboBox.Items.Remove(UserUserRoleComboBox.Items[1]);
            }

            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                if (!_isAddMode) // Режим редактирования существующего пользователя системы
                {
                    AddUpdateButton.Content = "Редактировать";

                    user = dbContainer.Users.Find(user.Id);

                    if (user != null)
                    {
                        UserNameTextBox.Text      = user.Name;
                        UserUserRoleComboBox.Text = user.UserRole;
                        UserLoginTextBox.Text     = user.Login;
                        UserPasswordTextBox.Text  = user.Password;
                    }
                }
            }
        }
Ejemplo n.º 5
0
        private readonly User _currentUser; // Текущий пользователь системы

        public OrderWindow(User user)
        {
            InitializeComponent();

            _currentUser = user;

            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                ReaderNameComboBox.ItemsSource = dbContainer.Readers.ToList();
                BookDataGrid.ItemsSource       = dbContainer.Books.Include(c => c.Catalog).Include(c => c.Genre).ToList();
            }
        }
Ejemplo n.º 6
0
 private void GenreFilterTextChanged(object sender, TextChangedEventArgs e) // Изменение текста в фильтре при поиске книг по жанру
 {
     using (LibraryModelContainer dbContainer = new LibraryModelContainer())
     {
         if (GenreTextBox.Text == "") // Если TextBox не заполнен символами
         {
             BookDataGrid.ItemsSource = dbContainer.Books.Include(c => c.Catalog).Include(c => c.Genre).ToList();
         }
         else // Если TextBox заполнен символами
         {
             IQueryable <Book> result = dbContainer.Books.Include(c => c.Catalog).Include(c => c.Genre).Where(c => c.Genre.Name.Contains(GenreTextBox.Text)); // LINQ. Like SQL запрос в БД по автору книги
             BookDataGrid.ItemsSource = result.ToList();
         }
     }
 }
Ejemplo n.º 7
0
        public OrderDetailWindow(Order order, User user)
        {
            InitializeComponent();

            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                Order findOrder = dbContainer.Orders.Find(order.Id);

                if (findOrder != null)
                {
                    _selectedOrder = findOrder;
                    _currentUser   = user;
                }
            }
        }
Ejemplo n.º 8
0
 private void AddBookToTheBasket_Click(object sender, RoutedEventArgs e) // Добавление книг в корзину заказа
 {
     using (LibraryModelContainer dbContainer = new LibraryModelContainer())
     {
         Book book = dbContainer.Books.Include(c => c.Catalog).Include(c => c.Genre).FirstOrDefault(c => c.Id == ((Book)BookDataGrid.SelectedItem).Id);
         if (book != null)                       // Если в DataGrid книг выбрана строка
         {
             BasketBookDataGrid.Items.Add(book); // Добавляем выбранную книгу в корзину
         }
         else // Если в DataGrid книг ничего не выбрано
         {
             MessageBox.Show("В таблице книг не выбрана книга.");
         }
     }
 }
        private void Login_Click(object sender, RoutedEventArgs e) // Кнопка входа в систему "БИБЛИОТЕКА"
        {
            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                User user = dbContainer.Users.FirstOrDefault(c => c.Login == LoginTextBox.Text && c.Password == PasswordTextBox.Password);

                if (user == null)
                {
                    MessageBox.Show("Неправильные данные для входа в систему. Пожалуйста, попробуйте снова.");
                }
                else
                {
                    CurrentUser  = user;
                    DialogResult = true;
                }
            }
        }
Ejemplo n.º 10
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                Order findOrder = dbContainer.Orders.Find(_selectedOrder.Id);

                if (findOrder != null)
                {
                    DateTime now = DateTime.Now;

                    if (findOrder.DeadlineDate.CompareTo(now) < 0) // Если дата закрытия у заказа наступило раньше сегодняшнего дня
                    {
                        BlackListButton.IsEnabled = true;
                    }
                }
            }
        }
Ejemplo n.º 11
0
        private void CreateEntityHistory(string fieldName, string oldValue, string newValue, EntityRecord record) // Метод создания историй изменений записи каталога для таблицы EntityHistory
        {
            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                User         user       = dbContainer.Users.Find(_currentUser.Id);
                EntityRecord findRecord = dbContainer.EntityRecords.Find(record.Id);

                EntityHistory history = new EntityHistory
                {
                    Id           = Guid.NewGuid(),
                    FieldName    = fieldName,
                    OldValue     = oldValue,
                    NewValue     = newValue,
                    Date         = DateTime.Now,
                    User         = user,
                    EntityRecord = findRecord
                };
                dbContainer.EntityHistories.Add(history);
                dbContainer.SaveChanges();
            }
        }
Ejemplo n.º 12
0
        private readonly Catalog _selectedCatalog; // Выбранный каталог в CatalogDataGrid для редактирования

        public CatalogWindow(bool isAddMode, Catalog catalog, User user)
        {
            InitializeComponent();
            _isAddMode       = isAddMode;
            _selectedCatalog = catalog;
            _currentUser     = user;

            using (LibraryModelContainer dbContainer = new LibraryModelContainer())
            {
                if (!_isAddMode) // Режим редактирования существующего каталога
                {
                    AddUpdateButton.Content = "Редактировать";

                    catalog = dbContainer.Catalogs.Find(catalog.Id);

                    if (catalog != null)
                    {
                        NameCatalogTextBox.Text        = catalog.Name;
                        DescriptionCatalogTextBox.Text = catalog.Description;
                    }
                }
            }
        }
Ejemplo n.º 13
0
        private void AddUpdateRecord_Click(object sender, RoutedEventArgs e)
        {
            if (NameCatalogTextBox.Text != "" && NameCatalogTextBox.Text.Length <= 50 &&
                DescriptionCatalogTextBox.Text != "" && DescriptionCatalogTextBox.Text.Length <= 150) // Если в окне заполнены все поля и их длины <= заявленного значения
            {
                using (LibraryModelContainer dbContainer = new LibraryModelContainer())
                {
                    Entity entity = dbContainer.Entities.First(c => c.Name == "Каталог");
                    User   user   = dbContainer.Users.Find(_currentUser.Id);

                    if (_isAddMode) // Режим добавления записи
                    {
                        // Создание каталога для таблицы Catalogs
                        Catalog catalog = new Catalog
                        {
                            Id          = Guid.NewGuid(),
                            Name        = NameCatalogTextBox.Text,
                            Description = DescriptionCatalogTextBox.Text
                        };
                        dbContainer.Catalogs.Add(catalog);

                        // Создание записи для таблицы EntityRecords
                        EntityRecord record = new EntityRecord
                        {
                            Id         = Guid.NewGuid(),
                            Entity     = entity,
                            Name       = catalog.Name,
                            State      = "Добавлен",
                            CreatedBy  = user,
                            ModifiedBy = null,
                            Catalog    = catalog
                        };
                        dbContainer.EntityRecords.Add(record);

                        // Создание коллекции историй изменений записи каталога для таблицы EntityHistories
                        IList <EntityHistory> historyRecordList = new List <EntityHistory>
                        {
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Название",
                                OldValue     = null,
                                NewValue     = catalog.Name,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Описание",
                                OldValue     = null,
                                NewValue     = catalog.Description,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            }
                        };
                        dbContainer.EntityHistories.AddRange(historyRecordList);

                        dbContainer.SaveChanges();
                        MessageBox.Show("Новый каталог успешно добавлен в систему.");
                    }
                    else // Режим редактирования записи
                    {
                        Catalog oldCatalog = dbContainer.Catalogs.Find(_selectedCatalog.Id);

                        if (oldCatalog != null)
                        {
                            // Сохраняем старое значения читателя
                            string name        = oldCatalog.Name;
                            string description = oldCatalog.Description;

                            oldCatalog.Name        = NameCatalogTextBox.Text;
                            oldCatalog.Description = DescriptionCatalogTextBox.Text;

                            // Если пользователь решил не изменять информацию о выбранном каталоге в таблице CatalogDataGrid и нажал кнопку "Редактировать"
                            if (name == oldCatalog.Name && description == oldCatalog.Description)
                            {
                                MessageBox.Show("Информация о выбранном каталоге не изменилась.");
                            }
                            else
                            {
                                EntityRecord record = dbContainer.EntityRecords.First(c => c.Catalog.Id == oldCatalog.Id); // Находим запись нужного каталога для редактирования в таблице EntityRecords

                                // Меняем значения у объекта типа EntityRecord
                                record.ModifiedBy = user;
                                record.State      = "Изменён";

                                if (name != oldCatalog.Name) // Если изменилось название у каталога
                                {
                                    record.Name = oldCatalog.Name;

                                    CreateEntityHistory("Название", name, oldCatalog.Name, record);
                                }

                                if (description != oldCatalog.Description) // Если изменилось описание у каталога
                                {
                                    CreateEntityHistory("Описание", description, oldCatalog.Description, record);
                                }

                                dbContainer.SaveChanges();
                                MessageBox.Show("Информация о выбранном каталоге успешно изменена в системе.");
                            }
                        }
                    }
                }

                Close();
            }
            else if (NameCatalogTextBox.Text.Length > 50) // Если поле название имеет длину текста > 50 символов
            {
                MessageBox.Show("Поле название. Длина текста не должна превышать больше 50 символов.");
            }
            else if (DescriptionCatalogTextBox.Text.Length > 150) // Если поле описание имеет длину текста > 150 символов
            {
                MessageBox.Show("Поле описание. Длина текста не должна превышать больше 150 символов.");
            }
            else if (NameCatalogTextBox.Text == "" && DescriptionCatalogTextBox.Text == "") // Если в окне все поля не заполнены
            {
                MessageBox.Show("Заполните поля для каталога: Название, Описание.");
            }
            else // Проверяем на пустоту заполнения некоторых полей в окне
            {
                if (NameCatalogTextBox.Text == "")
                {
                    MessageBox.Show("Заполните поле для каталога: Название.");
                }
                else if (DescriptionCatalogTextBox.Text == "")
                {
                    MessageBox.Show("Заполните поле для каталога: Описание.");
                }
            }
        }
Ejemplo n.º 14
0
        private void AddUpdateRecord_Click(object sender, RoutedEventArgs e)
        {
            if (ReaderNameTextBox.Text != "" && ReaderNameTextBox.Text.Length <= 50) // Если заполнено поле ФИО и длина текста <= 50 символов
            {
                using (LibraryModelContainer dbContainer = new LibraryModelContainer())
                {
                    Entity entity = dbContainer.Entities.First(c => c.Name == "Читатель");
                    User   user   = dbContainer.Users.Find(_currentUser.Id);

                    if (_isAddMode) // Режим добавления записи
                    {
                        // Создание читателя для таблицы Readers
                        Reader reader = new Reader
                        {
                            Id      = Guid.NewGuid(),
                            Name    = ReaderNameTextBox.Text,
                            Status  = "Активен",
                            Blocked = false,
                            Removed = false
                        };
                        dbContainer.Readers.Add(reader);

                        // Создание записи для таблицы EntityRecords
                        EntityRecord record = new EntityRecord
                        {
                            Id         = Guid.NewGuid(),
                            Entity     = entity,
                            Name       = reader.Name,
                            State      = "Добавлен",
                            CreatedBy  = user,
                            ModifiedBy = null,
                            Reader     = reader
                        };
                        dbContainer.EntityRecords.Add(record);

                        // Создание коллекции историй изменений записи читателя для таблицы EntityHistories
                        IList <EntityHistory> historyRecordList = new List <EntityHistory>
                        {
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "ФИО",
                                OldValue     = null,
                                NewValue     = reader.Name,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Статус",
                                OldValue     = null,
                                NewValue     = reader.Status,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Заблокирован",
                                OldValue     = null,
                                NewValue     = reader.Blocked ? "Да" : "Нет",
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Удалён",
                                OldValue     = null,
                                NewValue     = reader.Removed ? "Да" : "Нет",
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            }
                        };
                        dbContainer.EntityHistories.AddRange(historyRecordList);

                        dbContainer.SaveChanges();
                        MessageBox.Show("Новый читатель успешно добавлен в систему.");
                    }
                    else // Режим редактирования записи
                    {
                        Reader oldReader = dbContainer.Readers.Find(_selectedReader.Id);

                        if (oldReader != null)
                        {
                            // Сохраняем старые значения читателя
                            string name    = oldReader.Name;
                            bool   blocked = oldReader.Blocked;
                            bool   removed = oldReader.Removed;

                            oldReader.Name    = ReaderNameTextBox.Text;
                            oldReader.Blocked = BlockedReaderCheckBox.IsChecked == true;
                            oldReader.Removed = RemovedReaderCheckBox.IsChecked == true;

                            dbContainer.SaveChanges();

                            // Если пользователь решил не изменять информацию о выбранном читателе в таблице ReaderDataGrid и нажал кнопку "Редактировать"
                            if (name == oldReader.Name && blocked == oldReader.Blocked && removed == oldReader.Removed)
                            {
                                MessageBox.Show("Информация о выбранном читателе не изменилась.");
                            }
                            else
                            {
                                EntityRecord record = dbContainer.EntityRecords.First(c => c.Reader.Id == oldReader.Id); // Находим запись нужного читателя для редактирования в таблице EntityRecords

                                // Меняем значения у объекта типа EntityRecord
                                record.ModifiedBy = user;
                                record.State      = "Изменён";

                                if (name != oldReader.Name) // Если изменилось ФИО у читателя
                                {
                                    record.Name = oldReader.Name;

                                    CreateEntityHistory("Название", name, oldReader.Name, record);
                                }

                                if (blocked != oldReader.Blocked) // Если изменилось значение поля "Заблокирован" у читателя
                                {
                                    CreateEntityHistory("Заблокирован", blocked ? "Да" : "Нет", oldReader.Blocked ? "Да" : "Нет", record);
                                }

                                if (removed != oldReader.Removed) // Если изменилось значение поля "Удалён" у читателя
                                {
                                    CreateEntityHistory("Удалён", removed ? "Да" : "Нет", oldReader.Removed ? "Да" : "Нет", record);
                                }

                                dbContainer.SaveChanges();
                                MessageBox.Show("Информация о выбранном читателе успешно изменена в системе.");
                            }
                        }
                    }
                }

                Close();
            }
            else if (ReaderNameTextBox.Text.Length > 50)
            {
                MessageBox.Show("Поле ФИО. Длина текста не должна превышать больше 50 символов.");
            }
            else // Если поле ФИО пустое
            {
                MessageBox.Show("Заполните поле для читателя: ФИО.");
            }
        }
Ejemplo n.º 15
0
        private void AddUpdateRecord_Click(object sender, RoutedEventArgs e)
        {
            if (BookNameTextBox.Text != "" && BookNameTextBox.Text.Length <= 50 && BookGenreComboBox.SelectedItem != null &&
                BookAuthorTextBox.Text != "" && BookAuthorTextBox.Text.Length <= 50 && BookYearMaskedTextBox.IsMaskCompleted)    // Если в окне заполнены все поля и их длины <= заявленного значения
            {
                using (LibraryModelContainer dbContainer = new LibraryModelContainer())
                {
                    Entity entity = dbContainer.Entities.First(c => c.Name == "Книга");
                    User   user   = dbContainer.Users.Find(_currentUser.Id);

                    if (_isAddMode) // Режим добавления записи
                    {
                        Catalog catalog = dbContainer.Catalogs.Find(((Catalog)BookCatalogComboBox.SelectedItem)?.Id);
                        Genre   genre   = dbContainer.Genres.Find(((Genre)BookGenreComboBox.SelectedItem)?.Id);

                        // Создание книги для таблицы Catalogs
                        Book book = new Book
                        {
                            Id      = Guid.NewGuid(),
                            Name    = BookAuthorTextBox.Text,
                            Author  = BookAuthorTextBox.Text,
                            Year    = Convert.ToInt16(BookYearMaskedTextBox.Text),
                            Genre   = genre,
                            Catalog = catalog
                        };
                        dbContainer.Books.Add(book);

                        // Создание записи для таблицы EntityRecords
                        EntityRecord record = new EntityRecord
                        {
                            Id         = Guid.NewGuid(),
                            Entity     = entity,
                            Name       = book.Name,
                            State      = "Добавлен",
                            CreatedBy  = user,
                            ModifiedBy = null,
                            Book       = book
                        };
                        dbContainer.EntityRecords.Add(record);

                        // Создание коллекции историй изменений записи книги для таблицы EntityHistories
                        IList <EntityHistory> historyRecordList = new List <EntityHistory>
                        {
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Название",
                                OldValue     = null,
                                NewValue     = book.Name,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Жанр",
                                OldValue     = null,
                                NewValue     = book.Genre.Name,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Автор",
                                OldValue     = null,
                                NewValue     = book.Author,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Год издания",
                                OldValue     = null,
                                NewValue     = book.Year.ToString(),
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Каталог",
                                OldValue     = null,
                                NewValue     = book.Catalog?.Name,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            }
                        };
                        dbContainer.EntityHistories.AddRange(historyRecordList);

                        dbContainer.SaveChanges();
                        MessageBox.Show("Новая книга успешно добавлена в систему.");
                    }
                    else // Режим редактирования записи
                    {
                        Book oldBook = dbContainer.Books.Find(_selectedBook.Id);

                        if (oldBook != null)
                        {
                            // Сохраняем старое значения читателя
                            string name    = oldBook.Name;
                            string genre   = oldBook.Genre?.Name;
                            string author  = oldBook.Author;
                            short  year    = oldBook.Year;
                            string catalog = oldBook.Catalog?.Name;

                            oldBook.Name    = BookNameTextBox.Text;
                            oldBook.Genre   = dbContainer.Genres.Find(((Genre)BookGenreComboBox.SelectedItem)?.Id);
                            oldBook.Author  = BookAuthorTextBox.Text;
                            oldBook.Year    = Convert.ToInt16(BookYearMaskedTextBox.Text);
                            oldBook.Catalog = dbContainer.Catalogs.Find(((Catalog)BookCatalogComboBox.SelectedItem)?.Id);

                            // Если пользователь решил не изменять информацию о выбранной книге в таблице BookDataGrid и нажал кнопку "Редактировать"
                            if (name == oldBook.Name && genre == oldBook.Genre?.Name && author == oldBook.Author &&
                                year == oldBook.Year && catalog == oldBook.Catalog?.Name)
                            {
                                MessageBox.Show("Информация о выбранной книге не изменилась.");
                            }
                            else
                            {
                                EntityRecord record = dbContainer.EntityRecords.First(c => c.Book.Id == oldBook.Id); // Находим запись нужной книги для редактирования в таблице EntityRecords

                                // Меняем значения у объекта типа EntityRecord
                                record.ModifiedBy = user;
                                record.State      = "Изменён";

                                if (name != oldBook.Name) // Если изменилось название у книги
                                {
                                    record.Name = oldBook.Name;

                                    CreateEntityHistory("Название", name, oldBook.Name, record);
                                }

                                if (genre != oldBook.Genre?.Name) // Если изменился жанр у книги
                                {
                                    CreateEntityHistory("Жанр", genre, oldBook.Genre?.Name, record);
                                }

                                if (author != oldBook.Author) // Если изменился автор у книги
                                {
                                    CreateEntityHistory("Автор", author, oldBook.Author, record);
                                }

                                if (year != oldBook.Year) // Если изменился год издания у книги
                                {
                                    CreateEntityHistory("Год издания", year.ToString(), oldBook.Year.ToString(), record);
                                }

                                if (catalog != oldBook.Catalog?.Name) // Если изменился каталог у книги
                                {
                                    CreateEntityHistory("Каталог", catalog, oldBook.Catalog?.Name, record);
                                }

                                dbContainer.SaveChanges();
                                MessageBox.Show("Информация о выбранной книге успешно изменена.");
                            }
                        }
                    }
                }

                Close();
            }
            else if (BookNameTextBox.Text.Length > 50) // Если поле название имеет длину текста > 50 символов
            {
                MessageBox.Show("Поле название. Длина текста не должна превышать больше 50 символов.");
            }
            else if (BookAuthorTextBox.Text.Length > 50) // Если поле автор имеет длину текста > 50 символов
            {
                MessageBox.Show("Поле автор. Длина текста не должна превышать больше 50 символов.");
            }
            else if (BookNameTextBox.Text == "" && BookGenreComboBox.SelectedItem == null &&
                     BookAuthorTextBox.Text == "" && !BookYearMaskedTextBox.IsMaskCompleted) // Если в окне все поля не заполнены
            {
                MessageBox.Show("Заполните поля для книги: Название, Жанр, Автор, Год издания, Каталог.");
            }
            else // Проверяем на пустоту заполнения некоторых полей в окне
            {
                if (BookNameTextBox.Text == "")
                {
                    MessageBox.Show("Заполните поле для книги: Название.");
                }
                else if (BookGenreComboBox.SelectedItem == null)
                {
                    MessageBox.Show("Заполните поле для книги: Жанр.");
                }
                else if (BookAuthorTextBox.Text == "")
                {
                    MessageBox.Show("Заполните поле для книги: Автор.");
                }
                else if (!BookYearMaskedTextBox.IsMaskCompleted)
                {
                    MessageBox.Show("Заполните поле для книги: Год издания.");
                }
                else if (BookCatalogComboBox.SelectedItem == null)
                {
                    MessageBox.Show("Заполните поле для книги: Каталог.");
                }
            }
        }
Ejemplo n.º 16
0
        private void PackageOrder_Click(object sender, RoutedEventArgs e)                                                         // Добавить оформленный заказ
        {
            if (ReaderNameComboBox.SelectedItem != null && DeadlineDateOrder.Value != null && BasketBookDataGrid.Items.Count > 0) // Если выбран читатель, указана дата закрытия и таблица "Корзина выбранных книг" непустая
            {
                if (((Reader)ReaderNameComboBox.SelectedItem).Blocked || ((Reader)ReaderNameComboBox.SelectedItem).Status == "Заблокирован")
                {
                    MessageBox.Show($"Читатель: {((Reader)ReaderNameComboBox.SelectedItem).Name}. Выбранный читатель находится в чёрном списке.");
                }
                else if (((Reader)ReaderNameComboBox.SelectedItem).Removed)
                {
                    MessageBox.Show($"Читатель: {((Reader)ReaderNameComboBox.SelectedItem).Name}. Выбранный читатель находится в очереди на удаление из системы.");
                }
                else if (DeadlineDateOrder.Value.Value < DateTime.Now)
                {
                    MessageBox.Show("Значение даты закрытия нового заказа не может быть меньше сегодняшнего дня.");
                }
                else
                {
                    using (LibraryModelContainer dbContainer = new LibraryModelContainer())
                    {
                        Reader reader = dbContainer.Readers.Find(((Reader)ReaderNameComboBox.SelectedItem)?.Id);
                        Entity entity = dbContainer.Entities.First(c => c.Name == "Заказ");
                        User   user   = dbContainer.Users.Find(_currentUser.Id);

                        ICollection <Book> books = new List <Book>();
                        foreach (Book book in BasketBookDataGrid.Items)
                        {
                            Book findBook = dbContainer.Books.Find(book.Id);
                            books.Add(findBook);
                        }

                        Order order = new Order
                        {
                            Id           = Guid.NewGuid(),
                            RegisteredOn = DateTime.Now,
                            DeadlineDate = (DateTime)DeadlineDateOrder.Value,
                            ClosureDate  = null,
                            Reader       = reader,
                            Books        = books
                        };
                        dbContainer.Orders.Add(order);

                        short maxNumber = dbContainer.Orders.Max(c => c.Number);

                        // Создание записи для таблицы EntityRecords
                        EntityRecord record = new EntityRecord
                        {
                            Id         = Guid.NewGuid(),
                            Entity     = entity,
                            Name       = (maxNumber + 1).ToString(),
                            State      = "Добавлен",
                            CreatedBy  = user,
                            ModifiedBy = null,
                            Order      = order
                        };
                        dbContainer.EntityRecords.Add(record);

                        // Создание коллекции историй изменений записи заказа для таблицы EntityHistories
                        IList <EntityHistory> historyRecordList = new List <EntityHistory>
                        {
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Номер",
                                OldValue     = null,
                                NewValue     = order.Number.ToString(),
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Дата регистрации",
                                OldValue     = null,
                                NewValue     = order.RegisteredOn.ToString("F", DeadlineDateOrder.CultureInfo.Parent),
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Дата закрытия",
                                OldValue     = null,
                                NewValue     = order.DeadlineDate.ToString("F", DeadlineDateOrder.CultureInfo.Parent),
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            },
                            new EntityHistory
                            {
                                Id           = Guid.NewGuid(),
                                FieldName    = "Фактическое закрытие",
                                OldValue     = null,
                                NewValue     = null,
                                Date         = DateTime.Now,
                                User         = user,
                                EntityRecord = record
                            }
                        };
                        dbContainer.EntityHistories.AddRange(historyRecordList);

                        dbContainer.SaveChanges();
                    }

                    Close();
                }
            }
            else if (ReaderNameComboBox.SelectedItem == null && DeadlineDateOrder.Value == null && BasketBookDataGrid.Items.Count == 0) // Если в окне не заполнена вся информация о новом заказе
            {
                MessageBox.Show("Заполните всю информацию о новом заказе: выберите нужного читателя, укажите дату закрытия и заполните книгами таблицу \"Корзина выбранных книг\".");
            }
            else if (ReaderNameComboBox.SelectedItem == null)
            {
                MessageBox.Show("Не выбран читатель для оформления нового заказа.");
            }
            else if (DeadlineDateOrder.Value == null)
            {
                MessageBox.Show("Не указана дата закрытия нового заказа.");
            }
            else if (BasketBookDataGrid.Items.Count == 0)
            {
                MessageBox.Show("Корзина книг пустая. Выберите нужные книги в таблице \"Таблица книг\" для оформления нового заказа.");
            }
        }
Ejemplo n.º 17
0
        private void AddUpdateRecord_Click(object sender, RoutedEventArgs e)
        {
            if (UserNameTextBox.Text != "" && UserNameTextBox.Text.Length <= 50 && UserUserRoleComboBox.SelectedItem != null &&
                UserLoginTextBox.Text != "" && UserLoginTextBox.Text.Length <= 30 &&
                UserPasswordTextBox.Text != "" && UserPasswordTextBox.Text.Length <= 30) // Если в окне заполнены все поля и их длины <= заявленного значения
            {
                using (LibraryModelContainer dbContainer = new LibraryModelContainer())
                {
                    if (_isAddMode) // Режим добавления записи
                    {
                        User user = new User
                        {
                            Id       = Guid.NewGuid(),
                            Name     = UserNameTextBox.Text,
                            UserRole = UserUserRoleComboBox.Text,
                            Login    = UserLoginTextBox.Text,
                            Password = UserPasswordTextBox.Text
                        };

                        dbContainer.Users.Add(user);
                        dbContainer.SaveChanges();
                        MessageBox.Show("Новый пользователь системы успешно добавлен в систему.");
                    }
                    else // Режим редактирования записи
                    {
                        _selectedReader.Name     = UserNameTextBox.Text;
                        _selectedReader.UserRole = UserUserRoleComboBox.Text;
                        _selectedReader.Login    = UserLoginTextBox.Text;
                        _selectedReader.Password = UserPasswordTextBox.Text;

                        dbContainer.SaveChanges();
                        MessageBox.Show("Информация о выбранном пользователе системы успешно изменена в системе.");
                    }
                }

                Close();
            }
            else if (UserNameTextBox.Text.Length > 50) // Если поле ФИО имеет длину текста > 50 символов
            {
                MessageBox.Show("Поле ФИО. Длина текста не должна превышать больше 50 символов.");
            }
            else if (UserLoginTextBox.Text.Length > 30) // Если поле login имеет длину текста > 30 символов
            {
                MessageBox.Show("Поле login. Длина текста  не должна превышать больше 30 символов.");
            }
            else if (UserPasswordTextBox.Text.Length > 30) // Если поле password имеет длину текста > 30 символов
            {
                MessageBox.Show("Поле password. Длина текста  не должна превышать больше 30 символов.");
            }
            else if (UserNameTextBox.Text == "" && UserUserRoleComboBox.SelectedItem == null &&
                     UserLoginTextBox.Text == "" && UserPasswordTextBox.Text == "") // Если в окне все поля не заполнены
            {
                MessageBox.Show("Заполните поля для пользователя системы: ФИО, Роль пользователя, Login, Password.");
            }
            else // Проверяем на пустоту заполнения некоторых полей в окне
            {
                if (UserNameTextBox.Text == "")
                {
                    MessageBox.Show("Заполните поле для пользователя системы: ФИО.");
                }
                else if (UserUserRoleComboBox.SelectedItem == null)
                {
                    MessageBox.Show("Заполните поле для пользователя системы: Роль пользователя.");
                }
                else if (UserLoginTextBox.Text == "")
                {
                    MessageBox.Show("Заполните поле для пользователя системы: Login.");
                }
                else
                {
                    MessageBox.Show("Заполните поле для пользователя системы: Password.");
                }
            }
        }