Beispiel #1
0
        // Verified
        public void Delete()
        {
            // если ничего не выбрано в датагриде то ошибка
            if (TableV.Current_DataGrid.SelectedItems.Count < 1)
            {
                MessageBox.Show("Выберите элементы для удаления!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Пока есть элементы, которые нужно удалить, то крутится цикл
            while (TableV.Current_DataGrid.SelectedItems.Count > 0)
            {
                // индекс текущей выбранной строки в DataGrid
                // кастыль, но куда без кастылей?
                index = TableV.Current_DataGrid.SelectedIndex;

                // Прежде чем удалить элемент из данной таблицы,
                // нужно удалить его из зависимых таблиц (см. Физическую модель)
                // иначе будет ошибка и приложение крашнится

                // Получение элемента, который будем удалять
                UsersM deleteEntity = SourceList[index];
                if (BataDase.Properties.Settings.Default.CurrentUserId == deleteEntity._user_id)
                {
                    MessageBox.Show("Нельзя удалить аккаунт, который в данный момент авторизован в приложении!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    TableV.Current_DataGrid.SelectedItems.RemoveAt(index);
                    continue;
                }

                // Получение всех записей из зависимой таблицы с билетами,
                // которые содержат нашего юзера
                var tickets = dbContext.TicketsMs
                              .Where(o => o._user_id == deleteEntity._user_id);

                // Если в зависимых таблицах есть записи с нашим юзером,
                // то произвести чистим зависимую таблицу
                if (tickets != null)
                {
                    dbContext.TicketsMs.RemoveRange(tickets);
                }

                // После того, как подчистили зависимые таблицы,
                // выбираем сам объект для удаления из КОНТЕКСТА БД
                var contextDeleteEntity = dbContext.UsersMs.Local
                                          .Single(o => o._user_id == deleteEntity._user_id);

                // Удаляем контекстного юзера из контекста
                dbContext.UsersMs.Local.Remove(contextDeleteEntity);

                // Удаляем НЕконтекстного юзера из SourceList
                SourceList.Remove(deleteEntity);
            }

            dbContext.SaveChanges();

            TableV.Current_DataGrid.ItemsSource = SourceList;
            TableV.Current_DataGrid.Items.Refresh();
        }
        public void ExecuteAddMoney(object sender, RoutedEventArgs e)
        {
            float result;

            // Проверки TextBox на null и пустую строку
            if (money.Text == null || money.Text == "")
            {
                MessageBox.Show("Укажите сумму!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            else if (!float.TryParse(money.Text, out result))
            {
                MessageBox.Show("Некорректная сумма!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            UsersM temp = new UsersM();

            temp._bill = float.Parse(money.Text);

            for (int i = 0; i < users.Count; i++)
            {
                // Ищем из списка юзеров, того кто на данный момент пользуется программой
                if (users[i]._user_id == userID)
                {
                    users[i]._bill += temp._bill;
                    MessageBox.Show(App.Current.Resources["Text_AddMoneyMessage"].ToString() + " " +
                                    users[i]._bill.ToString() + " " +
                                    App.Current.Resources["Text_Rubles"].ToString(), "Info",
                                    MessageBoxButton.OK, MessageBoxImage.Information);
                }
                dbContext.Entry(users[i]).State = EntityState.Modified;
            }
            dbContext.SaveChanges();
            users = dbContext.UsersMs.Local.ToBindingList();
        }
Beispiel #3
0
        // Verified
        public void ExecuteAddEdit(object sender, RoutedEventArgs e)
        {
            // Проверки TextBox на null и пустую строку
            if (surname.Text == null || surname.Text == "")
            {
                MessageBox.Show("Укажите фамилию!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (name.Text == null || name.Text == "")
            {
                MessageBox.Show("Укажите имя!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Проверка DateTime на соответствие паттерну даты dd.MM.yyyy
            DateTime dateTime;

            if (!DateTime.TryParseExact(birthday.Text, "dd.MM.yyyy", App.Language, System.Globalization.DateTimeStyles.None, out dateTime))
            {
                MessageBox.Show("Дата указана некорректно!\nУкажите дату в виде: \"dd.MM.yyyy\"", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Проверки TextBox на null и пустую строку
            if (login.Text == null || login.Text == "")
            {
                MessageBox.Show("Укажите логин!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            else
            {
                // Если юзер с данным логином уже есть в таблице, то вывести ошибку
                foreach (var item in SourceList)
                {
                    if (item._login == login.Text)
                    {
                        // Если сейчас добавление, то просто вывести ошибку
                        if (isAdd)
                        {
                            MessageBox.Show("Пользователь с данным логином уже существует!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                            return;
                        }
                        // Если сейчас изменение, то в случае совпадения индексов ошибку не выводить
                        else
                        {
                            // Вывести ошибку, если элементы таблицы имеют разные индексы,
                            // т.е. такой логин уже есть у кого то другого в таблице
                            if (item._user_id != SourceList[index]._user_id)
                            {
                                MessageBox.Show("Пользователь с данным логином уже существует!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                                return;
                            }
                        }
                    }
                }
            }

            if (password.Text == null || password.Text == "")
            {
                MessageBox.Show("Укажите пароль!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Проверки TextBox для денег на null и пустую строку
            // Если строка пустая, то вставляется "0"
            double result;

            if (bill.Text == null || bill.Text == "")
            {
                bill.Text = "0";
            }
            else if (!double.TryParse(bill.Text, out result))
            {
                MessageBox.Show("Некорректная сумма!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Создание нового Юзера
            UsersM temp = new UsersM();

            temp._surname  = surname.Text;
            temp._name     = name.Text;
            temp._lastname = lastname.Text;
            temp._sex      = sex.SelectedIndex;

            dateTime       = DateTime.ParseExact(birthday.Text, "dd.MM.yyyy", null);
            temp._birthday = dateTime.Subtract(DateTime.MinValue).TotalMilliseconds;

            temp._login  = login.Text;
            temp._pass   = password.Text;
            temp._access = access.SelectedIndex;
            temp._bill   = double.Parse(bill.Text);

            // Сохранение нового юзера в БД
            if (isAdd)
            {
                // Добавляем объект в БД
                dbContext.UsersMs.Local.Add(temp);

                // Очищаем поля
                surname.Text         = null;
                name.Text            = null;
                lastname.Text        = null;
                sex.SelectedIndex    = 0;
                birthday.Text        = null;
                login.Text           = null;
                password.Text        = null;
                access.SelectedIndex = 0;
                bill.Text            = null;
            }
            else
            {
                // Получаем объект из БД по айди, который будем изменять
                int id   = SourceList[index]._user_id;
                var user = dbContext.UsersMs.Local
                           .Single(o => o._user_id == id);

                // Изменяем, просто изменяя поля на поля объекта temp
                user._surname  = temp._surname;
                user._name     = temp._name;
                user._lastname = temp._lastname;
                user._sex      = temp._sex;
                temp._birthday = temp._birthday;
                user._login    = temp._login;
                user._pass     = temp._pass;
                user._access   = temp._access;
                user._bill     = temp._bill;

                // Говорим контексту БД, что данный объект был изменен
                dbContext.Entry(user).State = EntityState.Modified;
            }

            // Сохранение контекста БД
            dbContext.SaveChanges();
            dbContext.UsersMs.Load();

            SourceList = dbContext.UsersMs.Local.ToBindingList();

            TableV.Current_DataGrid.ItemsSource = SourceList;
            TableV.Current_DataGrid.Items.Refresh();
        }
Beispiel #4
0
        // Verified
        public void AddEdit(bool isAdd)
        {
            // Сохранить состояние, добавление это или изменение
            this.isAdd = isAdd;

            // Создаём диалоговое окно
            DialogV dialogV    = new DialogV();
            Grid    dialogGrid = dialogV.Dialog_Grid;

            // Заполняем нижний Button текстом и вешаем локальный обработчик события нажатия
            Button button = dialogV.Button_Execute;

            // Если это добавление
            if (isAdd)
            {
                button.Content = App.Current.Resources["Text_Add"];
                index          = -1;
            }
            // Если это изменение
            else
            {
                // если ничего не выбрано в датагриде то ошибка
                // если выбрано больше 1 элемента то тоже ошибка
                if (TableV.Current_DataGrid.SelectedItems.Count < 1)
                {
                    MessageBox.Show("Выберите элемент для изменения!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                else if (TableV.Current_DataGrid.SelectedItems.Count > 1)
                {
                    MessageBox.Show("Можно выбрать для изменения не более ОДНОГО элемента за раз!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                // индекс текущей выбранной строки в DataGrid
                // кастыль, но куда без кастылей?
                index = TableV.Current_DataGrid.SelectedIndex;

                // Если всё ок, вставляем данные для данного юзера в форму, который затем будем менять
                UsersM temp = SourceList[index];

                surname.Text      = temp._surname;
                name.Text         = temp._name;
                lastname.Text     = temp._lastname;
                sex.SelectedIndex = temp._sex;

                DateTime startdate = DateTime.MinValue.AddMilliseconds(temp._birthday);
                birthday.Text = startdate.ToString("dd.MM.yyyy");

                login.Text           = temp._login;
                password.Text        = temp._pass;
                access.SelectedIndex = temp._access;
                bill.Text            = temp._bill.ToString();

                button.Content = App.Current.Resources["Text_Edit"];
            }

            // назначаем метод для события кнопки
            // метод сразу обрабатывает и добавление и изменение, типа оптимизация
            button.Click += new RoutedEventHandler(ExecuteAddEdit);

            // Вешаем элементы в Grid
            dialogGrid.Children.Add(Surname);
            dialogGrid.Children.Add(Name);
            dialogGrid.Children.Add(Lastname);
            dialogGrid.Children.Add(Sex);
            dialogGrid.Children.Add(Birthday);
            dialogGrid.Children.Add(Login);
            dialogGrid.Children.Add(Password);
            dialogGrid.Children.Add(Access);
            dialogGrid.Children.Add(Bill);

            dialogGrid.Children.Add(surname);
            dialogGrid.Children.Add(name);
            dialogGrid.Children.Add(lastname);
            dialogGrid.Children.Add(sex);
            dialogGrid.Children.Add(birthday);
            dialogGrid.Children.Add(login);
            dialogGrid.Children.Add(password);
            dialogGrid.Children.Add(access);
            dialogGrid.Children.Add(bill);

            // Показываем диалоговое окно
            dialogV.ShowDialog();

            // Очищаем Grid
            dialogGrid.Children.Remove(surname);
            dialogGrid.Children.Remove(name);
            dialogGrid.Children.Remove(lastname);
            dialogGrid.Children.Remove(sex);
            dialogGrid.Children.Remove(birthday);
            dialogGrid.Children.Remove(login);
            dialogGrid.Children.Remove(password);
            dialogGrid.Children.Remove(access);
            dialogGrid.Children.Remove(bill);

            dialogGrid.Children.Remove(Surname);
            dialogGrid.Children.Remove(Name);
            dialogGrid.Children.Remove(Lastname);
            dialogGrid.Children.Remove(Sex);
            dialogGrid.Children.Remove(Birthday);
            dialogGrid.Children.Remove(Login);
            dialogGrid.Children.Remove(Password);
            dialogGrid.Children.Remove(Access);
            dialogGrid.Children.Remove(Bill);

            // Очищаем поля
            surname.Text         = null;
            name.Text            = null;
            lastname.Text        = null;
            sex.SelectedIndex    = 0;
            birthday.Text        = null;
            login.Text           = null;
            password.Text        = null;
            access.SelectedIndex = 0;
            bill.Text            = null;
        }
Beispiel #5
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (sender == Button_Back)
            {
                MainVM.LoginVM_RelayCommand.Execute(null);
            }
            else if (sender == Button_SignUp)
            {
                // Регистрация
                // Проверки TextBox на null и пустую строку
                if (TextBox_Surname.Text == null || TextBox_Surname.Text == "")
                {
                    MessageBox.Show("Укажите фамилию!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                if (TextBox_Name.Text == null || TextBox_Name.Text == "")
                {
                    MessageBox.Show("Укажите имя!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                // Проверка DateTime на соответствие паттерну даты dd.MM.yyyy
                DateTime dateTime;
                if (!DateTime.TryParseExact(TextBox_Birthday.Text, "dd.MM.yyyy", App.Language, System.Globalization.DateTimeStyles.None, out dateTime))
                {
                    MessageBox.Show("Дата указана некорректно!\nУкажите дату в виде: \"dd.MM.yyyy\"", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                AppDBContext dBContext = AppDBContext.GetInstance();
                dBContext.UsersMs.Load();

                // Проверки TextBox на null и пустую строку
                if (TextBox_Login.Text == null || TextBox_Login.Text == "")
                {
                    MessageBox.Show("Укажите логин!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                else
                {
                    string login = TextBox_Login.Text;

                    var user = (from u in dBContext.UsersMs
                                where u._login == login
                                select u).FirstOrDefault();

                    // Если юзер с данным логином уже есть в таблице, то вывести ошибку
                    if (user != null)
                    {
                        MessageBox.Show("Пользователь с данным логином уже существует!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                }

                if (TextBox_Pass.Text == null || TextBox_Pass.Text == "")
                {
                    MessageBox.Show("Укажите пароль!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                if (TextBox_RepeatPass.Text != TextBox_Pass.Text)
                {
                    MessageBox.Show("Пароли не совпадают!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                // Создание нового Юзера
                UsersM temp = new UsersM();
                temp._surname  = TextBox_Surname.Text;
                temp._name     = TextBox_Name.Text;
                temp._lastname = TextBox_Lastname.Text;
                temp._sex      = ComboBox_Sex.SelectedIndex;

                dateTime       = DateTime.ParseExact(TextBox_Birthday.Text, "dd.MM.yyyy", null);
                temp._birthday = dateTime.Subtract(DateTime.MinValue).TotalMilliseconds;

                temp._login  = TextBox_Login.Text;
                temp._pass   = TextBox_Pass.Text;
                temp._access = ComboBox_AccessLevel.SelectedIndex;
                temp._bill   = 0;

                dBContext.UsersMs.Local.Add(temp);
                dBContext.SaveChanges();

                MessageBox.Show("Вы были успешно зарегистрированы!", "Добро пожаловать!", MessageBoxButton.OK, MessageBoxImage.Information);

                // Переход обратно на логин
                MainVM.LoginVM_RelayCommand.Execute(null);
            }
        }