/// <summary>
 /// remove all questions of the test
 /// </summary>
 /// <param name="test"></param>
 private void RemoveAllQuestions(CourseTest test)
 {
     foreach (var question in test.Questions)
     {
         dbContext.TestQuestions.Remove(question);
     }
 }
Beispiel #2
0
        public void Add(AddCourseTestVM testToAdd, string courseId)
        {
            var mappedQuestions = testToAdd.Questions.ToModels();

            ThrowIfInvalidQuestion(mappedQuestions);

            var test = new CourseTest(testToAdd.Topic, mappedQuestions.ToList(), testToAdd.Weight, testToAdd.Deadline, testToAdd.IsGraded);

            courseTestService.AddToCourse(test, courseId);

            courseTestService.CommitChanges();
        }
        /// <summary>
        /// create new empty <see cref="TestSubmission"/>
        /// </summary>
        /// <param name="courseMember"><see cref="CourseMember"/> of the test submission</param>
        /// <param name="testWithQuestions">given <see cref="CourseTest"/> of the test submission</param>
        /// <returns>empty <see cref="TestSubmission"/></returns>
        private TestSubmission CreateEmptySubmission(CourseMember courseMember, CourseTest testWithQuestions)
        {
            var emptyAnswers = testWithQuestions.Questions.Select(
                question => new TestSubmissionAnswer(question, string.Empty));

            var emptyTestSubmission = new TestSubmission(testWithQuestions, courseMember,
                                                         emptyAnswers.ToList());

            dbContext.TestSubmissions.Add(emptyTestSubmission);

            return(emptyTestSubmission);
        }
Beispiel #4
0
        public void New_SetsIdAndCourseAndTest()
        {
            //Given
            Course course = new Course();
            Test   test   = new Test();
            //When
            CourseTest courseTest = new CourseTest(test, course);

            //Then
            Assert.NotEqual(Guid.Empty, courseTest.Id);
            Assert.Equal(course, courseTest.Course);
            Assert.Equal(test, courseTest.Test);
        }
        /// <inheritdoc/>
        public TestSubmission LoadOrCreateSubmission(CourseTest testWithQuestions, CourseMember courseMember)
        {
            var foundSubmission = TryGetSubmissionByCourseMemberAndTest(courseMember, testWithQuestions);

            // submission not found -> create empty
            if (foundSubmission == null)
            {
                return(CreateEmptySubmission(courseMember, testWithQuestions));
            }
            else
            {
                return(foundSubmission);
            }
        }
