Beispiel #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();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Проверить существование теста в БД.
        /// </summary>
        private bool IsExist(DAO.Interviwee Interviwee)
        {
            DAO.Interviwee _FinKey   = GetInterviwee(Interviwee.Id);
            DAO.Interviwee _FindText = GetInterviwee(Interviwee.LastName, Interviwee.FirstName, Interviwee.SecondName);

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

            return(_IsExist);
        }
        public string GetTestsInterviwee(DTO.Interviwee DtoInterviwee)
        {
            DAO.Interviwee _Interviwee = m_InterviweeManagement.GetInterviwee(DtoInterviwee.Id);

            DAO.Test[] _DaoTests = m_InterviweeManagement.GetCompleteTests(_Interviwee);
            DTO.Test[] _DtoTests = Utils.ConverObjectByJson <DTO.Test[]>(_DaoTests);

            string _Json = Utils.JsonSerialize(_DtoTests);

            return(_Json);
        }
Beispiel #4
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);
        }
        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);
        }
Beispiel #6
0
        /// <summary>
        /// Получить список завершенных тестов тестируемого.
        /// </summary>
        public DAO.Test[] GetCompleteTests(DAO.Interviwee Interviwee)
        {
            int[] IdTests = _DbContext
                            .InterviweeTests
                            .Where(x => x.InterviweeId == Interviwee.Id)
                            .Select(x => x.TestId)
                            .ToArray()
            ;

            DAO.Test[] _DaoTests = (from t in _DbContext.Tests
                                    where IdTests.Contains(t.Id)
                                    select t).ToArray();

            return(_DaoTests);
        }
        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);
        }
        public string Auth(DTO.Interviwee DtoInterviwee)
        {
            DAO.Interviwee _DaoInterviwee = m_InterviweeManagement.GetInterviwee(DtoInterviwee.LastName, DtoInterviwee.FirstName, DtoInterviwee.SecondName);

            if (_DaoInterviwee == null)
            {
                _DaoInterviwee = Utils.ConverObjectByJson <DAO.Interviwee>(DtoInterviwee);
                m_InterviweeManagement.CreateInterviwee(_DaoInterviwee);

                _DaoInterviwee = m_InterviweeManagement.GetInterviwee(DtoInterviwee.LastName, DtoInterviwee.FirstName, DtoInterviwee.SecondName);
            }

            DTO.Interviwee _DtoInterviwee = Utils.ConverObjectByJson <DTO.Interviwee>(_DaoInterviwee);
            string         _Json          = Utils.JsonSerialize(_DtoInterviwee);

            return(_Json);
        }
Beispiel #9
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));
        }
        public void CreateInterviewerTest()
        {
            InterviweeManagement _InterviweeManagement = new InterviweeManagement();

            DAO.Interviwee _Interviwee = new DAO.Interviwee()
            {
                LastName   = StaticInterviwee.LasName,
                FirstName  = StaticInterviwee.FirstName,
                SecondName = StaticInterviwee.SecondName
            };

            _InterviweeManagement.CreateInterviwee(_Interviwee);
            _DbContext.SaveChanges();

            _Interviwee = _InterviweeManagement.GetInterviwee(StaticInterviwee.LasName, StaticInterviwee.FirstName, StaticInterviwee.SecondName);
            Assert.True(
                _DbContext.Interviwees.Where(x =>
                                             x.Id == _Interviwee.Id
                                             ).Count() == 1
                );
        }
Beispiel #11
0
        public void CreateInterviwee(DAO.Interviwee Interviwee)
        {
            if (string.IsNullOrEmpty(Interviwee.FirstName))
            {
                throw new Exception("Пустое имя.");
            }
            if (string.IsNullOrEmpty(Interviwee.LastName))
            {
                throw new Exception("Пустая фамилия.");
            }
            if (string.IsNullOrEmpty(Interviwee.SecondName))
            {
                throw new Exception("Пустое отчество.");
            }
            if (IsExist(Interviwee))
            {
                return;
            }

            _DbContext.Interviwees.Add(Interviwee);
            _DbContext.SaveChanges();
        }