Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
CRAP | |
0.00% |
0 / 991 |
GraceMarkService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
5852.00 | |
0.00% |
0 / 991 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 3 |
|||
getAllSubjectsByAcademicTermId | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 85 |
|||
getAllGraceMarkAppliedStudentList | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 41 |
|||
getGraceMarkNewReport | |
0.00% |
0 / 1 |
56.00 | |
0.00% |
0 / 74 |
|||
getStudentMarkMarkDetails | |
0.00% |
0 / 1 |
56.00 | |
0.00% |
0 / 116 |
|||
getGraceMarkAppliedDetailsByStudentId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 18 |
|||
getStudentDetailsForGraceMarkNewMarkEntry | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 35 |
|||
getGraceMarkPercent | |
0.00% |
0 / 1 |
272.00 | |
0.00% |
0 / 69 |
|||
getAllRegistredStudentMarkDetailsForGraceMarkStarCase | |
0.00% |
0 / 1 |
182.00 | |
0.00% |
0 / 195 |
|||
getAllRegistredStudentMarkDetailsForGraceMarkEventsHashCase | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 77 |
|||
getAllRegistredStudentMarkDetailsForGraceMarkHashCase | |
0.00% |
0 / 1 |
156.00 | |
0.00% |
0 / 193 |
|||
getAllSpecialExamAssignedSubjectsByAcademicTermId | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 85 |
<?php | |
namespace com\linways\ec\core\service; | |
use com\linways\ec\core\dto\FalseNumberSetting; | |
use com\linways\ec\core\dto\FalseNumberSettingExamLog; | |
use com\linways\base\util\MakeSingletonTrait; | |
use com\linways\base\util\SecurityUtils; | |
use com\linways\ec\core\constant\StatusConstants; | |
use com\linways\ec\core\exception\ExamControllerException; | |
use com\linways\ec\core\mapper\GraceMarkServiceMapper; | |
use com\linways\core\ams\professional\service\CommonService; | |
use com\linways\core\ams\professional\constant\SettingsConstants; | |
use com\linways\base\util\TwigRenderer; | |
use com\linways\core\ams\professional\util\PdfUtil; | |
use Razorpay\Api\Order; | |
use com\linways\ec\core\service\GraceMarkApplicaionService; | |
use com\linways\ec\core\mapper\StudentMarkListServiceMapper; | |
class GraceMarkService extends BaseService | |
{ | |
use MakeSingletonTrait; | |
private function __construct() { | |
$this->mapper = GraceMarkServiceMapper::getInstance()->getMapper(); | |
$this->mapper2 = StudentMarkListServiceMapper::getInstance()->getMapper(); | |
} | |
/** | |
* get All Subjects By ExamRegistrationId And RegisterNo | |
* @param $request | |
* @param $studentRegisterNo | |
* @return $subjects | |
*/ | |
public function getAllSubjectsByAcademicTermId($request){ | |
$request = $this->realEscapeObject($request); | |
try{ | |
$whereCond = ''; | |
$orderBy = ' ORDER BY act.id, s.code ASC'; | |
if($request->considerOnlyExternalPapers){ | |
$whereCond = " AND aps.properties ->> '$.isExternal' = 1"; | |
} | |
$query = "SELECT | |
DISTINCT esar.am_assessment_id as id, | |
esar.am_assessment_id as assessmentId, | |
sa.studentID, | |
sa.studentName, | |
s.code as subjectCode, | |
s.name as subjectName, | |
IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, | |
sa.regNo, | |
g.name as groupName, | |
g.id as groupId, | |
aps.id as academicPaperSubjectId, | |
im.internal_mark as internalMark, | |
ostm.mark_obtained as obtainedExternal, | |
IF( IF(ostm.mark_obtained IS NULL, 0 , ostm.mark_obtained)> IF(ostm2.mark_obtained IS NULL, 0 , ostm2.mark_obtained), ostm.mark_obtained, ostm2.mark_obtained) + IF(ostm4.mark_obtained IS NULL, 0 , ostm4.mark_obtained) as externalMark, | |
ostm.attendance_status as isAbsent, | |
ostm2.mark_obtained as revaluationMark, | |
ostm3.mark_obtained as graceMark, | |
ostm3.mark_obtained as hasGraceMark, | |
ostm3.properties as graceMarkproperties, | |
ostm3.properties ->> '$.graceMarkRemarks' as graceMarkRemarks, | |
ostm4.mark_obtained as moderationMark, | |
act.id AS academicTermId, | |
act.name AS academicTermName, | |
oe.id AS oeExamId, | |
aps.properties ->> '$.isInternal' as isInternal, | |
aps.properties ->> '$.isExternal' as isExternal, | |
IF((aps.properties ->> '$.externalMaxMark') AND (aps.properties ->> '$.isExternal'), aps.properties ->> '$.externalMaxMark', '-') as externalMaxMark, | |
IF((aps.properties ->> '$.internalMaxMark') AND (aps.properties ->> '$.isInternal'), aps.properties ->> '$.internalMaxMark', '-') as internalMaxMark, | |
IF((aps.properties ->> '$.externalMaxMark') AND (aps.properties ->> '$.isExternal'), aps.properties ->> '$.externalMaxMark', 0) + IF((aps.properties ->> '$.internalMaxMark') AND (aps.properties ->> '$.isInternal'), aps.properties ->> '$.internalMaxMark', 0) as totalMaxMark, | |
ostm.mark_obtained + im.internal_mark as totalObtainedMark | |
FROM | |
ec_student_assessment_registration esar | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esar.student_id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.am_assessment_id = esar.am_assessment_id | |
INNER JOIN cm_academic_paper_subjects aps ON | |
aps.id = eers.cm_academic_paper_subjects_id | |
INNER JOIN v4_ams_subject s ON | |
s.id = aps.ams_subject_id | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.id = eers.ec_exam_registration_batch_id | |
INNER JOIN ec_exam_registration eer ON | |
eer.id = eerb.ec_exam_registration_id AND eer.type = esar.ec_exam_registration_type | |
INNER JOIN cm_academic_paper ap ON | |
aps.cm_academic_paper_id = ap.id | |
INNER JOIN academic_term act ON | |
act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) | |
INNER JOIN cm_syllabus_academic_term_settings str ON | |
str.id = ap.cm_syllabus_academic_term_settings_id | |
INNER JOIN oe_exams oe ON | |
oe.assessment_id = eers.am_assessment_id AND oe.is_deleted = 0 | |
INNER JOIN `groups` g ON | |
g.id = eerb.groups_id | |
LEFT JOIN ec_internal_marks im ON | |
im.groups_id = eerb.groups_id AND | |
im.academic_paper_subjects_id = aps.id AND | |
im.academic_term_id = str.academic_term_id AND im.student_id = sa.studentID | |
LEFT JOIN oe_student_total_mark ostm ON | |
ostm.student_id = sa.studentID AND ostm.am_assessment_id = esar.am_assessment_id AND (ostm.valuation_type IS NULL OR ostm.valuation_type = '') AND valuation_count = 'FINALIZED' | |
LEFT JOIN oe_student_total_mark ostm2 ON | |
ostm2.student_id = sa.studentID AND ostm2.am_assessment_id = esar.am_assessment_id AND ostm2.valuation_type = 'REVALUATION' | |
LEFT JOIN oe_student_total_mark ostm3 ON | |
ostm3.student_id = sa.studentID AND ostm3.am_assessment_id = esar.am_assessment_id AND ostm3.valuation_type = 'GRACEMARK' | |
LEFT JOIN oe_student_total_mark ostm4 ON | |
ostm4.student_id = sa.studentID AND ostm4.am_assessment_id = esar.am_assessment_id AND ostm4.valuation_type = 'MODERATION' | |
WHERE | |
sa.regNo = '$request->registerNo' AND eerb.properties ->> '$.academicTermId' IN ($request->academicTermId) AND eer.type='REGULAR' AND eer.trashed IS NULL | |
"; | |
$subjects = $this->executeQueryForList($query.$whereCond.$orderBy, $this->mapper[GraceMarkServiceMapper::GET_STUDENT_SUBJECT_DETAILS]); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $subjects; | |
} | |
/** | |
* Get grace mark distribution student details | |
* @param $request | |
*/ | |
public function getAllGraceMarkAppliedStudentList($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$sql = "SELECT | |
egmas.id, | |
egmas.applNo, | |
egmas.applied_events, | |
egmas.applied_date, | |
egmas.isConfirmed, | |
egmas.studentID, | |
spa.properties->>'$.registerNumber' AS regNo, | |
spa.properties->>'$.rollNumber' AS rollNo, | |
sa.studentName, | |
egmi.properties ->> '$.semesters' as semesters | |
FROM | |
ec_grace_mark_applied_students egmas | |
INNER JOIN | |
ec_grace_mark_appln_initiate egmi ON | |
(egmas.gracemark_appln_id = egmi.id) | |
INNER JOIN | |
ec_grace_mark_appln_assigned_batches egmsb ON | |
(egmsb.gracemark_appln_id = egmi.id) | |
INNER JOIN studentaccount sa ON | |
sa.studentID = egmas.studentID | |
INNER JOIN | |
`groups` g ON | |
g.id = egmsb.groups_id | |
INNER JOIN program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN student_program_account spa ON | |
spa.current_program_id = p.id AND | |
spa.current_batch_id = egmsb.groups_id AND | |
spa.student_id = egmas.studentID AND | |
spa.properties->>'$.academicStatus' IN ('ACTIVE','COMPLETED') | |
WHERE | |
egmi.id = '$request->applnId'"; | |
try { | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/** | |
* get Grace Mark New Report | |
* @param $searchRequest | |
* @return $programResult | |
*/ | |
public function getGraceMarkNewReport($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try{ | |
$request = new \stdClass; | |
$additionalDetails = new \stdClass; | |
$additionalDetails->collageName = $GLOBALS['COLLEGE_NAME']; | |
$requestForGraceMarkReport = new \stdClass; | |
$requestForGraceMarkReport->groupId = $searchRequest->groupId; | |
$studentsDetails = $this->getStudentMarkMarkDetails($requestForGraceMarkReport); | |
if(empty($studentsDetails)){ | |
throw new ExamControllerException(ExamControllerException::NO_REPORTS_DETAILS_FOUND,"No Details Found"); | |
} | |
else{ | |
$categories = GraceMarkApplicaionService::getInstance()->getAllGraceMarkSubCategories($request); | |
foreach($studentsDetails as $student){ | |
$student->id = '1406'; | |
$appliedDetails = $this->getGraceMarkAppliedDetailsByStudentId($student->id); | |
foreach($appliedDetails as $appliedDetail){ | |
$semester = (array)json_decode($appliedDetail->semesters); | |
$percentageObj = $this->getGraceMarkPercent($appliedDetail, $categories); | |
foreach($student->academicTerms as $academicTerm){ | |
if(in_array($academicTerm->id, $semester)){ | |
$academicTerm->gracePercent = $percentageObj->totalPercent; | |
$academicTerm->catName = $percentageObj->categoryName; | |
} | |
} | |
} | |
} | |
$templateName = "grace_mark_new_report"; | |
$additionalDetails->startYear = reset($studentsDetails)->academicYear; | |
$additionalDetails->courseTypeName = reset($studentsDetails)->courseTypeName; | |
$additionalDetails->batchName = reset($studentsDetails)->batchName; | |
$responseHtml = TwigRenderer::renderTemplateFileToHtml(realpath(DOCUMENT_ROOT."../examcontroller-api/src/com/linways/web/templates/GraceMark/GraceMarkReport/$templateName.twig"), [ 'students'=>$studentsDetails ,'additionalDetails'=>$additionalDetails]); | |
$prtContent = NULL; | |
$prtContent .= '<html><head>'; | |
$prtContent .= "<style> | |
*{ | |
color:#000 !important; | |
background-color: #fff !important; | |
} | |
td, th{ | |
border:1px solid #000 !important; | |
} | |
table{ | |
border:1px solid #fff !important; | |
} | |
.print-border-0 td{ | |
border:none !important; | |
} | |
</style>"; | |
$prtContent .= '</head><title>Grace Mark Report</title><body>'; | |
$prtContent .= $responseHtml; | |
$prtContent .= '</body></html>'; | |
$options = array( | |
'page-width' => "450mm", | |
'page-height' => "310mm", | |
'dpi' => 96, | |
'margin-top' => "10mm", | |
'margin-left' => "10mm", | |
'margin-right' => "10mm", | |
'margin-bottom' => "30mm", | |
'footer-spacing' => -10, | |
// 'binary' => "/usr/local/bin/wkhtmltopdf", // For Mac | |
'user-style-sheet' => realpath(DOCUMENT_ROOT . "/libcommon/bootstrap/css/bootstrap.min.css") | |
); | |
$programResult = new \stdClass; | |
$programResult->dispalyHtmlData = $responseHtml; | |
$programResult->printData = PdfUtil::renderPdf($prtContent, $options); | |
return $programResult; | |
} | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/** | |
* get All Registered Students Details | |
* @param $searchRequest | |
*/ | |
public function getStudentMarkMarkDetails($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try{ | |
$joinQuery = ""; | |
$subjectOrderBy = CommonService::getInstance()->getSettings(SettingsConstants::EXAM_CONTROLLER, SettingsConstants::SUBJECT_ORDER_TAKEN_BY); | |
if($subjectOrderBy == "ORDER"){ | |
$orderBy = " ORDER BY spa.properties->>'$.registerNumber' ASC , CAST(aps.properties ->> '$.orderNo' AS UNSIGNED) ASC , CAST(act.properties ->> '$.orderNo' AS UNSIGNED) ASC"; | |
} | |
else{ | |
$orderBy = " ORDER BY spa.properties->>'$.registerNumber' ASC , CAST(aps.properties ->> '$.priority' AS UNSIGNED) DESC , CAST(act.properties ->> '$.orderNo' AS UNSIGNED) ASC"; | |
} | |
$whereQuery = ""; | |
if(!empty($searchRequest->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','",$searchRequest->studentId) . "'" : "'".$searchRequest->studentId."'"; | |
$whereQuery .= " AND sa.studentID IN ( $studentIdString )"; | |
} | |
if(!empty($searchRequest->groupId)) { | |
$groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; | |
$whereQuery .= " AND g.id IN ( $groupIdString )"; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID AS id, | |
sa.studentID AS studentId, | |
sa.studentName, | |
spa.properties->>'$.registerNumber' AS regNo, | |
g.id AS groupId, | |
g.name AS groupName, | |
act.id AS academicTermId, | |
act.name AS academicTermName, | |
act.properties ->> '$.orderNo' AS academicTermOrderNo, | |
ct.courseTypeID, | |
ct.typeName AS courseTypeName, | |
g.properties ->> '$.startYear' AS academicYear, | |
g.properties ->> '$.finalTermId' AS finalTermId, | |
esmdsem.mark_details ->>'$.sgpa' AS semesterSapaWithGraceMark, | |
esmdsem.mark_details ->>'$.sgpaWithoutGracemark' AS semesterSgpaWithOutGraceMark, | |
esmdsem.mark_details ->>'$.grade' AS semesterGradeWithGraceMark, | |
esmdsem.mark_details ->>'$.gradeWithOutGraceMark' AS semesterGradeWithOutGraceMark, | |
esmdsem.mark_details ->>'$.failedStatusWithOutGraceMark' AS semesterFailedStatusWithOutGraceMark, | |
esmdsem.failed_status AS semesterFailedStatusWithGraceMark, | |
esmdsem.mark_details ->>'$.totalMarks' AS semesterTotalMark, | |
s.name AS subjectName, | |
s.code AS subjectCode, | |
aps.id AS academicPaperSubjectId, | |
ap.properties ->> '$.order' AS subjectOrder, | |
eer.id AS examRegistrationId, | |
eer.name AS examRegistrationName, | |
esmdsubcon.mark_details ->>'$.credit' AS subjectCredit, | |
esmdsubcon.mark_details ->>'$.internalMark' AS subjectInternalMark, | |
esmdsub.mark_details ->>'$.attendanceStatus' AS subjectAttendanceStatus, | |
esmdsub.mark_details ->>'$.graceMark' AS graceMark, | |
esmdsub.mark_details ->>'$.externalMarkObtainedInExam' AS subjectExternalMarkWithOutGraceMark, | |
esmdsub.mark_details ->>'$.externalMarkObtainedInExamGrade' AS subjectExtrenalGradeWithOutGraceMark, | |
esmdsub.mark_details ->>'$.externalMarkObtainedInExamGradePoint' AS subjectGradePointPointWithOutGraceMark, | |
esmdsub.mark_details ->>'$.externalMarkObtainedInExamCreditGradePoint' AS subjectCreditGradePointPointWithOutGraceMark, | |
esmdsub.mark_details ->>'$.externalMarkObtainedInExamIsFailed' AS subjectResultStatusWithOutGraceMark, | |
esmdsub.mark_details ->>'$.graceMarkCreditGradePoint' AS subjectCreditGradePointWithGraceMark, | |
esmdsub.mark_details ->>'$.graceMarkGradePoint' AS subjectGradePointPointWithGraceMark, | |
esmdsub.mark_details ->>'$.graceMarkGrade' AS subjectExtrenalGradeWithGraceMark, | |
esmdsub.mark_details ->>'$.graceMarkIsFailed' AS subjectResultStatusWithGraceMark | |
FROM | |
`groups` g | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.groups_id = g.id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.ec_exam_registration_batch_id = eerb.id | |
INNER JOIN cm_academic_paper_subjects aps ON | |
eers.cm_academic_paper_subjects_id = aps.id | |
INNER JOIN cm_academic_paper ap ON | |
ap.id = aps.cm_academic_paper_id | |
INNER JOIN v4_ams_subject s ON | |
aps.ams_subject_id = s.id | |
INNER JOIN ec_exam_registration eer ON | |
eer.id = eerb.ec_exam_registration_id | |
INNER JOIN ec_student_assessment_registration esar ON | |
esar.am_assessment_id = eers.am_assessment_id AND | |
esar.ec_exam_registration_type = eer.type AND | |
CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND | |
CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID' | |
INNER JOIN program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN student_program_account spa ON | |
spa.current_program_id = p.id AND | |
spa.student_id = esar.student_id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esar.student_id | |
INNER JOIN oe_student_total_mark ostm ON | |
ostm.student_id = esar.student_id AND | |
ostm.am_assessment_id = eers.am_assessment_id AND | |
ostm.valuation_type = 'GRACEMARK' | |
INNER JOIN `course_type` ct ON | |
ct.courseTypeID = p.course_type_id | |
INNER JOIN academic_term act ON | |
act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) AND | |
act.type = 'SEMESTER' | |
INNER JOIN ec_subject_mark_details esmdsub ON | |
esmdsub.groups_id = eerb.groups_id AND | |
esmdsub.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND | |
esmdsub.student_id = sa.studentID AND | |
esmdsub.ec_exam_registration_id = eer.id | |
INNER JOIN ec_consolidated_subject_mark_details esmdsubcon ON | |
esmdsubcon.groups_id = eerb.groups_id AND | |
esmdsubcon.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND | |
esmdsubcon.student_id = sa.studentID | |
INNER JOIN ec_semester_mark_details esmdsem ON | |
esmdsem.groups_id = eerb.groups_id AND | |
esmdsem.academic_term_id = act.id AND | |
esmdsem.student_id = sa.studentID | |
WHERE 1=1 "; | |
$studentMarkDetails = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[GraceMarkServiceMapper::OVER_ALL_MARK_DETAILS]); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentMarkDetails; | |
} | |
/** | |
* get grace mark applied students | |
* @return mixed | |
* @throws ExamControllerException | |
*/ | |
public function getGraceMarkAppliedDetailsByStudentId($studentId) { | |
$studentId = $this->realEscapeString($studentId); | |
$sql = "SELECT | |
egmas.id, | |
egmas.applNo, | |
egmas.applied_events, | |
egmas.applied_date, | |
egmas.isConfirmed, | |
egmi.properties->>'$.semesters' AS semesters | |
FROM ec_grace_mark_applied_students egmas | |
INNER JOIN ec_grace_mark_appln_initiate egmi ON | |
(egmas.gracemark_appln_id = egmi.id) | |
WHERE egmas.studentID = $studentId AND egmas.isConfirmed = 1"; | |
try { | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/** | |
* Get grace mark distribution student details | |
* @param $request | |
*/ | |
public function getStudentDetailsForGraceMarkNewMarkEntry($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$sql = "SELECT | |
spa.properties->>'$.registerNumber' AS regNo, | |
spa.properties->>'$.rollNumber' AS rollNo, | |
spa.student_id as studentId, | |
egmi.properties ->> '$.semesters' as semesters, | |
egmas.id, | |
egmas.applNo, | |
egmas.applied_events, | |
egmas.applied_date | |
FROM | |
ec_grace_mark_appln_initiate egmi | |
INNER JOIN | |
ec_grace_mark_appln_assigned_batches egmsb ON | |
(egmsb.gracemark_appln_id = egmi.id) | |
INNER JOIN | |
`groups` g ON | |
g.id = egmsb.groups_id | |
INNER JOIN program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN student_program_account spa ON | |
spa.current_program_id = p.id AND | |
spa.current_batch_id = egmsb.groups_id AND | |
spa.properties->>'$.academicStatus' IN ('ACTIVE','COMPLETED') | |
LEFT JOIN ec_grace_mark_applied_students egmas ON | |
egmas.studentID = spa.student_id | |
WHERE | |
egmi.id = '$request->applnId' AND spa.properties->>'$.registerNumber' = '$request->registerNo'"; | |
try { | |
return $this->executeQueryForObject($sql); | |
} catch (\Exception $e) { | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
} | |
public function getGraceMarkPercent($batch, $categoryList){ | |
$categories = []; | |
$catSelected = []; | |
foreach($categoryList as $category){ | |
$categories[$category->categoryId]->categoryId = $category->categoryId; | |
$categories[$category->categoryId]->categoryName = $category->categoryName; | |
$categories[$category->categoryId]->percentageLimit = $category->percentageLimit; | |
foreach($category->levels as $level){ | |
$categories[$category->categoryId]->level[$level->levelId]->levelId = $level->levelId; | |
$categories[$category->categoryId]->level[$level->levelId]->levelName = $level->levelName; | |
$categories[$category->categoryId]->level[$level->levelId]->levelLimit = $level->levelLimit; | |
$categories[$category->categoryId]->level[$category->levelId]->isSelected = 0; | |
$positions = json_decode($positions->positions); | |
$hasPosition = 0; | |
if($positions){ | |
$hasPosition = 1; | |
} | |
$categories[$category->categoryId]->level[$level->levelId]->hasPosition = $hasPosition; | |
$categories[$category->categoryId]->level[$level->levelId]->positions = $positions; | |
} | |
} | |
$categoryDetails = json_decode($batch->applied_events); | |
foreach($categoryDetails as $catId => $category){ | |
// $categories[$catId]->eventSelected = $category; | |
foreach( $category as $key =>$catVal){ | |
$categories[$catId]->level[$catVal->levelId]->eventSelected[$key] = $catVal; | |
$catSelected[$catId] = $categories[$catId]->categoryName; | |
} | |
} | |
$totalPercent = 0; | |
foreach( $categories as $cat){ | |
$categoryLimit = $cat->percentageLimit; | |
$levelTotal = 0; | |
foreach( $cat->level as $level){ | |
$levelLimit = $level->levelLimit; | |
$positionTotal = 0; | |
foreach( $level->eventSelected as $eventSelected){ | |
if( $level->hasPosition){ | |
$positionId = $eventSelected->positionId; | |
$percentageDetails = array_filter(array_map(function ($obj) use ($positionId) { | |
if($obj->id == $positionId){ | |
return $obj->percentage; | |
} | |
}, $level->positions)); | |
$percentage = current($percentageDetails); | |
$positionTotal += $percentage; | |
} | |
else{ | |
$positionTotal += $levelLimit; | |
} | |
} | |
if($levelLimit){ | |
$levelTotal += $positionTotal < $levelLimit? $positionTotal : $levelLimit; | |
} | |
else{ | |
$levelTotal += $positionTotal; | |
} | |
} | |
if($categoryLimit){ | |
$totalPercent += $levelTotal < $categoryLimit? $levelTotal : $categoryLimit; | |
} | |
else{ | |
$totalPercent += $levelTotal; | |
} | |
} | |
$totalPercent = $totalPercent < 25 ? $totalPercent : 25; | |
$categoryName = implode(', ', $catSelected); | |
$response = new \stdClass(); | |
$response->totalPercent = $totalPercent; | |
$response->categoryName = $categoryName; | |
return $response; | |
} | |
/** | |
* get All Registered Students Details | |
* @param $searchRequest | |
*/ | |
public function getAllRegistredStudentMarkDetailsForGraceMarkStarCase($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try | |
{ | |
$orderBy = "ORDER BY spa.properties->>'$.registerNumber' ASC , CAST(cap.properties ->> '$.order' AS UNSIGNED) ASC , CAST(aps.properties ->> '$.order' AS UNSIGNED) ASC "; | |
$whereQuery = ""; | |
if(!empty($searchRequest->groupId)) { | |
$groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; | |
$whereQuery .= " AND g.id IN ( $groupIdString )"; | |
} | |
if(!empty($searchRequest->selectedSemesters)) { | |
$semesterIdString = is_array($searchRequest->selectedSemesters) ? "'" . implode("','",$searchRequest->selectedSemesters) . "'" : "'".$searchRequest->selectedSemesters."'"; | |
$whereQuery .= " AND act.id IN ( $semesterIdString )"; | |
} | |
if(!empty($searchRequest->examRegistrationId)) { | |
$examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'"; | |
$whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; | |
} | |
if(!empty($searchRequest->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','",$searchRequest->studentId) . "'" : "'".$searchRequest->studentId."'"; | |
$whereQuery .= " AND sa.studentID IN ( $studentIdString )"; | |
} | |
$innerJoin = ""; | |
$columns = ""; | |
if(!empty($searchRequest->considerExternalAppliedStudents)) { | |
$innerJoin = "INNER JOIN oe_student_total_mark ostm ON | |
ostm.student_id = sa.studentID AND ostm.am_assessment_id = esar.am_assessment_id AND ostm.valuation_type = 'EXTERNAL_GRACE_MARK'"; | |
$columns = " ostm.mark_obtained AS externalGraceMark, "; | |
} | |
if(!empty($searchRequest->considerInternalAppliedStudents)) { | |
$innerJoin = "INNER JOIN oe_student_total_mark ostm2 ON | |
ostm2.student_id = sa.studentID AND ostm2.am_assessment_id = esar.am_assessment_id AND ostm2.valuation_type = 'INTERNAL_GRACE_MARK'"; | |
$columns = "ostm2.mark_obtained AS internalGraceMark,"; | |
} | |
if(!empty($searchRequest->considerAssessmentAdditionalMark)) { | |
$innerJoin = "INNER JOIN ec_student_assessment_additional_mark ostm2 ON | |
ostm2.student_id = sa.studentID AND ostm2.am_assessment_id = esar.am_assessment_id AND ostm2.type = 'STAR_HASH_COMBINED'"; | |
$columns = "ostm2.mark_obtained AS externalGraceMarkReserve,"; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID AS id, | |
sa.studentID AS studentId, | |
sa.studentName, | |
spa.properties->>'$.rollNumber' AS rollNo, | |
spa.properties->>'$.registerNumber' AS regNo, | |
spa.properties->>'$.universityRegisterNumber' AS universityRegNo, | |
sa.admissionNo, | |
sa.myImage, | |
sa.studentGender, | |
g.id AS groupId, | |
g.name AS groupName, | |
g.properties ->> '$.optionName' AS batchOptionName, | |
act.id AS academicTermId, | |
act.name AS academicTermName, | |
act.properties ->>'$.orderNo' AS academicOrderNo, | |
dept.deptID, | |
deg.name AS degreeName, | |
deg.description AS degreeDescription, | |
deg.id AS degreeId, | |
dept.deptName, | |
ct.courseTypeID, | |
ct.typeName AS courseTypeName, | |
ct.course_Type AS courseType, | |
g.properties ->> '$.startYear' AS academicYear, | |
eer.type AS latestExamType, | |
eer.properties ->> '$.examYear' AS latestExamYear, | |
eer.properties ->> '$.examMonth' AS latestExamMonth, | |
cap.properties ->> '$.order' as subjectPriority, | |
esmdsem.mark_details ->>'$.sgpa' AS semesterSgpa, | |
esmdsem.mark_details ->>'$.percentage' AS semesterPercentage, | |
esmdsem.mark_details ->>'$.grade' AS semesterGrade, | |
esmdsem.mark_details ->>'$.markObtained' AS semesterMarkObtained, | |
esmdsem.mark_details ->>'$.class' AS semesterClass, | |
esmdsem.mark_details ->>'$.totalMarks' AS semesterTotalMarks, | |
esmdsem.mark_details ->>'$.credit' AS semesterCredit, | |
esmdsem.mark_details ->>'$.gradePoint' AS semesterGradePoint, | |
esmdsem.mark_details ->>'$.creditGradePoint' AS semesterCreditGradePoint, | |
esmdsem.mark_details ->>'$.totalEarnedCredits' AS totalEarnedCredits, | |
esmdsem.mark_details ->>'$.semesterCgpa' AS semesterCgpa, | |
esmdsem.mark_history AS semesterMarkHistory, | |
esmdsem.failed_status AS semesterFailedStatus, | |
str.name AS streamName, | |
str.properties->>'$.abbreviation' AS streamDesc, | |
s.code AS subjectCode, | |
aps.properties ->> '$.syllabusName' AS syllabusName, | |
s.name AS subjectName, | |
eers.cm_academic_paper_subjects_id AS academicPaperSubjectId, | |
eers.am_assessment_id AS assessmentId, | |
oe.id AS oeExamId, | |
esmdsub.mark_details ->>'$.markObtained' AS subjectMarkObtained, | |
esmdsub.mark_details ->>'$.isExternalFailed' AS isExternalFailed, | |
esmdsub.mark_details ->>'$.externalGrade' AS subjectExtrenalGrade, | |
esmdsub.mark_details ->>'$.externalGradePoint' AS subjectExternalGradePoint, | |
esmdsub.mark_details ->>'$.percentageObtainedExternal' AS percentageObtainedExternal, | |
esmdsub.mark_details ->>'$.percentageObtainedInternal' AS percentageObtainedInternal, | |
esmdsub.mark_details ->>'$.wgpa' AS subjectWgpa, | |
esmdsub.mark_details->>'$.attendanceStatus' AS subjectAttendanceStatus, | |
esmdsub.class AS subjectClass, | |
esmdsub.percentage AS subjectPercentage, | |
esmdsub.grade AS subjectGrade, | |
esmdsub.failed_status AS subjectFailedStatus, | |
esmdsub.mark_details ->>'$.externalMark' AS externalMark, | |
IF (esmdsubcon.mark_details ->>'$.graceMark' IS NULL,0,esmdsubcon.mark_details ->>'$.graceMark') AS graceMark, | |
esmdsub.mark_details ->>'$.gradePoint' AS subGradePoint, | |
esmdsub.mark_details ->>'$.gradePoint' AS subjectGradePoint, | |
esmdsub.mark_details ->>'$.creditGradePoint' AS subCreditGradePoint, | |
esmdsub.mark_details ->>'$.creditGradePoint' AS subjectCreditGradePoint, | |
esmdsub.mark_details ->>'$.internalAttendanceStatus' AS internalAttendanceStatus, | |
esmdsub.mark_details ->>'$.internalGrade' AS subjectInternalGrade, | |
esmdsub.mark_details ->>'$.internalGradePoint' AS subjectInternalGradePoint, | |
esmdsub.mark_details ->>'$.isInternalNull' AS isInternalNull, | |
esmdsub.mark_details ->>'$.internalMark' AS internalMark, | |
esmdsubcon.mark_details ->>'$.internalAttendance' AS subjectInternalAttendance, | |
esmdsubcon.mark_details ->>'$.credit' AS subjectCredit, | |
esmdsubcon.mark_details ->>'$.externalMaxMark' AS externalMaxMark, | |
esmdsubcon.mark_details ->>'$.internalMaxMark' AS internalMaxMark, | |
esmdsubcon.mark_details ->>'$.totalMarks' AS subjectTotalMarks, | |
esmdsubcon.mark_details ->>'$.isExternal' AS isExternal, | |
esmdsubcon.mark_details ->>'$.isInternal' AS isInternal, | |
esmdsubcon.mark_details ->>'$.isInternalFailed' AS isInternalFailed, | |
esmdsubcon.mark_details ->>'$.categoryCode' AS subjectCategoryCode, | |
esmdsubcon.mark_details ->>'$.internalPassPercentage' AS subjectInternalPassPercentage, | |
esmdsubcon.mark_details ->>'$.externalPassPercentage' AS subjectExternalPassPercentage, | |
esmdsubcon.mark_details ->>'$.aggregatePassPercentage' AS subjectAggregatePassPercentage, | |
esmdsubcon.mark_history AS subjectMarkHistory, | |
esmdsubcon.mark_details subjectConsolidatedMarkDetails, | |
ecmdcourse.mark_details ->>'$.cgpa' AS cgpa, | |
ecmdcourse.percentage AS overallPercentage, | |
ecmdcourse.mark_details ->>'$.grade' AS overallGrade, | |
ecmdcourse.mark_details ->>'$.class' AS overallClass, | |
ecmdcourse.mark_details ->>'$.markObtained' AS courseObtainedMark, | |
ecmdcourse.mark_details ->>'$.totalMarks' AS courseTotalMark, | |
ecmdcourse.mark_details ->>'$.creditxMark' AS courseCreditxMark, | |
ecmdcourse.mark_details ->>'$.creditGradePoint' AS courseCreditGradePoint, | |
ecmdcourse.mark_details ->>'$.credit' AS courseTotalCredit, | |
ecmdcourse.mark_details ->>'$.wgp' AS courseWgp, | |
ecmdcourse.mark_details ->>'$.wgpa' AS courseWgpa, | |
ecmdcourse.mark_details ->>'$.gradePoint' AS courseGradePoint, | |
$columns | |
ecmdcourse.failed_status AS courseFailedStatus | |
FROM | |
`groups` g | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.groups_id = g.id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.ec_exam_registration_batch_id = eerb.id | |
INNER JOIN cm_academic_paper_subjects aps ON | |
eers.cm_academic_paper_subjects_id = aps.id | |
INNER JOIN cm_academic_paper cap ON | |
cap.id = aps.cm_academic_paper_id | |
INNER JOIN v4_ams_subject s ON | |
aps.ams_subject_id = s.id | |
INNER JOIN program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN ec_exam_registration eer ON | |
eer.id = eerb.ec_exam_registration_id | |
INNER JOIN ec_student_assessment_registration esar ON | |
esar.am_assessment_id = eers.am_assessment_id AND | |
esar.ec_exam_registration_type = eer.type AND | |
CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND | |
CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID' | |
INNER JOIN student_program_account spa ON | |
spa.current_program_id = p.id AND | |
spa.student_id = esar.student_id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esar.student_id | |
INNER JOIN department dept ON | |
dept.deptID = g.properties ->> '$.departmentId' | |
INNER JOIN academic_term act ON | |
act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) | |
INNER JOIN degree deg ON | |
deg.id = p.degree_id | |
INNER JOIN `course_type` ct ON | |
ct.courseTypeID = p.course_type_id | |
LEFT JOIN stream str ON | |
JSON_SEARCH( p.stream_id, 'one', str.id) IS NOT NULL | |
INNER JOIN ec_semester_mark_details esmdsem ON | |
esmdsem.groups_id = eerb.groups_id AND esmdsem.academic_term_id = act.id AND esmdsem.student_id = sa.studentID | |
LEFT JOIN ec_course_mark_details ecmdcourse ON | |
ecmdcourse.groups_id = eerb.groups_id AND ecmdcourse.student_id = sa.studentID | |
INNER JOIN ec_subject_mark_details esmdsub ON | |
esmdsub.ec_exam_registration_id = eerb.ec_exam_registration_id AND esmdsub.groups_id = eerb.groups_id AND esmdsub.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND esmdsub.student_id = sa.studentID | |
INNER JOIN ec_consolidated_subject_mark_details esmdsubcon ON | |
esmdsubcon.groups_id = eerb.groups_id AND esmdsubcon.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND esmdsubcon.student_id = sa.studentID | |
INNER JOIN oe_exams oe ON | |
oe.assessment_id = esar.am_assessment_id AND oe.is_deleted = 0 | |
$innerJoin | |
WHERE 1=1"; | |
$studentMarkDetails = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper2[StudentMarkListServiceMapper::OVER_ALL_MARK_DETAILS]); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentMarkDetails; | |
} | |
/** | |
* get All Registered Students Details | |
* @param $searchRequest | |
* @return $studentDataDetails | |
*/ | |
public function getAllRegistredStudentMarkDetailsForGraceMarkEventsHashCase($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try | |
{ | |
$orderBy = "ORDER BY spa.properties->>'$.registerNumber' ASC"; | |
$whereQuery = ""; | |
if(!empty($searchRequest->courseTypeId)) { | |
$whereQuery .= " AND p.course_type_id = '$searchRequest->courseTypeId'"; | |
} | |
if(!empty($searchRequest->admissionYear)) { | |
$whereQuery .= " AND g.properties ->> '$.startYear' = '$searchRequest->admissionYear'"; | |
} | |
if(!empty($searchRequest->groupId)) { | |
$groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; | |
$whereQuery .= " AND g.id IN ( $groupIdString )"; | |
} | |
if(!empty($searchRequest->examRegistrationId)) { | |
$examRegistrationIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'"; | |
$whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID AS id, | |
sa.studentID AS studentId, | |
sa.studentName, | |
spa.properties->>'$.registerNumber' as regNo, | |
spa.properties->>'$.rollNumber' as rollNo, | |
g.id AS groupId, | |
g.name AS groupName, | |
act.id AS academicTermId, | |
act.name AS academicTerm, | |
d.deptName, | |
d.deptID, | |
eeram.properties->>'$.event' AS graceMarkEvent, | |
eserd.properties->>'$.isResultWithHeld' AS isResultWithHeld | |
FROM | |
`groups` g | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.groups_id = g.id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.ec_exam_registration_batch_id = eerb.id | |
INNER JOIN cm_academic_paper_subjects aps ON | |
eers.cm_academic_paper_subjects_id = aps.id | |
INNER JOIN v4_ams_subject s ON | |
aps.ams_subject_id = s.id | |
INNER JOIN ec_exam_registration eer ON | |
eer.id = eerb.ec_exam_registration_id | |
INNER JOIN program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN ec_student_assessment_registration esar ON | |
esar.am_assessment_id = eers.am_assessment_id AND | |
CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND | |
CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID' AND | |
esar.ec_exam_registration_type = eer.type | |
INNER JOIN student_program_account spa ON | |
spa.student_id = esar.student_id AND | |
spa.current_program_id = p.id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esar.student_id | |
INNER JOIN department d ON | |
d.deptID = g.properties ->> '$.departmentId' | |
INNER JOIN academic_term act ON | |
act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) | |
INNER JOIN ec_student_exam_registration_details eserd ON | |
eserd.student_id = esar.student_id AND | |
eserd.ec_exam_registration_id = eer.id | |
LEFT JOIN ec_exam_registration_additional_mark eeram ON | |
eeram.student_id = esar.student_id AND | |
eeram.ec_exam_registration_id = eer.id AND | |
eeram.type='GRACE_MARK_HASH_NOTATION' | |
WHERE 1=1 "; | |
$studentDataDetails = $this->executeQueryForList($query.$whereQuery.$orderBy); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentDataDetails; | |
} | |
/** | |
* get All Registered Students Details | |
* @param $searchRequest | |
*/ | |
public function getAllRegistredStudentMarkDetailsForGraceMarkHashCase($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try | |
{ | |
$orderBy = "ORDER BY spa.properties->>'$.registerNumber' ASC , CAST(cap.properties ->> '$.order' AS UNSIGNED) ASC , CAST(aps.properties ->> '$.order' AS UNSIGNED) ASC "; | |
$whereQuery = ""; | |
if(!empty($searchRequest->groupId)) { | |
$groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; | |
$whereQuery .= " AND g.id IN ( $groupIdString )"; | |
} | |
if(!empty($searchRequest->selectedSemesters)) { | |
$semesterIdString = is_array($searchRequest->selectedSemesters) ? "'" . implode("','",$searchRequest->selectedSemesters) . "'" : "'".$searchRequest->selectedSemesters."'"; | |
$whereQuery .= " AND act.id IN ( $semesterIdString )"; | |
} | |
if(!empty($searchRequest->examRegistrationId)) { | |
$examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'"; | |
$whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; | |
} | |
if(!empty($searchRequest->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','",$searchRequest->studentId) . "'" : "'".$searchRequest->studentId."'"; | |
$whereQuery .= " AND sa.studentID IN ( $studentIdString )"; | |
} | |
$innerJoin = ""; | |
$columns = ""; | |
if(!empty($searchRequest->considerAppliedStudents)) { | |
$innerJoin = "INNER JOIN oe_student_total_mark ostm ON | |
ostm.student_id = sa.studentID AND ostm.am_assessment_id = esar.am_assessment_id AND ostm.valuation_type = 'GRACE_MARK_HASH_NOTATION'"; | |
$columns = " ostm.mark_obtained AS graceMark, "; | |
} | |
if(!empty($searchRequest->considerInternalAppliedStudents)) { | |
$innerJoin = "INNER JOIN oe_student_total_mark ostmInt ON | |
ostmInt.student_id = sa.studentID AND ostmInt.am_assessment_id = esar.am_assessment_id AND ostmInt.valuation_type = 'INTERNAL_HASH_MARK_NOTATION'"; | |
$columns = " ostmInt.mark_obtained AS internalGraceMark, "; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID AS id, | |
sa.studentID AS studentId, | |
sa.studentName, | |
spa.properties->>'$.rollNumber' AS rollNo, | |
spa.properties->>'$.registerNumber' AS regNo, | |
spa.properties->>'$.universityRegisterNumber' AS universityRegNo, | |
sa.admissionNo, | |
sa.myImage, | |
sa.studentGender, | |
g.id AS groupId, | |
g.name AS groupName, | |
g.properties ->> '$.optionName' AS batchOptionName, | |
act.id AS academicTermId, | |
act.name AS academicTermName, | |
act.properties ->>'$.orderNo' AS academicOrderNo, | |
dept.deptID, | |
deg.name AS degreeName, | |
deg.description AS degreeDescription, | |
deg.id AS degreeId, | |
dept.deptName, | |
ct.courseTypeID, | |
ct.typeName AS courseTypeName, | |
ct.course_Type AS courseType, | |
g.properties ->> '$.startYear' AS academicYear, | |
eer.type AS latestExamType, | |
eer.properties ->> '$.examYear' AS latestExamYear, | |
eer.properties ->> '$.examMonth' AS latestExamMonth, | |
cap.properties ->> '$.order' as subjectPriority, | |
esmdsem.mark_details ->>'$.sgpa' AS semesterSgpa, | |
esmdsem.mark_details ->>'$.percentage' AS semesterPercentage, | |
esmdsem.mark_details ->>'$.grade' AS semesterGrade, | |
esmdsem.mark_details ->>'$.markObtained' AS semesterMarkObtained, | |
esmdsem.mark_details ->>'$.class' AS semesterClass, | |
esmdsem.mark_details ->>'$.totalMarks' AS semesterTotalMarks, | |
esmdsem.mark_details ->>'$.credit' AS semesterCredit, | |
esmdsem.mark_details ->>'$.gradePoint' AS semesterGradePoint, | |
esmdsem.mark_details ->>'$.creditGradePoint' AS semesterCreditGradePoint, | |
esmdsem.mark_details ->>'$.totalEarnedCredits' AS totalEarnedCredits, | |
esmdsem.mark_details ->>'$.semesterCgpa' AS semesterCgpa, | |
esmdsem.mark_history AS semesterMarkHistory, | |
esmdsem.failed_status AS semesterFailedStatus, | |
str.name AS streamName, | |
str.properties->>'$.abbreviation' AS streamDesc, | |
s.code AS subjectCode, | |
aps.properties ->> '$.syllabusName' AS syllabusName, | |
s.name AS subjectName, | |
eers.cm_academic_paper_subjects_id AS academicPaperSubjectId, | |
eers.am_assessment_id AS assessmentId, | |
oe.id AS oeExamId, | |
esmdsub.mark_details ->>'$.markObtained' AS subjectMarkObtained, | |
esmdsub.mark_details ->>'$.isExternalFailed' AS isExternalFailed, | |
esmdsub.mark_details ->>'$.externalGrade' AS subjectExtrenalGrade, | |
esmdsub.mark_details ->>'$.externalGradePoint' AS subjectExternalGradePoint, | |
esmdsub.mark_details ->>'$.percentageObtainedExternal' AS percentageObtainedExternal, | |
esmdsub.mark_details ->>'$.percentageObtainedInternal' AS percentageObtainedInternal, | |
esmdsub.mark_details ->>'$.wgpa' AS subjectWgpa, | |
esmdsub.mark_details->>'$.attendanceStatus' AS subjectAttendanceStatus, | |
esmdsub.class AS subjectClass, | |
esmdsub.percentage AS subjectPercentage, | |
esmdsub.grade AS subjectGrade, | |
esmdsub.failed_status AS subjectFailedStatus, | |
esmdsub.mark_details ->>'$.externalMark' AS externalMark, | |
IF (esmdsubcon.mark_details ->>'$.graceMark' IS NULL,0,esmdsubcon.mark_details ->>'$.graceMark') AS graceMark, | |
esmdsub.mark_details ->>'$.gradePoint' AS subGradePoint, | |
esmdsub.mark_details ->>'$.gradePoint' AS subjectGradePoint, | |
esmdsub.mark_details ->>'$.creditGradePoint' AS subCreditGradePoint, | |
esmdsub.mark_details ->>'$.creditGradePoint' AS subjectCreditGradePoint, | |
esmdsub.mark_details ->>'$.internalAttendanceStatus' AS internalAttendanceStatus, | |
esmdsub.mark_details ->>'$.internalGrade' AS subjectInternalGrade, | |
esmdsub.mark_details ->>'$.internalGradePoint' AS subjectInternalGradePoint, | |
esmdsub.mark_details ->>'$.isInternalNull' AS isInternalNull, | |
esmdsub.mark_details ->>'$.internalMark' AS internalMark, | |
esmdsubcon.mark_details ->>'$.internalAttendance' AS subjectInternalAttendance, | |
esmdsubcon.mark_details ->>'$.credit' AS subjectCredit, | |
esmdsubcon.mark_details ->>'$.externalMaxMark' AS externalMaxMark, | |
esmdsubcon.mark_details ->>'$.internalMaxMark' AS internalMaxMark, | |
esmdsubcon.mark_details ->>'$.totalMarks' AS subjectTotalMarks, | |
esmdsubcon.mark_details ->>'$.isExternal' AS isExternal, | |
esmdsubcon.mark_details ->>'$.isInternal' AS isInternal, | |
esmdsubcon.mark_details ->>'$.isInternalFailed' AS isInternalFailed, | |
esmdsubcon.mark_details ->>'$.categoryCode' AS subjectCategoryCode, | |
esmdsubcon.mark_details ->>'$.internalPassPercentage' AS subjectInternalPassPercentage, | |
esmdsubcon.mark_details ->>'$.externalPassPercentage' AS subjectExternalPassPercentage, | |
esmdsubcon.mark_details ->>'$.aggregatePassPercentage' AS subjectAggregatePassPercentage, | |
esmdsubcon.mark_history AS subjectMarkHistory, | |
esmdsubcon.mark_details subjectConsolidatedMarkDetails, | |
ecmdcourse.mark_details ->>'$.cgpa' AS cgpa, | |
ecmdcourse.percentage AS overallPercentage, | |
ecmdcourse.mark_details ->>'$.grade' AS overallGrade, | |
ecmdcourse.mark_details ->>'$.class' AS overallClass, | |
ecmdcourse.mark_details ->>'$.markObtained' AS courseObtainedMark, | |
ecmdcourse.mark_details ->>'$.totalMarks' AS courseTotalMark, | |
ecmdcourse.mark_details ->>'$.creditxMark' AS courseCreditxMark, | |
ecmdcourse.mark_details ->>'$.creditGradePoint' AS courseCreditGradePoint, | |
ecmdcourse.mark_details ->>'$.credit' AS courseTotalCredit, | |
ecmdcourse.mark_details ->>'$.wgp' AS courseWgp, | |
ecmdcourse.mark_details ->>'$.wgpa' AS courseWgpa, | |
ecmdcourse.mark_details ->>'$.gradePoint' AS courseGradePoint, | |
ostm2.mark_obtained AS externalGraceMarkReserve, | |
$columns | |
ecmdcourse.failed_status AS courseFailedStatus | |
FROM | |
`groups` g | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.groups_id = g.id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.ec_exam_registration_batch_id = eerb.id | |
INNER JOIN cm_academic_paper_subjects aps ON | |
eers.cm_academic_paper_subjects_id = aps.id | |
INNER JOIN cm_academic_paper cap ON | |
cap.id = aps.cm_academic_paper_id | |
INNER JOIN v4_ams_subject s ON | |
aps.ams_subject_id = s.id | |
INNER JOIN program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN ec_exam_registration eer ON | |
eer.id = eerb.ec_exam_registration_id | |
INNER JOIN ec_student_assessment_registration esar ON | |
esar.am_assessment_id = eers.am_assessment_id AND | |
esar.ec_exam_registration_type = eer.type AND | |
CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND | |
CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID' | |
INNER JOIN student_program_account spa ON | |
spa.current_program_id = p.id AND | |
spa.student_id = esar.student_id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esar.student_id | |
INNER JOIN department dept ON | |
dept.deptID = g.properties ->> '$.departmentId' | |
INNER JOIN academic_term act ON | |
act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) | |
INNER JOIN degree deg ON | |
deg.id = p.degree_id | |
INNER JOIN `course_type` ct ON | |
ct.courseTypeID = p.course_type_id | |
LEFT JOIN stream str ON | |
JSON_SEARCH( p.stream_id, 'one', str.id) IS NOT NULL | |
INNER JOIN ec_semester_mark_details esmdsem ON | |
esmdsem.groups_id = eerb.groups_id AND esmdsem.academic_term_id = act.id AND esmdsem.student_id = sa.studentID | |
LEFT JOIN ec_course_mark_details ecmdcourse ON | |
ecmdcourse.groups_id = eerb.groups_id AND ecmdcourse.student_id = sa.studentID | |
INNER JOIN ec_subject_mark_details esmdsub ON | |
esmdsub.ec_exam_registration_id = eerb.ec_exam_registration_id AND esmdsub.groups_id = eerb.groups_id AND esmdsub.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND esmdsub.student_id = sa.studentID | |
INNER JOIN ec_consolidated_subject_mark_details esmdsubcon ON | |
esmdsubcon.groups_id = eerb.groups_id AND esmdsubcon.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND esmdsubcon.student_id = sa.studentID | |
INNER JOIN oe_exams oe ON | |
oe.assessment_id = esar.am_assessment_id AND oe.is_deleted = 0 | |
LEFT JOIN ec_student_assessment_additional_mark ostm2 ON | |
ostm2.student_id = sa.studentID AND ostm2.am_assessment_id = esar.am_assessment_id AND ostm2.type = 'STAR_HASH_COMBINED' | |
$innerJoin | |
WHERE 1=1"; | |
$studentMarkDetails = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper2[StudentMarkListServiceMapper::OVER_ALL_MARK_DETAILS]); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentMarkDetails; | |
} | |
/** | |
* get All Subjects By Specal ExamRegistration | |
* @param $request | |
* @param $studentRegisterNo | |
* @return $subjects | |
*/ | |
public function getAllSpecialExamAssignedSubjectsByAcademicTermId($request){ | |
$request = $this->realEscapeObject($request); | |
try{ | |
$whereCond = ''; | |
$orderBy = ' ORDER BY act.id, s.code ASC'; | |
if($request->considerOnlyExternalPapers){ | |
$whereCond = " AND aps.properties ->> '$.isExternal' = 1"; | |
} | |
$query = "SELECT | |
DISTINCT esar.am_assessment_id as id, | |
esar.am_assessment_id as assessmentId, | |
sa.studentID, | |
sa.studentName, | |
s.code as subjectCode, | |
s.name as subjectName, | |
IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, | |
sa.regNo, | |
g.name as groupName, | |
g.id as groupId, | |
aps.id as academicPaperSubjectId, | |
im.internal_mark as internalMark, | |
ostm.mark_obtained as obtainedExternal, | |
IF( IF(ostm.mark_obtained IS NULL, 0 , ostm.mark_obtained)> IF(ostm2.mark_obtained IS NULL, 0 , ostm2.mark_obtained), ostm.mark_obtained, ostm2.mark_obtained) + IF(ostm4.mark_obtained IS NULL, 0 , ostm4.mark_obtained) as externalMark, | |
ostm.attendance_status as isAbsent, | |
ostm2.mark_obtained as revaluationMark, | |
ostm3.mark_obtained as graceMark, | |
ostm3.mark_obtained as hasGraceMark, | |
ostm3.properties as graceMarkproperties, | |
ostm3.properties ->> '$.graceMarkRemarks' as graceMarkRemarks, | |
ostm4.mark_obtained as moderationMark, | |
act.id AS academicTermId, | |
act.name AS academicTermName, | |
oe.id AS oeExamId, | |
aps.properties ->> '$.isInternal' as isInternal, | |
aps.properties ->> '$.isExternal' as isExternal, | |
IF((aps.properties ->> '$.externalMaxMark') AND (aps.properties ->> '$.isExternal'), aps.properties ->> '$.externalMaxMark', '-') as externalMaxMark, | |
IF((aps.properties ->> '$.internalMaxMark') AND (aps.properties ->> '$.isInternal'), aps.properties ->> '$.internalMaxMark', '-') as internalMaxMark, | |
IF((aps.properties ->> '$.externalMaxMark') AND (aps.properties ->> '$.isExternal'), aps.properties ->> '$.externalMaxMark', 0) + IF((aps.properties ->> '$.internalMaxMark') AND (aps.properties ->> '$.isInternal'), aps.properties ->> '$.internalMaxMark', 0) as totalMaxMark, | |
ostm.mark_obtained + im.internal_mark as totalObtainedMark | |
FROM | |
ec_student_assessment_registration esar | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esar.student_id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.am_assessment_id = esar.am_assessment_id | |
INNER JOIN cm_academic_paper_subjects aps ON | |
aps.id = eers.cm_academic_paper_subjects_id | |
INNER JOIN v4_ams_subject s ON | |
s.id = aps.ams_subject_id | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.id = eers.ec_exam_registration_batch_id | |
INNER JOIN ec_exam_registration eer ON | |
eer.id = eerb.ec_exam_registration_id AND eer.type = esar.ec_exam_registration_type | |
INNER JOIN cm_academic_paper ap ON | |
aps.cm_academic_paper_id = ap.id | |
INNER JOIN academic_term act ON | |
act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) AND act.type = 'SEMESTER' | |
INNER JOIN cm_syllabus_academic_term_settings str ON | |
str.id = ap.cm_syllabus_academic_term_settings_id | |
INNER JOIN oe_exams oe ON | |
oe.assessment_id = eers.am_assessment_id AND oe.is_deleted = 0 | |
INNER JOIN `groups` g ON | |
g.id = eerb.groups_id | |
LEFT JOIN ec_internal_marks im ON | |
im.groups_id = eerb.groups_id AND | |
im.academic_paper_subjects_id = aps.id AND | |
im.academic_term_id = str.academic_term_id AND im.student_id = sa.studentID | |
LEFT JOIN oe_student_total_mark ostm ON | |
ostm.student_id = sa.studentID AND ostm.am_assessment_id = esar.am_assessment_id AND (ostm.valuation_type IS NULL OR ostm.valuation_type = '') AND valuation_count = 'FINALIZED' | |
LEFT JOIN oe_student_total_mark ostm2 ON | |
ostm2.student_id = sa.studentID AND ostm2.am_assessment_id = esar.am_assessment_id AND ostm2.valuation_type = 'REVALUATION' | |
LEFT JOIN oe_student_total_mark ostm3 ON | |
ostm3.student_id = sa.studentID AND ostm3.am_assessment_id = esar.am_assessment_id AND ostm3.valuation_type = 'GRACEMARK' | |
LEFT JOIN oe_student_total_mark ostm4 ON | |
ostm4.student_id = sa.studentID AND ostm4.am_assessment_id = esar.am_assessment_id AND ostm4.valuation_type = 'MODERATION' | |
WHERE | |
sa.regNo = '$request->registerNo' AND eerb.properties ->> '$.academicTermId' IN ($request->academicTermId) AND eer.type='SUPPLEMENTARY' AND eer.properties->>'$.isSpecialExam' = '1' AND eer.trashed IS NULL | |
"; | |
$subjects = $this->executeQueryForList($query.$whereCond.$orderBy, $this->mapper[GraceMarkServiceMapper::GET_STUDENT_SUBJECT_DETAILS]); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $subjects; | |
} | |
} |