Пример #1
0
        public void StartTest()
        {
            DbPgSqlContext _DbContext = DbPgSqlContext.Instance();

            using (var _Trns = _DbContext.Database.BeginTransaction())
            {
                Interviwee _Interviwee = new DAO.Interviwee()
                {
                    FirstName = "sdad", LastName = "adasd"
                };
                _Interviwee = _DbContext.Interviwees.Add(_Interviwee);
                Test _Test = new DAO.Test()
                {
                    Name = "sdasdasd"
                };
                _Test = _DbContext.Tests.Add(_Test);
                _DbContext.SaveChanges();

                InterviweeTests _Result = _TestingManagement.GetTesting(_Interviwee, _Test);
                _DbContext.SaveChanges();

                Assert.True(_Result.Id > 0);

                _Trns.Rollback();
            }
        }
        public string CreateTest(DTO.Test DtoTest)
        {
            DAO.Test _DaoTest = Utils.ConverObjectByJson <DAO.Test>(DtoTest);

            m_TestManagement.CreateTest(_DaoTest);

            return(string.Empty);
        }
Пример #3
0
        /// <summary>
        /// Проверить существование теста в БД.
        /// </summary>
        private bool IsExist(DAO.Test Test)
        {
            DAO.Test _FinKey   = GetTest(Test.Id);
            DAO.Test _FindText = GetTest(Test.Name);

            bool _IsExist = _FinKey != null || _FindText != null;

            return(_IsExist);
        }
Пример #4
0
        /// <summary>
        /// Сохранить изменения.
        /// </summary>
        /// <param name="Test">Объект для фиксирования изменений.</param>
        public void SaveTest(DAO.Test Test)
        {
            if (_DbContext.Entry(Test).State == EntityState.Detached)
            {
                _DbContext.Entry(Test).State = EntityState.Modified;
            }

            _DbContext.SaveChanges();
        }
        public string GetTest(int Id)
        {
            DAO.Test _Test    = m_TestManagement.GetTest(Id);
            DTO.Test _DtoTest = Utils.ConverObjectByJson <DTO.Test>(_Test);

            string _JsonFormat = Utils.JsonSerialize(_DtoTest);

            return(_JsonFormat);
        }
        public string SaveChangeTest(DTO.Test DtoTest)
        {
            DAO.Test _DaoTest = m_TestManagement.GetTest(DtoTest.Id);
            _DaoTest.Name        = DtoTest.Name;
            _DaoTest.Description = DtoTest.Description;

            m_TestManagement.SaveTest(_DaoTest);

            return(string.Empty);
        }
        public string GetListQuestionForTest(int Id)
        {
            DAO.Test       _DaoTest      = m_TestManagement.GetTest(Id);
            DAO.Question[] _DaoQuestions = _DaoTest.Questions.Select(x => x.Question).ToArray();

            DTO.Question[] _DtoQuestions     = Utils.ConverObjectByJson <DTO.Question[]>(_DaoQuestions);
            string         _DtoQuestionsJson = Utils.JsonSerialize(_DtoQuestions);

            return(_DtoQuestionsJson);
        }
Пример #8
0
        /// <summary>
        /// Создать тест.
        /// </summary>
        public void CreateTest(DAO.Test Test)
        {
            if (IsExist(Test))
            {
                return;
            }

            _DbContext.Tests.Add(Test);
            _DbContext.SaveChanges();
        }
        public string AddQuestionToTest(DTO.TestQuestions DtoTestQuestion)
        {
            DAO.Test     _Test     = m_TestManagement.GetTest(DtoTestQuestion.TestId);
            DAO.Question _Question = m_QuestionManagement.GetQuestion(DtoTestQuestion.QuestionId);

            if (_Test != null && _Question != null)
            {
                m_TestManagement.AddQuestion(_Test, _Question);
            }

            return(string.Empty);
        }
