public async Task <List <Report> > SubmitExamToTeacher(Exam exam)
        {
            var examQuestions = exam.ExamQuestion.Select(x => new Infrastructure.DataModel.ExamQuestion()
            {
                ExamId = exam.ExamId,
                DestinationConversionId = x.DestinationConversionId,
                SourceConversionId      = x.SourceConversionId,
                ExamQuestionId          = x.ExamQuestionId,

                DestinationConversion = new Infrastructure.DataModel.Conversion()
                {
                    ConversionId     = x.DestinationConversion.ConversionId,
                    ConversionName   = x.DestinationConversion.ConversionName,
                    ConversionTypeId = x.DestinationConversion.ConversionTypeId,
                    ConversionType   = new Infrastructure.DataModel.ConversionType()
                    {
                        ConversionName   = x.DestinationConversion.ConversionType.ConversionName,
                        ConversionTypeId = x.DestinationConversion.ConversionType.ConversionTypeId,
                    }
                },
                SourceConversion = new Infrastructure.DataModel.Conversion()
                {
                    ConversionId     = x.SourceConversion.ConversionId,
                    ConversionName   = x.SourceConversion.ConversionName,
                    ConversionTypeId = x.SourceConversion.ConversionTypeId,
                    ConversionType   = new Infrastructure.DataModel.ConversionType()
                    {
                        ConversionName   = x.SourceConversion.ConversionType.ConversionName,
                        ConversionTypeId = x.SourceConversion.ConversionType.ConversionTypeId,
                    }
                },
                InputValue         = x.InputValue,
                ExamQuestionAnswer = x.ExamQuestionAnswer.Select(y => new Infrastructure.DataModel.ExamQuestionAnswer()
                {
                    Answer = y.Answer,
                    ExamQuestionAnswerId = y.ExamQuestionAnswerId,
                    IsAnswered           = y.IsAnswered,
                    ExamQuestionId       = x.ExamQuestionId
                }).ToList()
            }).ToList();
            var convertionTable = await _testRepository.GetConversionTable();

            bool isGraded = await _conversionService.GradeExam(examQuestions, convertionTable);

            var reports = examQuestions.Select(x =>
                                               new Report()
            {
                ExamId              = x.ExamId,
                InputUnitOfMeasure  = x.SourceConversion.ConversionName,
                InputValue          = x.InputValue,
                StudentResponse     = x.ExamQuestionAnswer.FirstOrDefault().Answer,
                IsCorrect           = x.ExamQuestionAnswer.FirstOrDefault().IsCorrect,
                OutPutUnitOfMeasure = x.DestinationConversion.ConversionName,
                ExamQuestion        = exam.ExamQuestion.FirstOrDefault(),
                ExamDate            = exam.DateCreated,
                ExamDescription     = exam.Description
            }).ToList();

            return(reports);
        }
Ejemplo n.º 2
0
        public async Task <List <Report> > SubmitExamToTeacher(Exam exam)
        {
            var examQuestions = await _testRepository.GetExamQuestions(exam.ExamId);

            var convertionTable = await _testRepository.GetConversionTable();

            bool isGraded = await _conversionService.GradeExam(examQuestions, convertionTable);

            if (isGraded)
            {
                var examData = new Infrastructure.DataModel.Exam()
                {
                    ExamId        = exam.ExamId,
                    IsComplete    = true,
                    IsGraded      = true,
                    DateCompleted = DateTime.Now.ToLocalTime(),
                };
                await _testRepository.SubmitExamToStudent(examData);
            }
            var reports = examQuestions.Select(x =>
                                               new Report()
            {
                ExamId              = x.ExamId,
                InputUnitOfMeasure  = x.SourceConversion.ConversionName,
                InputValue          = x.InputValue,
                StudentID           = exam.StudentId,
                StudentName         = exam.StudentName,
                StudentResponse     = x.ExamQuestionAnswer.FirstOrDefault().Answer,
                IsCorrect           = x.ExamQuestionAnswer.FirstOrDefault().IsCorrect,
                OutPutUnitOfMeasure = x.DestinationConversion.ConversionName,
                TeacherName         = exam.TeacherName,
                TeacherID           = exam.TeacherId,
                ExamDate            = x.Exam.DateCreated,
                ExamDescription     = x.Exam.Description
            }).ToList();

            return(reports);
        }