Beispiel #6
0
        public async Task <IActionResult> OnGetAsync(int teid)
        {
            if (teid == null)
            {
                return(NotFound());
            }

            CourseTest = await _context.CourseTest.FirstOrDefaultAsync(m => m.CourseTestId == teid);

            if (CourseTest == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Beispiel #7
0
        public TestSubmissionEvaluatorTests()
        {
            testSubmissionEvaluator = new TestSubmissionEvaluator();

            questions = new List <TestQuestion>()
            {
                new TestQuestion(1, "What's the capital city of Russia?", "Moscow", 3, Data.QuestionType.TextAnswer),
                new TestQuestion(2, "What's the capital city of Japan?", "Tokyo", 2, Data.QuestionType.TextAnswer),
                new TestQuestion(3, "What's the capital city of the UK?", "London", 1, Data.QuestionType.TextAnswer),
            };

            var courseTest = new CourseTest(string.Empty, questions, 0, DateTime.Now, true);

            submissionToEvaluate = new TestSubmission(courseTest, null, new List <TestSubmissionAnswer>());
        }
Beispiel #8
0
        public async Task <IActionResult> OnGetAsync(int teid)
        {
            if (teid == null)
            {
                return(NotFound());
            }

            CourseTest = await _context.CourseTest.Where(m => m.CourseTestId == teid).Include(co => co.QuestionList).ThenInclude(cu => cu.OptionList).FirstAsync();

            if (CourseTest == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Beispiel #9
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            CourseTest = await _context.CourseTest.FindAsync(id);

            if (CourseTest != null)
            {
                _context.CourseTest.Remove(CourseTest);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
        public ActionResult AddNewTest_Post(TaxCourse taxcourse)
        {
            var CourseTest = this._CourseTest.Find(x => x.CourseId == taxcourse.Id).FirstOrDefault();


            if (CourseTest != null)
            {
                CourseTest.FormId = taxcourse.FormId;
                this._CourseTest.Update(CourseTest);
            }
            else
            {
                CourseTest newTest = new CourseTest();
                newTest.FormId   = taxcourse.FormId;
                newTest.CourseId = taxcourse.Id;
                this._CourseTest.Add(newTest);
            }
            return(RedirectToAction("AddNewTest", taxcourse));
        }
        /// <summary>
        /// try to get <see cref="TestSubmission"/> that belongs to the given <see cref="CourseMember"/> and <see cref="CourseTest"/>
        /// </summary>
        /// <param name="courseMember">given <see cref="CourseMember"/> of the test submission</param>
        /// <param name="courseTest">given <see cref="CourseTest"/> of the test submission</param>
        /// <returns><see cref="TestSubmission"/> if exists, otherwise NULL</returns>
        private TestSubmission TryGetSubmissionByCourseMemberAndTest(CourseMember courseMember, CourseTest courseTest)
        {
            var courseMemberSubmission = GetAllSubmittedWithTestAndStudent(true)
                                         .Where(ts => ts.Student.Id == courseMember.Id);

            return(courseMemberSubmission
                   .SingleOrDefault(ts => ts.Test.Id == courseTest.Id));
        }
 /// <summary>
 /// check if the test is published
 /// </summary>
 /// <param name="test">test to check</param>
 /// <returns></returns>
 private bool IsPublished(CourseTest test)
 {
     return(test.Status == TestStatus.Published);
 }
 /// <inheritdoc/>
 public void Publish(CourseTest test)
 {
     test.Status = TestStatus.Published;
 }
        /// <inheritdoc/>
        public void AddToCourse(CourseTest test, string courseId)
        {
            var course = dbContext.Courses.FindById(courseId);

            course.Tests.Add(test);
        }
        public void GenerateTestData(string person1Id, string person2Id, string person3Id, string person4Id)
        {
            var person1 = peopleService.GetById(person1Id);
            var person2 = peopleService.GetById(person2Id);
            var person3 = peopleService.GetById(person3Id);
            var person4 = peopleService.GetById(person4Id);

            // create courses

            var programmingCourse = new Course("Programming", person1);
            var geographyCourse   = new Course("Geography", person2);

            dbContext.Courses.Add(programmingCourse);
            dbContext.Courses.Add(geographyCourse);

            // create tests

            var geographyTestQuestions = new List <TestQuestion>()
            {
                new TestQuestion(1, $"What's the capital city of Germany?", "Berlin", 3, QuestionType.TextAnswer),
                new TestQuestion(2, $"Which of these cities are located in Czechia? {acd}A{ltd}Praha{acd}B{ltd}Brno{acd}C{ltd}Vienna",
                                 "A,B", 6, QuestionType.MultipleChoice)
            };
            var geographyTest = new CourseTest("Geography of Europe", geographyTestQuestions, 5, endOfYear2021, true)
            {
                Status = TestStatus.Published
            };

            geographyCourse.Tests.Add(geographyTest);

            var geographyQuiz = new CourseTest("Quiz - Czechia",
                                               new List <TestQuestion> {
                new TestQuestion(1, "What's the capital of Czechia?", "Prague", 5, QuestionType.TextAnswer)
            },
                                               1, endOfYear2021, false);

            geographyCourse.Tests.Add(geographyQuiz);

            // --------------------------

            var programmingTestQuestions = new List <TestQuestion> {
                new TestQuestion(1,
                                 $"Is Java language statically typed? {acd}A{ltd}Yes{acd}B{ltd}No",
                                 "A", 1, QuestionType.SingleChoice),
                new TestQuestion(2,
                                 $"Which of these languages support functional programming? {acd}A{ltd}Haskell{acd}B{ltd}F#",
                                 $"A{ald}B", 4, QuestionType.MultipleChoice)
            };
            var programmingTest = new CourseTest("Programming languages test", programmingTestQuestions, 5, endOfYear2021, true)
            {
                Status = TestStatus.Published
            };

            programmingCourse.Tests.Add(programmingTest);

            var dotnetTest = new CourseTest(".NET CLI test",
                                            new List <TestQuestion> {
                new TestQuestion(1, "What command do we use for building .NET Core app from the command line?", "dotnet build", 2, QuestionType.TextAnswer)
            },
                                            2, endOfYear2021, true)
            {
                Status = TestStatus.Published
            };

            programmingCourse.Tests.Add(dotnetTest);

            // create course members

            var person1geographyCourse   = new CourseMember(person1, geographyCourse);
            var person3programmingCourse = new CourseMember(person3, programmingCourse);
            var person4geographyCourse   = new CourseMember(person4, geographyCourse);

            dbContext.CourseMembers.Add(person1geographyCourse);
            dbContext.CourseMembers.Add(person3programmingCourse);
            dbContext.CourseMembers.Add(person4geographyCourse);

            // create enrollment requests

            var person4programmingCourse = new EnrollmentRequest(programmingCourse, person4);

            dbContext.EnrollmentRequests.Add(person4programmingCourse);

            // create posts

            dbContext.Posts.Add(new ForumPost("Hello everyone, welcome to Programming course!", person1, programmingCourse));

            // create grades

            dbContext.Grades.Add(new Grade(1, "", "Activity 20.6.", 1, person1geographyCourse));
            dbContext.Grades.Add(new Grade(1, "", "Points for activity", 1, person3programmingCourse));

            // create test submissions

            var submittedAnswers1 = new List <TestSubmissionAnswer>
            {
                new TestSubmissionAnswer(geographyTestQuestions[0], "Berlin"),
                new TestSubmissionAnswer(geographyTestQuestions[1], $"A{ald}B{ald}C")
            };
            var geographyTestPerson1 = new TestSubmission(geographyTest, person1geographyCourse, submittedAnswers1)
            {
                IsSubmitted = true, SubmittedDateTime = DateTime.UtcNow
            };

            var submittedAnswers4 = new List <TestSubmissionAnswer>
            {
                new TestSubmissionAnswer(geographyTestQuestions[0], "Hamburg"),
                new TestSubmissionAnswer(geographyTestQuestions[1], $"A{ald}B{ald}")
            };
            var geographyTestPerson4 = new TestSubmission(geographyTest, person4geographyCourse, submittedAnswers4)
            {
                IsSubmitted = true, SubmittedDateTime = DateTime.UtcNow
            };

            var submittedAnswers31 = new List <TestSubmissionAnswer>
            {
                new TestSubmissionAnswer(programmingTestQuestions[0], "B"),
                new TestSubmissionAnswer(programmingTestQuestions[1], $"A{ald}B")
            };
            var programmingTestPerson3 = new TestSubmission(programmingTest, person3programmingCourse, submittedAnswers31)
            {
                IsSubmitted = true, SubmittedDateTime = DateTime.UtcNow
            };

            var submittedAnswers32 = new List <TestSubmissionAnswer>
            {
                new TestSubmissionAnswer(dotnetTest.Questions.First(), "F5 in Visual Studio")
                {
                    Comment = "The question was about the build from command line."
                }
            };
            var dotnetTestPerson3 = new TestSubmission(dotnetTest, person3programmingCourse, submittedAnswers32)
            {
                IsSubmitted = true, IsReviewed = true
            };

            var allSubmissions = new List <TestSubmission> {
                geographyTestPerson1, geographyTestPerson4, programmingTestPerson3, dotnetTestPerson3
            };

            allSubmissions.ForEach(submission => testSubmissionEvaluator.Evaluate(submission));

            dbContext.TestSubmissions.AddRange(allSubmissions);

            // save the changes

            dbContext.SaveChanges();
        }