public List<TestReportModel> TestReport(string dateFrom, string dateTo) { var TR = new List<TestReportModel>(); QuizBookDbEntities1 _db = new QuizBookDbEntities1(); if (!string.IsNullOrEmpty(dateFrom) && !string.IsNullOrEmpty(dateTo)) { var f = ErecruitHelper.GetCurrentDateFromDateString(dateFrom); var t = ErecruitHelper.GetCurrentDateFromDateString(dateTo); var tr = _db.T_CTestTracker.Where(s => s.CurrentStartTime.Value.Date >= f.Date && s.CurrentStartTime.Value.Date <= t.Date).OrderByDescending(s => s.CurrentStartTime).Select(s => s.BatchId).Distinct(); var bs = _db.T_BatchSet.Where(s => tr.Contains(s.BatchId)).ToList(); TR = bs.Select(a => new TestReportModel { ID = (long)a.CandidateId, Code = ErecruitHelper.getCandidateCode((long)a.CandidateId).ToString(), FirstName = ErecruitHelper.getCandidateFirstName((long)a.CandidateId).ToString(), LastName = ErecruitHelper.getCandidateLastName((long)a.CandidateId).ToString(), Qualification = ErecruitHelper.getCandidate((long)a.CandidateId).Degree, Grade = ErecruitHelper.getCandidate((long)a.CandidateId).ClassOfDegree, Contact = ErecruitHelper.getCandidate((long)a.CandidateId).Email, Refferal = ErecruitHelper.getCandidate((long)a.CandidateId).Referer, from =ErecruitHelper.GetDateStringFromDateX(f), to = ErecruitHelper.GetDateStringFromDateX(t), Email = ErecruitHelper.getCandidate((long)a.CandidateId).Email, TestDate = ErecruitHelper.GetDateStringFromDateX(ErecruitHelper.getTracker(a.CandidateId.Value,a.BatchId.Value).CurrentStartTime.Value), Score = a.TestScore == null ? "Not Attempted" : a.TestScore + "%", Age = (DateTime.Now.Year - (ErecruitHelper.getCandidateDobx((long)a.CandidateId) != null ? ErecruitHelper.getCandidateDobx((long)a.CandidateId).Value.Year: 0)).ToString(), DateOfBirth = ErecruitHelper.GetDateStringFromDateX(ErecruitHelper.getCandidate((long)a.CandidateId).DateOfBirth.Value), Sex = ErecruitHelper.getCandidateSex((long)a.CandidateId).ToString(), Passport = ErecruitHelper.getCandidateImgUrl((long)a.CandidateId).ToString(), Alt = ErecruitHelper.getCandidateCode((long)a.CandidateId).ToString() }).ToList(); } else if (string.IsNullOrEmpty(dateFrom) && !string.IsNullOrEmpty(dateTo)) { var f = DateTime.Now; var t = ErecruitHelper.GetCurrentDateFromDateString(dateTo); var tr = _db.T_CTestTracker.Where(s => s.CurrentStartTime.Value.Date >= f.Date && s.CurrentStartTime.Value.Date <= t.Date).OrderByDescending(s => s.CurrentStartTime).Select(s => s.BatchId).Distinct(); var bs = _db.T_BatchSet.Where(s => tr.Contains(s.BatchId)).ToList(); TR = bs.Select(a => new TestReportModel { ID = (long)a.CandidateId, Code = ErecruitHelper.getCandidateCode((long)a.CandidateId).ToString(), FirstName = ErecruitHelper.getCandidateFirstName((long)a.CandidateId).ToString(), LastName = ErecruitHelper.getCandidateLastName((long)a.CandidateId).ToString(), Qualification = ErecruitHelper.getCandidate((long)a.CandidateId).Degree, Grade = ErecruitHelper.getCandidate((long)a.CandidateId).ClassOfDegree, Contact = ErecruitHelper.getCandidate((long)a.CandidateId).Email, Refferal = ErecruitHelper.getCandidate((long)a.CandidateId).Referer, Email = ErecruitHelper.getCandidate((long)a.CandidateId).Email, from = ErecruitHelper.GetDateStringFromDateX(f), to = ErecruitHelper.GetDateStringFromDateX(t), TestDate = ErecruitHelper.GetDateStringFromDateX(ErecruitHelper.getTracker(a.CandidateId.Value, a.BatchId.Value).CurrentStartTime.Value), Score = a.TestScore == null ? "Not Attempted" : a.TestScore + "%", Age = (DateTime.Now.Year - (ErecruitHelper.getCandidateDobx((long)a.CandidateId) != null ? ErecruitHelper.getCandidateDobx((long)a.CandidateId).Value.Year : 0)).ToString(), DateOfBirth = ErecruitHelper.GetDateStringFromDateX(ErecruitHelper.getCandidate((long)a.CandidateId).DateOfBirth.Value), Sex = ErecruitHelper.getCandidateSex((long)a.CandidateId).ToString(), Passport = ErecruitHelper.getCandidateImgUrl((long)a.CandidateId).ToString(), Alt = ErecruitHelper.getCandidateCode((long)a.CandidateId).ToString() }).ToList(); } else if (!string.IsNullOrEmpty(dateFrom) && string.IsNullOrEmpty(dateTo)) { var f = ErecruitHelper.GetCurrentDateFromDateString(dateFrom); var t = DateTime.Now; var tr = _db.T_CTestTracker.Where(s => s.CurrentStartTime.Value.Date >= f.Date && s.CurrentStartTime.Value.Date <= t.Date).OrderByDescending(s => s.CurrentStartTime).Select(s => s.BatchId).Distinct(); var bs = _db.T_BatchSet.Where(s => tr.Contains(s.BatchId)).ToList(); TR = bs.Select(a => new TestReportModel { ID = (long)a.CandidateId, Code = ErecruitHelper.getCandidateCode((long)a.CandidateId).ToString(), FirstName = ErecruitHelper.getCandidateFirstName((long)a.CandidateId).ToString(), LastName = ErecruitHelper.getCandidateLastName((long)a.CandidateId).ToString(), Qualification = ErecruitHelper.getCandidate((long)a.CandidateId).Degree, Grade = ErecruitHelper.getCandidate((long)a.CandidateId).ClassOfDegree, Contact = ErecruitHelper.getCandidate((long)a.CandidateId).Email, Refferal = ErecruitHelper.getCandidate((long)a.CandidateId).Referer, Email = ErecruitHelper.getCandidate((long)a.CandidateId).Email, from = ErecruitHelper.GetDateStringFromDateX(f), to = ErecruitHelper.GetDateStringFromDateX(t), TestDate = ErecruitHelper.GetDateStringFromDateX(ErecruitHelper.getTracker(a.CandidateId.Value, a.BatchId.Value).CurrentStartTime.Value), Score = a.TestScore == null ? "Not Attempted" : a.TestScore + "%", Age = (DateTime.Now.Year - (ErecruitHelper.getCandidateDobx((long)a.CandidateId) != null ? ErecruitHelper.getCandidateDobx((long)a.CandidateId).Value.Year : 0)).ToString(), DateOfBirth = ErecruitHelper.GetDateStringFromDateX(ErecruitHelper.getCandidate((long)a.CandidateId).DateOfBirth.Value), Sex = ErecruitHelper.getCandidateSex((long)a.CandidateId).ToString(), Passport = ErecruitHelper.getCandidateImgUrl((long)a.CandidateId).ToString(), Alt = ErecruitHelper.getCandidateCode((long)a.CandidateId).ToString() }).ToList(); } else { var f = DateTime.Now; var tr = _db.T_CTestTracker.Where(s => s.CurrentStartTime.Value.Date == f.Date).OrderByDescending(s=>s.CurrentStartTime).Select(s => s.BatchId).Distinct(); var bs = _db.T_BatchSet.Where(s => tr.Contains(s.BatchId)).ToList(); TR = bs.Select(a => new TestReportModel { ID = (long)a.CandidateId, Code = ErecruitHelper.getCandidateCode((long)a.CandidateId).ToString(), FirstName = ErecruitHelper.getCandidateFirstName((long)a.CandidateId).ToString(), LastName = ErecruitHelper.getCandidateLastName((long)a.CandidateId).ToString(), Qualification = ErecruitHelper.getCandidate((long)a.CandidateId).Degree, Grade = ErecruitHelper.getCandidate((long)a.CandidateId).ClassOfDegree, Contact = ErecruitHelper.getCandidate((long)a.CandidateId).Email, Refferal = ErecruitHelper.getCandidate((long)a.CandidateId).Referer, Email = ErecruitHelper.getCandidate((long)a.CandidateId).Email, from = ErecruitHelper.GetDateStringFromDateX(f), TestDate = ErecruitHelper.GetDateStringFromDateX(ErecruitHelper.getTracker(a.CandidateId.Value, a.BatchId.Value).CurrentStartTime.Value), Score = a.TestScore == null ? "Not Attempted" : a.TestScore + "%", Age = (DateTime.Now.Year - (ErecruitHelper.getCandidateDobx((long)a.CandidateId) != null ? ErecruitHelper.getCandidateDobx((long)a.CandidateId).Value.Year : 0)).ToString(), DateOfBirth = ErecruitHelper.GetDateStringFromDateX(ErecruitHelper.getCandidate((long)a.CandidateId).DateOfBirth.Value), Sex = ErecruitHelper.getCandidateSex((long)a.CandidateId).ToString(), Passport = ErecruitHelper.getCandidateImgUrl((long)a.CandidateId).ToString(), Alt = ErecruitHelper.getCandidateCode((long)a.CandidateId).ToString() }).ToList(); } return TR; }