Пример #10
0
        /// <summary>
        /// Получить процесс тестирования.
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        internal InterviweeTests GetTesting(DAO.Interviwee Interviwee, DAO.Test Test)
        {
            // Найдем незавершенный тест.
            // Сначала необходимо завершить предыдущий, потом начинать заново.
            DAO.InterviweeTests _InterviweeTest = _DbContext.InterviweeTests
                                                  .Include(x => x.Test)
                                                  .Include(x => x.Interviwee)
                                                  .Include(x => x.TestingResults)
                                                  .Where(x => x.InterviweeId == Interviwee.Id & x.TestId == Test.Id & x.IsComplete == false)
                                                  .SingleOrDefault();

            return(_InterviweeTest);
        }
Пример #11
0
        public void CreateTest()
        {
            TestManagement _TestManagement = new TestManagement();

            DAO.Test _Test = new DAO.Test()
            {
                Name = StaticTests.T1, Description = "Проверка создания тестов."
            };

            _TestManagement.CreateTest(_Test);
            _DbContext.SaveChanges();

            Assert.True(_TestManagement.GetTest(StaticTests.T1).Id > 0);
        }
Пример #12
0
        public void TestingTest()
        {
            TestManagement       _TestManagement       = new TestManagement();
            InterviweeManagement _InterviweeManagement = new InterviweeManagement();

            KnowledgeTesting.BL.Testing _Testing = new KnowledgeTesting.BL.Testing();



            DAO.Interviwee _Interviwee = _InterviweeManagement.GetInterviwee(StaticInterviwee.LasName, StaticInterviwee.FirstName, StaticInterviwee.SecondName);
            DAO.Test       _Test       = _TestManagement.GetTest(StaticTests.T1);

            int _CountCompleteTeststBefore = _Interviwee.Tests.Count();

            DAO.InterviweeTests _InterviweeTests = _Testing.GetTesting(_Interviwee, _Test);

            // Количество отвеченных вопросов
            // (в конце на 1 больше чем вопрсов из-за последнего прохода цикла для определения статуса завершения).
            int _CountQuestions = 0;

            while (!_InterviweeTests.IsComplete)
            {
                // Определить статус завершения.
                _InterviweeTests.IsComplete = _Testing.DetermineStatusComplete(_InterviweeTests);

                if (!_InterviweeTests.IsComplete)
                {
                    // Получить следующий вопрос.
                    DAO.Question _Question = _Testing.GetNextQuestion(_InterviweeTests);
                    // Отвтеить на вопрос.
                    if (_Question != null)
                    {
                        _Testing.AnswerToQuestion(_InterviweeTests, _Question, _Question.Answers.First().Answer);
                    }
                }

                // Сохранить изменения - БЕЗ этого не возможно определить статус завершения теста.
                _DbContext.SaveChanges();

                _CountQuestions++;
                Assert.True(_CountQuestions <= 10);
            }

            int _CountCompleteTeststAfter = _Interviwee.Tests.Count();

            Assert.True(_DbContext.InterviweeTests.Where(x => x.Id == _InterviweeTests.Id).First().IsComplete);
            Assert.True(_CountCompleteTeststAfter > _CountCompleteTeststBefore);
            Assert.True(_InterviweeTests.TestingResults.Count() > 0);
        }
Пример #13
0
        public void AddQuestionToTest()
        {
            TestManagement     _TestManagement     = new TestManagement();
            QuestionManagement _QuestionManagement = new QuestionManagement();

            DAO.Test _Test = _TestManagement.GetTest(StaticTests.T1);
            _TestManagement.AddQuestion(_Test, _QuestionManagement.GetQuestion(StaticQuestions.Q1));
            _TestManagement.AddQuestion(_Test, _QuestionManagement.GetQuestion(StaticQuestions.Q2));
            _TestManagement.AddQuestion(_Test, _QuestionManagement.GetQuestion(StaticQuestions.Q3));
            _TestManagement.AddQuestion(_Test, _QuestionManagement.GetQuestion(StaticQuestions.Q4));
            _TestManagement.AddQuestion(_Test, _QuestionManagement.GetQuestion(StaticQuestions.Q5));
            _DbContext.SaveChanges();

            Assert.True(_Test.Questions.Where(x => x.QuestionId == _QuestionManagement.GetQuestion(StaticQuestions.Q3).Id).Count() == 1);
        }
        public string StartTest(DTO.InterviweeTest DtoInterviweeTest)
        {
            // Получим объекты параметры для старта прохождения теста.
            DAO.Interviwee _DaoInterviwee = m_InterviweeManagement.GetInterviwee(DtoInterviweeTest.InterviweeId);
            DAO.Test       _DaoTest       = m_TestManagement.GetTest(DtoInterviweeTest.TestId);

            // Создадим прохождение теста.
            DAO.InterviweeTests _DaoInterviweeTest = m_Testing.StartTesting(_DaoInterviwee, _DaoTest);
            // Заполним объект для клиента.
            DTO.InterviweeTest _DtoInterviweeTest = Utils.ConverObjectByJson <DTO.InterviweeTest>(_DaoInterviweeTest);
            _DtoInterviweeTest.ProgressText = GetTextProgressTesting(_DaoInterviweeTest);

            string _Json = GetNextQuestion(_DtoInterviweeTest);

            return(_Json);
        }
