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); }
/// <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); }
/// <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); }
/// <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); }
/// <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 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); }
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); }
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); }
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(); } }
/// <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 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); } }
/// <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(); }
/// <summary> /// Получить состояние объекта в БД. /// </summary> /// <param name="Test"></param> /// <returns></returns> public EntityState GetState(DAO.Test Test) { return(_DbContext.Entry(Test).State); }