// certDate need to be default public static bool GenerateReport(ReportType reportType, string path, uint groupID, uint teacherID, uint disciplineID, DateTime?certDate = null) { IReport report = null; switch (reportType) { case ReportType.CERTIFICATION: report = new CertificationReport(); break; case ReportType.EXAM: report = new ExamReport(); break; case ReportType.NONE: return(false); } if (report == null) { return(false); } try { return(report.GenerateReport(path, groupID, disciplineID, teacherID, certDate)); } catch (Exception ex) { NLog.LogManager.GetCurrentClassLogger().Error(ex); return(false); } }
public async Task <ExamReport> SaveAsync <V>(int userId, ExamReport examReport) where V : AbstractValidator <ExamReport> { var medic = await _medicService.FindByIdAsync(userId); if (!(medic is Medic)) { throw new Exception("Usuario não é um médico"); } var examRequest = await _examRequestService.FindByIdAsync(examReport.ExamRequestId); if (examRequest == null) { throw new Exception("Pedido de exame não existe"); } var newExamReport = new ExamReport { Medic = medic, ExamRequest = examRequest, Description = examReport.Description, Cid = examReport.Cid, Status = ExamReportStatus.ANDAMENTO }; var report = await _examReportRepository.SaveAsync(newExamReport); await _unitOfWork.CompleteAsync(); return(report); }
public ExamReport GetIndividualCustomerReport(Guid assessmentID, Guid userID) { ExamReport examReport = new ExamReport(); try { examReport.UserID = userID; examReport.AssessMentID = assessmentID; using (DBEntities dBEntities = new DBEntities()) { dBEntities.Configuration.ProxyCreationEnabled = false; var userDetails = dBEntities.DefaultRegistations.FirstOrDefault(x => x.ID == userID); var assessmentMaster = dBEntities.AssessmentDetailMasters.FirstOrDefault(x => x.ID == assessmentID); if (userDetails != null) { examReport.Address = userDetails.Address; examReport.CandidateEmail = userDetails.Email; examReport.CandidateName = userDetails.Name; examReport.State = userDetails.State; examReport.TestDate = Convert.ToDateTime(assessmentMaster.ScheduledEndDatetime); examReport.TestDetails = GetTestDetails(assessmentID, userID); examReport.AssessmentName = assessmentMaster.AssessmentName; } } } catch (Exception) { throw; } return(examReport); }
public async Task InputtingDifferentChoicesAsAnswers() { // Arrange I Class @class = new Class { State = ClassState.Running }; Participant student1 = new Participant { Type = ParticipantType.Student }; Participant student2 = new Participant { Type = ParticipantType.Student }; Participant teacher = new Participant { Type = ParticipantType.Teacher }; Exam exam = SampleExam(teacher); // Act @class = await _classHandlerService.AddClass(teacher.Id, @class); student1 = await _classHandlerService.AddParticipant(student1, @class.Id); student2 = await _classHandlerService.AddParticipant(student2, @class.Id); exam = await _examHandlingService.AddExam(exam); ExamReport examReport = await _classHandlerService.PutExam(exam.Id); await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "1", Response = "Letter" }); // Assert Func <Task <QuestionResponse> > action = async() => await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "1", Response = "Vehicle" }); await Assert.ThrowsAsync <IncorrectAnswerChoiceException>(action); }
public ActionResult <object> GetList(Guid studentId, Guid termId) { try { Init(); var list = _unitOfWorkService.ExamService.GetListByStudentIDAndTermID(studentId, termId, ref _sbError); var report = new { ExamList = list, ExamAverage = ExamReport.ToOveralAverageExam(list) }; return(report); } catch (Exception er) { return(Error(er)); } }
public async void UpdateStatus(int userId, ExamReport examReport) { var medic = await _medicService.FindByIdAsync(userId); if (medic == null) { throw new Exception("Médico inválido"); } if (examReport.Status == ExamReportStatus.APROVADO || examReport.Status == ExamReportStatus.NEGADO) { _examReportRepository.UpdateStatus(examReport); return; } else { throw new Exception("Status inválido"); } }
public ActionResult GetIndividualReport(Guid userID, Guid assessmentID) { ExamReport examReport = new ExamReport(); try { string apiUrl = System.Configuration.ConfigurationManager.AppSettings["WebApiUrl"]; HttpClient client = new HttpClient(); HttpResponseMessage response = client.GetAsync(apiUrl + "/Assessment/GetIndividualCustomerReport?assessmentId=" + assessmentID + "&userID=" + userID).Result; if (response.IsSuccessStatusCode) { var retresult = response.Content.ReadAsStringAsync().Result; examReport = JsonConvert.DeserializeObject <ExamReport>(retresult); } } catch (Exception ex) { throw; } //return new ViewAsPdf("_CustomerInvoice", examReport); return(PartialView("_CustomerInvoice", examReport)); }
public async Task ShouldNotSubmitAfterExamFinishNorLaterNorBeforeStart() { // Arrange Class @class = new Class { State = ClassState.Running }; Participant student1 = new Participant { Type = ParticipantType.Student }; Participant teacher = new Participant { Type = ParticipantType.Teacher }; Exam exam = SampleExam(teacher); // Act I @class = await _classHandlerService.AddClass(teacher.Id, @class); student1 = await _classHandlerService.AddParticipant(student1, @class.Id); exam = await _examHandlingService.AddExam(exam); ExamReport examReport = await _classHandlerService.PutExam(exam.Id, false); // Assert I Func <Task <QuestionResponse> > action = async() => await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "1", Response = "Letter" }); await Assert.ThrowsAsync <ExamNotRunningException>(action); // Act II // Scenario: emergency happened, not able to continue exam await _classHandlerService.ModifyExamState(teacher.Id, @class.Id, exam.Id, ExamReportStatus.Finished); // Assert II // And a student wants to submit action = async() => await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "1", Response = "Letter" }); await Assert.ThrowsAsync <ExamNotRunningException>(action); // MISC scenarios not related to the previous // Act III // Scenario: Cannot submit to a marked exam await _classHandlerService.ModifyExamState(teacher.Id, @class.Id, exam.Id, ExamReportStatus.Marked); // Assert III action = async() => await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "1", Response = "Letter" }); await Assert.ThrowsAsync <ExamNotRunningException>(action); }
public async Task CreateExamAndAddToClassAndMakeSureStudentsAndTeachersViewIt() { // Arrange I Class @class = new Class { State = ClassState.Running }; Participant student1 = new Participant { Type = ParticipantType.Student }; Participant teacher = new Participant { Type = ParticipantType.Teacher }; Exam exam = SampleExam(teacher); // Act I @class = await _classHandlerService.AddClass(teacher.Id, @class); student1 = await _classHandlerService.AddParticipant(student1, @class.Id); exam = await _examHandlingService.AddExam(exam); // Assert I Assert.Equal(exam.Id, (await _examHandlingService.GetExam(teacher.Id, exam.Id)).Id); // Act II ExamReport examReport = await _classHandlerService.PutExam(exam.Id); // Attempting questions foreach (var question in exam.Questions) { await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = question.Id, Response = "2" }); } int totalMark = await _classHandlerService.GetExamScore(student1.Id, examReport.Id); // Assert II Assert.Equal(exam.Id, examReport.Exam.Id); Assert.Equal(0, totalMark); // Act & Assert III examReport = await _classHandlerService.PutExam(exam.Id); // Attempting questions by a teacher which should throw foreach (var question in exam.Questions) { Func <Task <QuestionResponse> > action = async() => await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = exam.Id, StudentId = teacher.Id, QuestionId = question.Id, Response = "Letter" }); await Assert.ThrowsAsync <TeacherCannotRespondToQuestionException>(action); } // Act IV // Get full score await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "1", Response = "Letter" }); await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "2", Response = "Vehicle" }); totalMark = await _classHandlerService.GetExamScore(student1.Id, examReport.Id); // Assert IV Assert.Equal(2, totalMark); }
public async Task AbilityForStudentToOverrideHisAnswerWhileExamIsRunning() { // Arrange Class @class = new Class { State = ClassState.Running }; Participant student1 = new Participant { Type = ParticipantType.Student }; Participant teacher = new Participant { Type = ParticipantType.Teacher }; Exam exam = SampleExam(teacher); // Act I @class = await _classHandlerService.AddClass(teacher.Id, @class); student1 = await _classHandlerService.AddParticipant(student1, @class.Id); exam = await _examHandlingService.AddExam(exam); ExamReport examReport = await _classHandlerService.PutExam(exam.Id); await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "1", Response = "Letter" }); await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "2", Response = "Game" }); await _classHandlerService.RespondToQuestion(new StudentQuestionResponseDTO { ExamReportId = examReport.Id, StudentId = student1.Id, QuestionId = "1", Response = "Letter" }); // Assert I int score = await _classHandlerService.GetExamScore(student1.Id, examReport.Id); Assert.Equal(1, score); // Act I await _classHandlerService.ModifyExamState(teacher.Id, @class.Id, exam.Id, ExamReportStatus.Finished); // Assert II score = await _classHandlerService.GetExamScore(student1.Id, examReport.Id); Assert.Equal(2, score); }