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(); }
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(); } }
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("Заполните поле для каталога: Описание."); } } }
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("Заполните поле для читателя: ФИО."); } }
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("Заполните поле для книги: Каталог."); } } }
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("Корзина книг пустая. Выберите нужные книги в таблице \"Таблица книг\" для оформления нового заказа."); } }
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."); } } }