Пример #15
0
        public void CreateTest()
        {
            using (var _Transaction = _DbContext.Database.BeginTransaction())
            {
                DAO.Test _Test = new DAO.Test()
                {
                    Name = "CreateTest", Description = "Descr"
                };

                Assert.DoesNotThrow(() => _TestManagement.CreateTest(_Test));
                _DbContext.SaveChanges();

                var _FindTest = _DbContext.Tests.Where(x => x.Name == _Test.Name).SingleOrDefault();
                Assert.True(_FindTest != null);

                _Transaction.Rollback();
            }
        }
Пример #16
0
        /// <summary>
        /// Начать/получить процесс тестирования.
        /// </summary>
        public DAO.InterviweeTests StartTesting(DAO.Interviwee Interviwee, DAO.Test Test)
        {
            DAO.InterviweeTests _InterviweeTest = GetTesting(Interviwee, Test);

            // Не нашли - создать прохождение теста.
            if (_InterviweeTest != null)
            {
                return(_InterviweeTest);
            }

            _InterviweeTest = new DAO.InterviweeTests()
            {
                InterviweeId = Interviwee.Id,
                TestId       = Test.Id,
                IsComplete   = false
            };

            return(StartTesting(_InterviweeTest));
        }
Пример #17
0
        public void SaveTest()
        {
            using (var _Transaction = _DbContext.Database.BeginTransaction())
            {
                DAO.Test _Test = new DAO.Test()
                {
                    Name = "CreateTest", Description = "Descr"
                };
                _TestManagement.CreateTest(_Test);
                _DbContext.SaveChanges();

                _Test      = _TestManagement.GetTest(_Test.Name);
                _Test.Name = "TestChangeName";
                _TestManagement.SaveTest(_Test);

                var _TestResult = _TestManagement.GetTest(_Test.Name);
                Assert.True(_TestResult.Name == "TestChangeName");
                Assert.True(_TestResult.Id == _Test.Id);
            }
        }
Пример #18
0
        /// <summary>
        /// Добавить вопрос в тест.
        /// </summary>
        /// <param name="Test"></param>
        /// <param name="Question"></param>
        public void AddQuestion(DAO.Test Test, DAO.Question Question)
        {
            if (Test.Questions.Where(x => x.QuestionId == Question.Id).Count() == 1)
            {
                return;
            }
            if (Test.Questions.Count() >= 10)
            {
                throw new Exception("В тесте максимум 10 вопрсов.");
            }
            if (Question.Answers.Where(x => x.IsCorrect).Count() == 0)
            {
                throw new Exception("В вопросе не указан правильный ответ.");
            }

            DAO.TestQuestions _TestQuestion = new DAO.TestQuestions()
            {
                TestId     = Test.Id,
                QuestionId = Question.Id
            };

            _DbContext.TestQuestions.Add(_TestQuestion);
            _DbContext.SaveChanges();
        }
Пример #19
0
 /// <summary>
 /// Получить состояние объекта в БД.
 /// </summary>
 /// <param name="Test"></param>
 /// <returns></returns>
 public EntityState GetState(DAO.Test Test)
 {
     return(_DbContext.Entry(Test).State);
 }