Ejemplo n.º 1
0
        public AuthorsViewModel()
        {
            MOYABAZAEntities model = App.MOYABAZA;

            model.Авторы.Load();
            Authors = CollectionViewSource.GetDefaultView(model.Авторы.Local);

            AddModeCommand = new RelayCommand(
                (param) =>
            {
                SelectedAuthor = null;
                EditAllowed    = true;
            },
                (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.AuthorThesaurusName && uo.W == 1) != 0);

            ChangeModeCommand = new RelayCommand(
                (param) =>
            {
                EditAllowed ^= true;
            },
                (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.AuthorThesaurusName && uo.E == 1) != 0 && param != null);

            SaveCommand = new RelayCommand(
                (param) =>
            {
                if (SelectedAuthor != null)
                {
                    if (FName != String.Empty && SName != String.Empty && TName != String.Empty)        //Изменение существующего города
                    {
                        try
                        {
                            SelectedAuthor.Имя      = FName;
                            SelectedAuthor.Фамилия  = SName;
                            SelectedAuthor.Отчество = TName;
                            model.SaveChanges();
                            Authors.Refresh();
                            EditAllowed = false;
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show($"Такой город уже существует! \n {e.Message}");
                        }
                    }
                    else
                    {
                        MessageBox.Show("ФИО не может быть пустым!");
                        FName = SelectedAuthor.Имя;
                        SName = SelectedAuthor.Фамилия;
                        TName = SelectedAuthor.Отчество;
                    }
                }
                else
                {
                    if (FName != String.Empty && SName != String.Empty && TName != String.Empty)        //Добавление нового города
                    {
                        Авторы author = new Авторы();
                        try
                        {
                            author.Имя      = FName;
                            author.Фамилия  = SName;
                            author.Отчество = TName;
                            model.Авторы.Local.Add(author);
                            model.SaveChanges();
                            EditAllowed = false;
                            FName       = String.Empty;
                            SName       = String.Empty;
                            TName       = String.Empty;
                        }
                        catch (DbUpdateException e)
                        {
                            model.Авторы.Local.Remove(author);
                            MessageBox.Show($"Такой автор уже существует! \n {e.Message}");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Название не может быть пустым!");
                    }
                }
            },
                (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.AuthorThesaurusName && (uo.E == 1 || uo.R == 1)) != 0 && Convert.ToBoolean(param) == true);

            DeleteCommand = new RelayCommand(
                (param) =>
            {
                if (MessageBox.Show("Уверен?", "Назад дороги не будет", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
                {
                    var deletedAuthor = _selectedAuthor;

                    try
                    {
                        if (deletedAuthor.Книги.Count != 0)
                        {
                            throw new DbUpdateException("В авторе есть книги!!!!");
                        }
                        model.Авторы.Local.Remove(deletedAuthor);
                        model.SaveChanges();
                    }
                    catch (DbUpdateException ex)
                    {
                        model.Авторы.Local.Add(deletedAuthor);
                        Authors.MoveCurrentTo(deletedAuthor);
                        Authors.Refresh();
                        MessageBox.Show($"Произошла ошибка при удалении данных: {Environment.CommandLine}{ex.Message}", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
            },
                (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.AuthorThesaurusName && uo.D == 1) != 0 && param != null);
            Authors.Filter = FilterFunction;
        }