public async Task GenarateResult(GenarateResultVM genarateResult) { List <GenarateResultVM> genarateResults = new List <GenarateResultVM>(); List <int> candidatsIds = await _context.SubjectWiseResults.Include("Candidate").Where(x => x.ExamId == genarateResult.ExamId && x.Candidate.StanderdClassId == genarateResult.StandardId).Select(x => x.CandidateId).Distinct().ToListAsync(); List <CandateWiseResult> candateWiseResults = new List <CandateWiseResult>(); foreach (var id in candidatsIds) { var items = _context.SubjectWiseResults.Where(x => x.CandidateId == id && x.ExamId == genarateResult.ExamId); CandateWiseResult cwr = new CandateWiseResult { CandidateId = id, ExamId = genarateResult.ExamId, IsPass = true, ObtainMarks = 0 }; foreach (var item in items) { cwr.ObtainMarks += item.ObtainMarks; if (cwr.IsPass) { cwr.IsPass = item.IsPass; } else { cwr.IsPass = false; } } candateWiseResults.Add(cwr); } candateWiseResults = candateWiseResults.OrderByDescending(x => x.ObtainMarks).ToList(); List <CandateWiseResult> candidatesToPost = new List <CandateWiseResult>(); candidatesToPost = candateWiseResults.Take(genarateResult.SelectedCandidateNo).ToList(); foreach (var item in candidatesToPost) { SelectedCandidate s = new SelectedCandidate { ExamId = genarateResult.ExamId, CandidateId = item.CandidateId, IsAdmitted = false, IsInWatingList = false }; _context.SelectedCandidates.Add(s); } _context.SaveChanges(); candidatesToPost.Clear(); candidatesToPost = candateWiseResults.Skip(genarateResult.SelectedCandidateNo).Take(genarateResult.WaitingListNo).ToList(); foreach (var item in candidatesToPost) { SelectedCandidate s = new SelectedCandidate { ExamId = genarateResult.ExamId, CandidateId = item.CandidateId, IsAdmitted = false, IsInWatingList = true }; _context.SelectedCandidates.Add(s); } _context.SaveChanges(); }
public async Task <ActionResult> PostResult([FromBody] GenarateResultVM genarateResult) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } await _resultRepo.GenarateResult(genarateResult); try { await _repo.SaveAsync(); } catch (Exception ex) { return(Ok(ex.InnerException)); } return(Ok()); }