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();
        }
Exemplo n.º 2
0
        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());
        }