public async Task <IActionResult> OnGetAsync(int?id, int?app) { if (id == null && app == null) { return(NotFound()); } applicantProgram = await _context.tApplicantProgram.Where(m => m.applicant_program_id == id).SingleOrDefaultAsync(); ap = applicantProgram; types = await _context.tType.ToListAsync(); domains = await _context.tDomain.ToListAsync(); answers = await _context.tApplicantAnswer .Include(t => t.answer.question) .Include(t => t.answer.question.domain) .Include(t => t.answer.question.type) .Include(t => t.answer) .Include(t => t.applicant_program) .Include(t => t.applicant_program.batch) .Include(t => t.applicant_program.batch.client) .Where(ap => ap.applicant_program.applicant_program_id == id && ap.applicant_id == app).ToListAsync(); history = await _context.tAnswerHistory .Include(t => t.answer) .Include(t => t.answer.question) .Where(h => h.applicant_program.applicant_id == app && h.applicant_program.applicant_program_id == id).ToListAsync(); applicant = await _context.tApplicant.Include(t => t.client).Where(a => a.applicant_id == app).SingleOrDefaultAsync(); // ranking process int sort = 1; rangkings = new List <rangking>(); foreach (tType t in types) { List <tAppllicantAnswer> lap = answers.Where(a => a.answer.question.type_name == t.type_name).ToList(); rangking r = new rangking(); r.rankID = sort; foreach (tAppllicantAnswer ap in lap) { r.rawScore += ap.answer.score; } r.type = new tType(); r.type = t; r.zScore = (r.rawScore - t.substractor) / t.divider; r.domainCount = new List <domainCount>(); foreach (tDomain d in domains) { domainCount dc = new domainCount(); dc.count = answers.Where(a => a.answer.question.type_name == t.type_name && a.answer.question.domain.domain_id == d.domain_id && a.answer.score > 2).Count(); dc.domain = new tDomain(); dc.domain = d; r.domainCount.Add(dc); } rangkings.Add(r); sort++; } rangkings = rangkings.OrderByDescending(o => o.zScore).ToList(); if (answers == null) { return(NotFound()); } return(Page()); }
public async Task <IActionResult> OnGetAsync(int?id, int?app) { if (id == null && app == null) { return(NotFound()); } types = await _context.tType.ToListAsync(); domains = await _context.tDomain.ToListAsync(); answers = await _context.tApplicantAnswer .Include(t => t.answer.question) .Include(t => t.answer.question.domain) .Include(t => t.answer.question.type) .Include(t => t.answer) .Include(t => t.applicant_program) .Include(t => t.applicant_program.batch) .Include(t => t.applicant_program.batch.client) .Where(ap => ap.applicant_program.applicant_program_id == id && ap.applicant_id == app).ToListAsync(); tApplicantProgram = await _context.tApplicantProgram .Include(t => t.applicant) .Include(t => t.batch) .Include(t => t.program).SingleOrDefaultAsync(m => m.applicant_program_id == id); //applicant = await _context.tApplicant.Include(t => t.client).Where(a => a.applicant_id == app).SingleOrDefaultAsync(); // ranking process int sort = 1; rangkings = new List <rangking>(); foreach (tType t in types) { List <tAppllicantAnswer> lap = answers.Where(a => a.answer.question.type_name == t.type_name).ToList(); rangking r = new rangking(); r.rankID = sort; foreach (tAppllicantAnswer ap in lap) { r.rawScore += ap.answer.score; } r.type = new tType(); r.type = t; r.zScore = (r.rawScore - t.substractor) / t.divider; r.domainCount = new List <domainCount>(); foreach (tDomain d in domains) { domainCount dc = new domainCount(); dc.count = answers.Where(a => a.answer.question.type_name == t.type_name && a.answer.question.domain.domain_id == d.domain_id && a.answer.score > 2).Count(); dc.domain = new tDomain(); dc.domain = d; r.domainCount.Add(dc); } rangkings.Add(r); sort++; } rangkings = rangkings.OrderByDescending(o => o.zScore).ToList(); int age = 0; int years = DateTime.Now.Year - tApplicantProgram.applicant.dob.Year; DateTime birthdayThisYear = tApplicantProgram.applicant.dob.AddYears(years); string graphic = "<div class=\"col-md-12\"><div class=\"row\"><div class=\"col-md-12\"> <canvas id=\"canvas\" height=\"140\"></canvas></div></div><div class=\"row\"><div class=\"col-md-12\"><h4>Evolutionary and Domain Personality :</h4><table class=\"table table-bordered table-hover\" title=\"\"><thead><tr style=\"background-color:#000; color:#fff; font-size:.9em; text-align:center; width:50%\"><td>Personality</td><td>Pain >< Pleasure</td><td>Passive >< Active</td><td>Self >< Other</td></tr></thead><tbody>"; for (int i = 0; i < 4; i++) { graphic += "<tr style=\"text-align:center;\">"; graphic += "<td>" + rangkings[i].type.type_name + "</td>"; graphic += "<td>" + rangkings[i].type.pain_pleasure + "</td>"; graphic += "<td>" + rangkings[i].type.passive_active + "</td>"; graphic += "<td>" + rangkings[i].type.self_other + "</td>"; } graphic += "</tbody></table></div></div></div>"; age = birthdayThisYear > DateTime.Now ? years - 1 : years; tApplicantProgram.report_description = tApplicantProgram.report_description.Replace("{applicant_name}", tApplicantProgram.applicant.full_name); tApplicantProgram.report_description = tApplicantProgram.report_description.Replace("{gender}", tApplicantProgram.applicant.gender.ToString()); tApplicantProgram.report_description = tApplicantProgram.report_description.Replace("{age}", age.ToString()); tApplicantProgram.report_description = tApplicantProgram.report_description.Replace("{graphic}", graphic); if (tApplicantProgram == null) { return(NotFound()); } return(Page()); }