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); }
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); }