public SemesterDetail GetById(int id) { //SemesterExam semesterExam = context.SemesterExams.Include(SE => SE.); //var query = from SE in context.SemesterExams.Include(SE.) // where SE.ID == id // select SE; context.Configuration.LazyLoadingEnabled = false; List <User> users = context.Users.ToList(); List <SemesterExam> semesterExams = context.SemesterExams.ToList(); SemesterExam_User semesterExam_Users = context.SemesterExamUsers.Where(SU => SU.SemesterExam.ID == id && SU.Type == 1).FirstOrDefault(); SemesterExam semesterExam = context.SemesterExams.Find(id); SemesterDetail semesterDetail = new SemesterDetail(); try { semesterDetail.ID = semesterExam.ID; semesterDetail.SemesterName = semesterExam.SemesterName; if (semesterExam.StartDay != null) { } semesterDetail.StartDay = semesterExam.StartDay.ToString(); semesterDetail.EndDay = semesterExam.EndDay.ToString(); if (semesterExam_Users != null) { semesterDetail.Creator = semesterExam_Users.User.FullName; } semesterDetail.Code = semesterExam.Code; if (semesterExam.status == 1) { semesterDetail.status = "Public"; } if (semesterExam.status == 2) { semesterDetail.status = "Draft"; } if (semesterExam.status == 0) { semesterDetail.status = "Done"; } var QT = from TR in context.TestResults join U in context.Users on TR.UserId equals U.UserId join SU in context.SemesterExamUsers on U.UserId equals SU.User.UserId where SU.Type == 2 && SU.SemesterExam.ID == id select TR; int participation = QT.ToList().Count; semesterDetail.NumberInvite = Convert.ToString(participation); } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } return(semesterDetail); }
public Model.ViewModel.ReportSemester Report(int id) { SemesterExam semesterExam = context.SemesterExams.Find(id); SemesterExam_User semesterExam_Users = context.SemesterExamUsers.Where(SU => SU.SemesterExam.ID == id && SU.Type == 1).FirstOrDefault(); var query = from E in context.Exams join T in context.Tests on E.Id equals T.ExamId join SE in context.SemesterExamUsers on T.ExamId equals SE.ID select E; //var queryCandiates = from SEU in context.SemesterExamUsers // join SE in context.SemesterExams on SEU.SemesterExam.ID equals id // //where SEU.Type == 2 // select SEU; int numCandiates = context.SemesterExamUsers.Where(SEU => SEU.SemesterExam.ID == id && SEU.Type == 2) .ToList().Count; List <SemesterExam_User> list = context.SemesterExamUsers .Where(SEU => SEU.SemesterExam.ID == id && SEU.Type == 2).ToList(); var QT = from TR in context.TestResults join U in context.Users on TR.UserId equals U.UserId join SU in context.SemesterExamUsers on U.UserId equals SU.User.UserId where SU.Type == 2 && SU.SemesterExam.ID == id select TR; int low = 0; int medium = 0; int good = 0; foreach (TestResult item in QT.ToList()) { if (item.Score < 4) { low++; } if (item.Score > 7) { good++; } else { medium++; } } float avgScore = 0; foreach (TestResult item in QT.ToList()) { avgScore += item.Score; } avgScore = avgScore / QT.ToList().Count; int participation = QT.ToList().Count; int count = 0; if (query.ToList() != null) { count = query.ToList().Count; } Exam exam = query.ToList().FirstOrDefault(); int numQuestion = 0; if (exam != null) { numQuestion = exam.QuestionNumber; } ReportSemester reportSemester = new ReportSemester(); User user = new User(); //user.SemesterExam_Users.Where(S => S.ID == 1).ToList(); //SemesterExam semesterExam= new SemesterExam(); List <User> users = context.Users.ToList(); List <SemesterExam> semesterExamsterExams = context.SemesterExams.ToList(); reportSemester.SemesterName = semesterExam.SemesterName; if (semesterExam_Users != null) { reportSemester.Creator = semesterExam_Users.User.FullName; } reportSemester.StartDay = semesterExam.StartDay.ToString(); reportSemester.EndDay = semesterExam.EndDay.ToString(); reportSemester.NumEXams = count; reportSemester.NumQuestions = numQuestion; reportSemester.NumCandiates = numCandiates; reportSemester.NotParticipation = numCandiates - participation; reportSemester.AvgScore = avgScore; reportSemester.Good = good; reportSemester.Medium = medium; reportSemester.Low = low; if (semesterExam.status == 1) { reportSemester.Status = "Public"; } if (semesterExam.status == 2) { reportSemester.Status = "Draft"; } else { reportSemester.Status = "Done"; } //ReportSemester reportSemester = new ReportSemester(semesterExam.SemesterName,semesterExam_Users.User.UserName,semesterExam.StartDay.ToString(),semesterExam.EndDay.ToString(),count); return(reportSemester); }