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