예제 #1
0
        public void TestnumberSessionsLanguageFran2()
        {
            var nCourse = new LanguageTutorial.DataModel.Course();
            nCourse.Active = true;
            nCourse.SeansPerDay = 10;
            App.oCourseFrançais = nCourse;

            int res = 10;
            int real = TimerMet.numberSessionsLanguageFran();
            Assert.AreEqual(res, real, "Сеансы за день");
        }
예제 #2
0
        public void TestnumberSessionsLanguageEng3()
        {
            var nCourse = new LanguageTutorial.DataModel.Course();
            nCourse.Active = false;
            nCourse.SeansPerDay = 10;

            App.oCourseEnglish = nCourse;

            int res = 0;
            int real = TimerMet.numberSessionsLanguageEng();
            Assert.AreEqual(res, real, "Сеанс не активен");
        }
        /// <summary>
        /// Заполняем поля значениями при загрузке окна
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MetroWindow_Loaded(object sender, RoutedEventArgs e)
        {
            if (label_Settings.Content == "English")
            {
                if ( App.oCourseEnglish == null )
                {
                    App.oCourseEnglish = new Course() { LanguageId = 1, WordsPerSession = 20, WordsToStudy = 50, SeansPerDay = 5, TrueAnswers = 3 };
                }

                Course tempCourseEnglish = new Course();

                tempCourseEnglish.WordsPerSession = App.oCourseEnglish.WordsPerSession;
                tempCourseEnglish.WordsToStudy = App.oCourseEnglish.WordsToStudy;
                tempCourseEnglish.SeansPerDay = App.oCourseEnglish.SeansPerDay;
                tempCourseEnglish.TrueAnswers = App.oCourseEnglish.TrueAnswers;

                grid.DataContext = tempCourseEnglish;
            }
            else
            {
                if ( App.oCourseFrançais == null)
                {
                    App.oCourseFrançais = new Course() { LanguageId = 2, WordsPerSession = 20, WordsToStudy = 50, SeansPerDay = 5, TrueAnswers = 3 };
                }

                Course tempCourseFrançais = new Course();

                tempCourseFrançais.WordsPerSession = App.oCourseFrançais.WordsPerSession;
                tempCourseFrançais.WordsToStudy = App.oCourseFrançais.WordsToStudy;
                tempCourseFrançais.SeansPerDay = App.oCourseFrançais.SeansPerDay;
                tempCourseFrançais.TrueAnswers = App.oCourseFrançais.TrueAnswers;

                grid.DataContext = tempCourseFrançais;
            }
        }
        /// <summary>
        /// Подтверждение регистрации, создание нового профиля
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_Accept_Click(object sender, RoutedEventArgs e)
        {
            if (App.oActiveUser == null)
            {// Создаём новый профиль, если профиль не выбран

                if ( textbox_Profile_Name.Text != "" )
                {// Проверка на имя профиля

                    if ( num_Time_Between_Seans.Value != null )
                    {// Проверка на часы меж сеансами

                        if ((check_English.IsChecked == true || check_Français.IsChecked == true))
                        {// Проверка на то, что выбран хотя бы 1 язык
                            // Создаём пользователя
                            Users newUser = new Users(App.oUsersRepository.lUsers, textbox_Profile_Name.Text, (double)num_Time_Between_Seans.Value);

                            // Добавляем пользователя в БД
                            App.oUsersRepository.lUsers.Add(newUser);

                            // Делаем нового пользователя текущим
                            App.oActiveUser = newUser;

                            // Создаём привязку пользователя к курсам и сохраняем настройки
                            if (check_English.IsChecked == true)
                            {// Курсы английского

                                Course oCourseEnglish = new Course(App.oCourseRepository.lCourse, newUser.Id, App.oSettingsEnglish.Id, 0);
                                App.oCourseRepository.lCourse.Add(oCourseEnglish);

                                App.oSettingsRepository.lSettings.Add(App.oSettingsEnglish);
                            }

                            if (check_Français.IsChecked == true)
                            {// Курсы французского

                                Course oCourseFrançais = new Course(App.oCourseRepository.lCourse, newUser.Id, App.oSettingsFrançais.Id, 1);
                                App.oCourseRepository.lCourse.Add(oCourseFrançais);

                                App.oSettingsRepository.lSettings.Add(App.oSettingsFrançais);
                            }

                            App.Registered = true;

                            this.Close();
                        }
                        else
                        {
                            MessageBox.Show("Язык обучения не выбран!");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Количество часов не указанно!");
                    }
                }
                else
                {
                    MessageBox.Show("Имя профиля не указано!");
                }

            }
            else
            {// Обновляем текущий профиль
                if ( check_English.IsChecked == true || check_Français.IsChecked == true )
                {// Запоминаем новые данные
                    // Удаляем запись из базы
                    App.oUsersRepository.lUsers.Remove(App.oActiveUser);

                    //Запоминаем изменения
                    App.oActiveUser.Name = textbox_Profile_Name.Text;
                    App.oActiveUser.TimeBetweenSeans = (double)num_Time_Between_Seans.Value;

                    // Загружаем обратно в бд
                    App.oUsersRepository.lUsers.Add(App.oActiveUser);

                    this.Close();
                }
                else
                {
                    MessageBox.Show("Язык обучения не выбран!");
                }
            }
        }
        /// <summary>
        /// Подтверждение регистрации, создание нового профиля или обновление данных активного профиля
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_Accept_Click(object sender, RoutedEventArgs e)
        {
            if (textbox_Profile_Name.Text.Trim() != "")
            {// Проверка на имя профиля

                if (num_Time_Between_Seans.Value != null)
                {// Проверка на часы меж сеансами

                    if ((check_English.IsChecked == true || check_Français.IsChecked == true))
                    {// Проверка на то, что выбран хотя бы 1 язык

                        if (App.oActiveUser == null || App.ChangeUser)
                        {// Если активного пользователя нет или пользователь меняет профиль, то создаём новый профиль ( регистрация

                            // Создаём пользователя
                            User nUser = new User() { Name = textbox_Profile_Name.Text.Trim(), SessionPeriod = (double)num_Time_Between_Seans.Value };

                            // Добавляем пользователя в БД
                            using (var db = new LanguageTutorialContext())
                            {
                                var result = db.User.FirstOrDefault(user => user.Name == nUser.Name);

                                if (result == null)
                                {
                                    db.User.Add(nUser);
                                    db.SaveChanges();
                                }
                                else
                                {
                                    MessageBox.Show("Такое имя пользователя уже зарегистрировано!");
                                    return;
                                }

                            }

                            // Делаем текущего пользователя активным
                            App.oActiveUser = nUser;

                            // Создаём привязку пользователя к курсам и сохраняем настройки
                            if (check_English.IsChecked == true)
                            {// Курсы английского

                                using (var db = new LanguageTutorialContext())
                                {
                                    var nCourse = new Course();

                                    nCourse.Active = true;
                                    nCourse.WordsPerSession = App.oCourseEnglish.WordsPerSession;
                                    nCourse.WordsToStudy = App.oCourseEnglish.WordsToStudy;
                                    nCourse.SeansPerDay = App.oCourseEnglish.SeansPerDay;
                                    nCourse.TrueAnswers = App.oCourseEnglish.TrueAnswers;
                                    nCourse.UserId = nUser.Id;

                                    var lang = from Language in db.Language
                                               where Language.Id == 0
                                               select Language;

                                    nCourse.LanguageId = 1;

                                    db.Course.Add(nCourse);
                                    db.SaveChanges();

                                    for (int i = 1; i <= App.oCourseEnglish.WordsToStudy; i++)
                                    {
                                        db.WordQueue.Add(new WordQueue() { TrueAnswers = 0, IsLearned = false, UserId = nUser.Id, WordDictionaryId = i });
                                    }

                                    db.SaveChanges();
                                }
                            }

                            if (check_Français.IsChecked == true)
                            {// Курсы французского

                                using (var db = new LanguageTutorialContext())
                                {
                                    var nCourse = new Course();

                                    nCourse.Active = true;
                                    nCourse.WordsPerSession = App.oCourseFrançais.WordsPerSession;
                                    nCourse.WordsToStudy = App.oCourseFrançais.WordsToStudy;
                                    nCourse.SeansPerDay = App.oCourseFrançais.SeansPerDay;
                                    nCourse.TrueAnswers = App.oCourseFrançais.TrueAnswers;
                                    nCourse.UserId = nUser.Id;
                                    nCourse.LanguageId = 2;

                                    db.Course.Add(nCourse);
                                    db.SaveChanges();

                                    for (int i = 496; i < 496 + App.oCourseFrançais.WordsToStudy; i++)
                                    {
                                        db.WordQueue.Add(new WordQueue() { TrueAnswers = 0, IsLearned = false, UserId = nUser.Id, WordDictionaryId = i });
                                    }

                                    db.SaveChanges();
                                }
                            }

                            App.Registered = true;
                            App.UserChanged = true;

                            DispatcherTimer Timer = new DispatcherTimer();
                            Timer.Tick += new EventHandler(TimerMet.OnTimedEvent);
                            Timer.Interval = new TimeSpan(0, (int)(App.oActiveUser.SessionPeriod * 60), 0);
                            App.aTimer = Timer;

                            this.Close();
                        }
                        else
                        {// Если есть активный пользователь, то необходимо обновить его настройки

                            // Обновление параметров профиля в БД
                            using (var db = new LanguageTutorialContext())
                            {
                                var result = db.User.FirstOrDefault(user => user.Name == textbox_Profile_Name.Text.Trim());

                                if (result != null)
                                { // Если пользователь с таким именем найден

                                    if (App.oActiveUser.Name != textbox_Profile_Name.Text.Trim())
                                    {// Если пользователь сменил имя

                                        // Делаем прерывание т.к. имя уже занято
                                        MessageBox.Show("Такое имя пользователя уже зарегистрировано!");
                                        return;
                                    }
                                    else
                                    { // Если пользователь не сменил имя

                                        // Обновляем данные активного пользователя
                                        App.oActiveUser.SessionPeriod = (double)num_Time_Between_Seans.Value;

                                        // Обновляем базу данных
                                        var original = db.User.Find(App.oActiveUser.Id);

                                        if (original != null)
                                        {
                                            original.SessionPeriod = (double)num_Time_Between_Seans.Value;

                                            db.SaveChanges();
                                        }
                                    }
                                }
                                else
                                { // Если пользователь с таким именем не найден, значит произошла смена имени.

                                    // Обновляем данные активного пользователя
                                    App.oActiveUser.Name = textbox_Profile_Name.Text.Trim();
                                    App.oActiveUser.SessionPeriod = (double)num_Time_Between_Seans.Value;

                                    // Обновляем базу данных
                                    var original = db.User.Find(App.oActiveUser.Id);

                                    if (original != null)
                                    {
                                        original.Name = textbox_Profile_Name.Text.Trim();
                                        original.SessionPeriod = (double)num_Time_Between_Seans.Value;

                                        db.SaveChanges();
                                    }
                                }
                            }

                            App.aTimer.Stop();
                            App.aTimer.Interval = new TimeSpan(0, (int)((double)num_Time_Between_Seans.Value * 60), 0);
                            App.aTimer.Start();

                            // Проверка изменения курсов пользователя
                            bool Course_Finded = false;

                            if (check_English.IsChecked == true)
                            {// Курсы английского

                                //Проверка на наличие у пользователя неактивного курса английского
                                using (var db = new LanguageTutorialContext())
                                {
                                    var result = db.Course.FirstOrDefault(Course => Course.UserId == App.oActiveUser.Id && Course.LanguageId == 1);

                                    if (result != null)
                                    {// Если нашли курс, то запоминаем это
                                        Course_Finded = true;

                                        if ((result as Course).Active == false)
                                        { // Если курс был неактивен, то делаем его активным
                                            (result as Course).Active = true;
                                            db.SaveChanges();
                                        }
                                    }
                                }

                                if (Course_Finded)
                                {// Если курс найден, то применяем к нему обновлённые настройки
                                    using (var db = new LanguageTutorialContext())
                                    {
                                        var original = db.Course.Find(App.oCourseEnglish.Id);

                                        original.WordsPerSession = App.oCourseEnglish.WordsPerSession;
                                        original.WordsToStudy = App.oCourseEnglish.WordsToStudy;
                                        original.SeansPerDay = App.oCourseEnglish.SeansPerDay;
                                        original.TrueAnswers = App.oCourseEnglish.TrueAnswers;

                                        db.SaveChanges();
                                    }
                                }
                                else
                                {// Если курс не найден, но галочка стоит, то необходимо создать курс для пользователя

                                    using (var db = new LanguageTutorialContext())
                                    {
                                        var nCourse = new Course();

                                        nCourse.Active = true;
                                        nCourse.WordsPerSession = 20;
                                        nCourse.WordsToStudy = 50;
                                        nCourse.SeansPerDay = 5;
                                        nCourse.TrueAnswers = 3;
                                        nCourse.UserId = App.oActiveUser.Id;
                                        nCourse.LanguageId = 1;

                                        db.Course.Add(nCourse);
                                        db.SaveChanges();
                                        App.oCourseEnglish = nCourse;

                                        for (int i = 1; i <= App.oCourseEnglish.WordsToStudy; i++)
                                        {
                                            db.WordQueue.Add(new WordQueue() { TrueAnswers = 0, IsLearned = false, UserId = App.oActiveUser.Id, WordDictionaryId = i });
                                        }

                                        db.SaveChanges();
                                    }
                                }
                            }
                            else
                            {// Если галочки нет

                                //Проверка на наличие у пользователя активного курса английского
                                using (var db = new LanguageTutorialContext())
                                {
                                    var result = db.Course.FirstOrDefault(Course => Course.UserId == App.oActiveUser.Id && Course.LanguageId == 1 && Course.Active == true);

                                    if (result != null)
                                    {
                                        (result as Course).Active = false;
                                        db.SaveChanges();
                                    }
                                }
                            }

                            Course_Finded = false;

                            if (check_Français.IsChecked == true)
                            {// Курсы английского

                                //Проверка на наличие у пользователя неактивного курса французского
                                using (var db = new LanguageTutorialContext())
                                {
                                    var result = db.Course.FirstOrDefault(Course => Course.UserId == App.oActiveUser.Id && Course.LanguageId == 2);

                                    if (result != null)
                                    {// Если нашли курс, то запоминаем это
                                        Course_Finded = true;

                                        if ((result as Course).Active == false)
                                        { // Если курс был неактивен, то делаем его активным
                                            (result as Course).Active = true;
                                            db.SaveChanges();
                                        }
                                    }
                                }

                                if (Course_Finded)
                                {// Если курс найден, то применяем к нему обновлённые настройки
                                    using (var db = new LanguageTutorialContext())
                                    {
                                        var original = db.Course.Find(App.oCourseFrançais.Id);

                                        original.WordsPerSession = App.oCourseFrançais.WordsPerSession;
                                        original.WordsToStudy = App.oCourseFrançais.WordsToStudy;
                                        original.SeansPerDay = App.oCourseFrançais.SeansPerDay;
                                        original.TrueAnswers = App.oCourseFrançais.TrueAnswers;

                                        db.SaveChanges();
                                    }
                                }
                                else
                                {// Если курс не найден, но галочка стоит, то необходимо создать курс для пользователя

                                    using (var db = new LanguageTutorialContext())
                                    {
                                        var nCourse = new Course();

                                        nCourse.Active = true;
                                        nCourse.WordsPerSession = 20;
                                        nCourse.WordsToStudy = 50;
                                        nCourse.SeansPerDay = 5;
                                        nCourse.TrueAnswers = 3;
                                        nCourse.UserId = App.oActiveUser.Id;
                                        nCourse.LanguageId = 2;

                                        db.Course.Add(nCourse);
                                        db.SaveChanges();

                                        App.oCourseFrançais = nCourse;
                                        for (int i = 496; i < 496 + App.oCourseFrançais.WordsToStudy; i++)
                                        {
                                            db.WordQueue.Add(new WordQueue() { TrueAnswers = 0, IsLearned = false, UserId = App.oActiveUser.Id, WordDictionaryId = i });
                                        }

                                        db.SaveChanges();
                                    }
                                }
                            }
                            else
                            {// Если галочки нет

                                //Проверка на наличие у пользователя активного курса французского
                                using (var db = new LanguageTutorialContext())
                                {
                                    var result = db.Course.FirstOrDefault(Course => Course.UserId == App.oActiveUser.Id && Course.LanguageId == 2 && Course.Active == true);

                                    if (result != null)
                                    {
                                        (result as Course).Active = false;
                                        db.SaveChanges();
                                    }
                                }
                            }

                            this.Close();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Язык обучения не выбран!");
                    }
                }
                else
                {
                    MessageBox.Show("Количество часов не указанно!");
                }
            }
            else
            {
                MessageBox.Show("Имя профиля не указано!");
            }
        }
        /// <summary>
        /// Подтверждение регистрации, создание нового профиля
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_Accept_Click(object sender, RoutedEventArgs e)
        {
            if (App.oActiveUser == null)
            {// Создаём новый профиль, если профиль не выбран

                if ( textbox_Profile_Name.Text != "" )
                {// Проверка на имя профиля

                    if ( num_Time_Between_Seans.Value != null )
                    {// Проверка на часы меж сеансами

                        if ((check_English.IsChecked == true || check_Français.IsChecked == true))
                        {// Проверка на то, что выбран хотя бы 1 язык
                            // Создаём пользователя
                            Users newUser = new Users(App.oUsersRepository.lUsers, textbox_Profile_Name.Text, (double)num_Time_Between_Seans.Value);

                            // Добавляем пользователя в БД
                            App.oUsersRepository.lUsers.Add(newUser);

                            // Делаем нового пользователя текущим
                            App.oActiveUser = newUser;

                            // Создаём привязку пользователя к курсам и сохраняем настройки
                            if (check_English.IsChecked == true)
                            {// Курсы английского

                                Course oCourseEnglish = new Course(App.oCourseRepository.lCourse, newUser.Id, App.oActiveSettingsEnglish.Id, 0, true);
                                App.oCourseRepository.lCourse.Add(oCourseEnglish);

                                App.oSettingsRepository.lSettings.Add(App.oActiveSettingsEnglish);
                            }

                            if (check_Français.IsChecked == true)
                            {// Курсы французского

                                Course oCourseFrançais = new Course(App.oCourseRepository.lCourse, newUser.Id, App.oActiveSettingsFrançais.Id, 1, true);
                                App.oCourseRepository.lCourse.Add(oCourseFrançais);

                                App.oSettingsRepository.lSettings.Add(App.oActiveSettingsFrançais);
                            }

                            App.Registered = true;

                            this.Close();
                        }
                        else
                        {
                            MessageBox.Show("Язык обучения не выбран!");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Количество часов не указанно!");
                    }
                }
                else
                {
                    MessageBox.Show("Имя профиля не указано!");
                }

            }
            else
            {// Обновляем текущий профиль
                if ( check_English.IsChecked == true || check_Français.IsChecked == true )
                {// Запоминаем новые данные

                    // Удаляем запись из базы
                    App.oUsersRepository.lUsers.Remove(App.oActiveUser);

                    //Запоминаем изменения
                    App.oActiveUser.Name = textbox_Profile_Name.Text;
                    App.oActiveUser.TimeBetweenSeans = (double)num_Time_Between_Seans.Value;

                    // Загружаем обратно в бд
                    App.oUsersRepository.lUsers.Add(App.oActiveUser);

                    // Проверка изменения курсов пользователя
                    bool Course_Finded = false;

                    if (check_English.IsChecked == true)
                    {// Курсы английского

                        //Проверка на наличие у пользователя неактивного курса английского
                        foreach ( var c in App.oCourseRepository.lCourse )
                        {
                            if (c.Users_Id == App.oActiveUser.Id && c.Languages_Id == 0 )
                            {// Если у пользователя есть активный курс английского
                                Course_Finded = true;
                            }

                            if ( c.Users_Id == App.oActiveUser.Id && c.Languages_Id == 0 && c.Active == false )
                            {// Если у пользователя есть неактивный курс английского

                                // Активировать курс
                                App.oCourseRepository.lCourse.Remove(c);

                                c.Active = true;

                                App.oCourseRepository.lCourse.Add(c);

                                break;
                            }
                        }

                        if ( !Course_Finded )
                        {// Если курс не найден, но галочка стоит, то необходимо создать курс для пользователя

                            if ( App.oActiveSettingsEnglish == null )
                            {
                                App.oActiveSettingsEnglish = new Settings(App.oSettingsRepository.lSettings, 20, 50, 5, 5);
                            }

                            Course oCourseEnglish = new Course(App.oCourseRepository.lCourse, App.oActiveUser.Id, App.oActiveSettingsEnglish.Id, 0, true);
                            App.oCourseRepository.lCourse.Add(oCourseEnglish);

                            App.oSettingsRepository.lSettings.Add(App.oActiveSettingsEnglish);
                        }

                    }
                    else
                    {// Если галочки нет

                        //Проверка на наличие у пользователя активного курса английского
                        foreach (var c in App.oCourseRepository.lCourse)
                        {

                            if (c.Users_Id == App.oActiveUser.Id && c.Languages_Id == 0 && c.Active == true)
                            {// Если у пользователя есть активный курс английского

                                // Деактивировать курс
                                App.oCourseRepository.lCourse.Remove(c);

                                c.Active = false;

                                App.oCourseRepository.lCourse.Add(c);

                                break;
                            }
                        }
                    }

                    Course_Finded = false;

                    if (check_Français.IsChecked == true)
                    {// Курсы французского

                        //Проверка на наличие у пользователя данных курсов
                        foreach (var c in App.oCourseRepository.lCourse)
                        {
                            if (c.Users_Id == App.oActiveUser.Id && c.Languages_Id == 1 )
                            {
                                Course_Finded = true;
                            }

                            if (c.Users_Id == App.oActiveUser.Id && c.Languages_Id == 1 && c.Active == false)
                            {// Если у пользователя есть неактивный курс французского
                                // Активировать курс
                                App.oCourseRepository.lCourse.Remove(c);

                                c.Active = true;

                                App.oCourseRepository.lCourse.Add(c);

                                break;
                            }
                        }

                        if (!Course_Finded)
                        {// Если курс не найден, но галочка стоит, то необходимо создать курс для пользователя
                            if (App.oActiveSettingsFrançais == null)
                            {
                                App.oActiveSettingsFrançais = new Settings(App.oSettingsRepository.lSettings, 20, 50, 5, 5);
                            }

                            Course oCourseFrançais = new Course(App.oCourseRepository.lCourse, App.oActiveUser.Id, App.oActiveSettingsEnglish.Id, 1, true);
                            App.oCourseRepository.lCourse.Add(oCourseFrançais);

                            App.oSettingsRepository.lSettings.Add(App.oActiveSettingsFrançais);
                        }

                    }
                    else
                    {
                        //Проверка на наличие у пользователя данного курса
                        foreach (var c in App.oCourseRepository.lCourse)
                        {
                            if (c.Users_Id == App.oActiveUser.Id && c.Languages_Id == 1 && c.Active == true)
                            {// Если у пользователя есть активный курс французского

                                // Деактивировать курс
                                App.oCourseRepository.lCourse.Remove(c);

                                c.Active = false;

                                App.oCourseRepository.lCourse.Add(c);

                                break;
                            }
                        }
                    }

                    this.Close();
                }
                else
                {
                    MessageBox.Show("Язык обучения не выбран!");
                }
            }
        }