Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 30 |
CRAP | |
0.00% |
0 / 1854 |
StudentMarkListService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 30 |
56406.00 | |
0.00% |
0 / 1854 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
getStudentListAndOtherDetails | |
0.00% |
0 / 1 |
342.00 | |
0.00% |
0 / 83 |
|||
getconsolidatedMarkSheetForBatch | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 15 |
|||
getIndividualMarkCardForStudents | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 11 |
|||
getAllRegistredStudentMarkDetails | |
0.00% |
0 / 1 |
132.00 | |
0.00% |
0 / 83 |
|||
getAllRegistredStudentMarkDetailsDummyData | |
0.00% |
0 / 1 |
306.00 | |
0.00% |
0 / 264 |
|||
getUniversityMarkListTemplate | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 17 |
|||
getSupplementaryConsolidatedMarkSheetForBatch | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 23 |
|||
getSupplementaryStudentDetails | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 14 |
|||
getSupplementaryIndividualMarkCardForStudents | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 19 |
|||
getMarkHistoryForStudentSubject | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 57 |
|||
processSupplementaryStudentData | |
0.00% |
0 / 1 |
380.00 | |
0.00% |
0 / 143 |
|||
getExamRegistrationDetailsDataForConsolidatedAndIndividualReports | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 48 |
|||
getCollegeDetailsForConsolidatedAndIndividualReports | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
getAllGradeScemesByCurriculum | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 44 |
|||
getCurrentStudentExamResult | |
0.00% |
0 / 1 |
702.00 | |
0.00% |
0 / 109 |
|||
getconsolidatedResultSheetStaffSide | |
0.00% |
0 / 1 |
156.00 | |
0.00% |
0 / 47 |
|||
getAllStudentSubjectMarkDetailsByRequest | |
0.00% |
0 / 1 |
182.00 | |
0.00% |
0 / 84 |
|||
getAllRegistredStudentRevaluationMarkDetails | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 103 |
|||
getRevaluationMemoForStudents | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 8 |
|||
getStudentSubjectCreditDetails | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 38 |
|||
getAllRegistredStudentMarkDetailsForGradeUpgradation | |
0.00% |
0 / 1 |
210.00 | |
0.00% |
0 / 194 |
|||
getRevaluationStudentListAndOtherDetails | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 42 |
|||
getAllRevaluationRegistredStudentMarkDetails | |
0.00% |
0 / 1 |
132.00 | |
0.00% |
0 / 84 |
|||
getRevaluationIndividualMarkCardForStudents | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 11 |
|||
getExamRegistrationDetailsDataForRevaluationIndividualReports | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 47 |
|||
getFinalMarkCardForStudents | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 33 |
|||
getCurrentStudentBatchDetails | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 51 |
|||
getCurrentStudentExamResultMultipleSemesters | |
0.00% |
0 / 1 |
110.00 | |
0.00% |
0 / 101 |
|||
getStudentSubjectResults | |
0.00% |
0 / 1 |
110.00 | |
0.00% |
0 / 69 |
<?php | |
namespace com\linways\ec\core\service; | |
use com\linways\ec\core\dto\ExamRegistrationBatch; | |
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\StudentMarkListServiceMapper; | |
use com\linways\ec\core\request\SearchExamRegistrationBatchRequest; | |
use com\linways\ec\core\service\ExamRegistrationService; | |
use com\linways\ec\core\service\CommonExamService; | |
use com\linways\ec\core\constant\SettingsConstants; | |
use com\linways\core\ams\professional\service\CommonService; | |
use com\linways\ec\core\constant\StudentExamRegistrationStatus; | |
use com\linways\ec\core\constant\ExamRegistrationTypeConstants; | |
use com\linways\core\ams\professional\util\CommonUtil; | |
use com\linways\ec\core\service\RegularConsolidatedMarkListGenerator\RegularConsolidatedMarkListGenerator; | |
use com\linways\ec\core\service\RegularIndividualMarkCardGenerator\RegularIndividualMarkCardGenerator; | |
use com\linways\ec\core\service\SupplementaryConsolidatedMarkListGenerator\SupplementaryConsolidatedMarkListGenerator; | |
use com\linways\ec\core\service\SupplementaryIndividualMarkCardGenerator\SupplementaryIndividualMarkCardGenerator; | |
use com\linways\ec\core\service\RevaluationIndividualMarkCardGenerator\RevaluationIndividualMarkCardGenerator; | |
use com\linways\ec\core\service\RevaluationMemoGenerator\RevaluationMemoGenerator; | |
use com\linways\ec\core\service\StudentExamRegistrationService; | |
use com\linways\ec\core\request\SearchRuleRequest; | |
use com\linways\ec\core\service\ExamRegistrationBatchService; | |
use com\linways\ec\core\service\RuleService; | |
use com\linways\core\ams\professional\util\PdfUtil; | |
use com\linways\base\util\TwigRenderer; | |
use TCPDFBarcode; | |
class StudentMarkListService extends BaseService | |
{ | |
use MakeSingletonTrait; | |
private function __construct() { | |
$this->mapper = StudentMarkListServiceMapper::getInstance()->getMapper(); | |
} | |
/** | |
* get Passed Students In Supply ExamRegistrations | |
* @param $searchRequest | |
* @return $programResult | |
*/ | |
public function getStudentListAndOtherDetails($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$searchRuleRequest = new SearchRuleRequest; | |
$searchRuleRequest->name = "INDIVIDUAL_MARK_CARD_SETTINGS"; | |
$individualMarkCardSettings = reset(RuleService::getInstance()->searchRule($searchRuleRequest))->rule; | |
$isSeperateNewAndOldFormatMarkCard = false; | |
$displayOnlineMarksCard = false; | |
$enableWithHeldReason = false; | |
$isShowSemestersForPgDiploma = false; | |
$isSPlusRInSupplementaryMarkCard = false; | |
$isOnlySPlusRInSupplementaryMarkCard = false; | |
$request = new \stdClass; | |
$response = new \stdClass; | |
$response->firstYearSemesterList = []; | |
$examRegistrationDetails = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$examRegistrationDetailsArray = ExamRegistrationService::getInstance()->searchDetailedExamRegistrationDetails($request); | |
if(empty($examRegistrationDetailsArray)){ | |
throw new ExamControllerException(ExamControllerException::NO_DETAILS_FOUND,"No Details Found"); | |
} | |
else{ | |
$examRegistrationDetails->name = $examRegistrationDetailsArray[0]->name; | |
$examRegistrationDetails->id = $examRegistrationDetailsArray[0]->id; | |
$examRegistrationDetails->type = $examRegistrationDetailsArray[0]->type; | |
$examRegistrationDetails->groupId = $examRegistrationDetailsArray[0]->groups[0]->groupId; | |
$examRegistrationDetails->groupName = $examRegistrationDetailsArray[0]->groups[0]->groupName; | |
$examRegistrationDetails->courseTypeID = $examRegistrationDetailsArray[0]->groups[0]->courseTypeID; | |
$examRegistrationDetails->courseTypeName = $examRegistrationDetailsArray[0]->groups[0]->courseTypeName; | |
$examRegistrationDetails->batchStartYear = $examRegistrationDetailsArray[0]->groups[0]->batchStartYear; | |
$examRegistrationDetails->deptID = $examRegistrationDetailsArray[0]->groups[0]->deptID; | |
$examRegistrationDetails->deptName = $examRegistrationDetailsArray[0]->groups[0]->deptName; | |
$examRegistrationDetails->degreeName = $examRegistrationDetailsArray[0]->groups[0]->degreeName; | |
$examRegistrationDetails->academicTermId = $examRegistrationDetailsArray[0]->groups[0]->academicTermId; | |
$examRegistrationDetails->academicTermName = $examRegistrationDetailsArray[0]->groups[0]->academicTermName; | |
if(($examRegistrationDetails->courseTypeName == "PG") && ($examRegistrationDetails->degreeName == "DIPLOMA")){ | |
$isShowSemestersForPgDiploma = true; | |
$response->firstYearSemesterList = CommonExamService::getInstance()->getFirstYearSemesters(); | |
} | |
if($individualMarkCardSettings && $individualMarkCardSettings->isSeperateNewAndOldFormat){ | |
$isSeperateNewAndOldFormatMarkCard = true; | |
} | |
if($individualMarkCardSettings && $individualMarkCardSettings->displayRegularOnlineMarkCard){ | |
$displayOnlineMarksCard = true; | |
} | |
if($individualMarkCardSettings && $individualMarkCardSettings->enableReasonForWithHeld){ | |
$enableWithHeldReason = true; | |
} | |
if($individualMarkCardSettings && $individualMarkCardSettings->isSPlusRInSupplementaryMarkCard){ | |
$isSPlusRInSupplementaryMarkCard = true; | |
} | |
if($individualMarkCardSettings && $individualMarkCardSettings->isOnlySPlusRInSupplementaryMarkCard){ | |
$isOnlySPlusRInSupplementaryMarkCard = true; | |
} | |
$studentsDetails = $this->getAllRegistredStudentMarkDetails($request); | |
$registeredStudents = []; | |
if( $individualMarkCardSettings->sortByRollNumber ){ | |
uasort($studentsDetails, function($a, $b) { | |
return ($a->rollNo > $b->rollNo); | |
}); | |
} | |
foreach($studentsDetails as $student){ | |
$registeredStudents[$student->studentId]->studentId = $student->studentId; | |
$registeredStudents[$student->studentId]->isSelected = false; | |
$registeredStudents[$student->studentId]->studentName = $student->studentName; | |
$registeredStudents[$student->studentId]->regNo = $student->regNo; | |
$registeredStudents[$student->studentId]->rollNo = $student->rollNo; | |
$registeredStudents[$student->studentId]->withHeldStatus = $student->isResultWithHeld ? true : false; | |
$registeredStudents[$student->studentId]->examRegistrationId = $examRegistrationDetails->id ; | |
} | |
if(empty($registeredStudents)){ | |
throw new ExamControllerException(ExamControllerException::NO_DETAILS_FOUND,"No Details Found"); | |
} | |
$registeredStudents = array_values($registeredStudents); | |
$response->examRegistrationDetails = $examRegistrationDetails; | |
$response->studentList = $registeredStudents; | |
$response->displayOnlineMarksCard = $displayOnlineMarksCard; | |
$response->enableWithHeldReason = $enableWithHeldReason; | |
$response->isShowSemestersForPgDiploma = $isShowSemestersForPgDiploma; | |
$response->isSeperateNewAndOldFormatMarkCard = $isSeperateNewAndOldFormatMarkCard; | |
$response->isSPlusRInSupplementaryMarkCard = $isSPlusRInSupplementaryMarkCard; | |
$response->isOnlySPlusRInSupplementaryMarkCard = $isOnlySPlusRInSupplementaryMarkCard; | |
return $response; | |
} | |
} | |
public function getconsolidatedMarkSheetForBatch($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$request->hideSeal = false; | |
$request->hideExternalOrInternalMark = false; | |
if($searchRequest->hideExternalOrInternalMark =="true" || $searchRequest->hideExternalOrInternalMark === true){ | |
$request->hideExternalOrInternalMark = true; | |
} | |
if($searchRequest->hideSeal =="true" || $searchRequest->hideSeal === true){ | |
$request->hideSeal = true; | |
} | |
$programResult = RegularConsolidatedMarkListGenerator::getInstance()->getConsolidatedMarkListResultData($request); | |
return $programResult; | |
} | |
public function getIndividualMarkCardForStudents($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$request->markCardOption = $searchRequest->markCardOption; | |
$request->displayContentOptions = $searchRequest->displayContentOptions; | |
$request->selectedSemesters = $searchRequest->selectedSemesters; | |
$request->studentId = $searchRequest->studentId; | |
$programResult = RegularIndividualMarkCardGenerator::getInstance()->getIndividualMarkCardResultData($request); | |
return $programResult; | |
} | |
/** | |
* get All Registered Students Details | |
* @param $searchRequest | |
* @return $studentDataDetails | |
*/ | |
public function getAllRegistredStudentMarkDetails($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->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 spa.student_id IN ( $studentIdString )"; | |
} | |
if(!empty($searchRequest->orderByRollNo)) { | |
$orderBy = "ORDER BY spa.properties->>'$.rollNumber' ASC"; | |
} | |
$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, | |
eserd.properties->>'$.isResultWithHeld' AS isResultWithHeld, | |
eserd.properties->>'$.universityExamSeatNo' AS seatNo, | |
eserd.properties->>'$.universityExamSeatNo' AS seatNoOld | |
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 | |
esar.ec_exam_registration_type = eer.type AND | |
((CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND | |
CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID') OR | |
esar.properties->>'$.studentAttendanceStatus' = 'FE' AND | |
esar.properties->>'$.registrationStatus' ='NOT_REGISTERED' ) | |
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 | |
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 getAllRegistredStudentMarkDetailsDummyData($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 "; | |
$joinCondition = ""; | |
if ( $searchRequest->orderByCurriculum ){ | |
$joinCondition = " INNER JOIN cm_syllabus_academic_term_settings csats ON csats.id = cap.cm_syllabus_academic_term_settings_id | |
INNER JOIN cm_curriculum_syllabus_relation ccsr ON ccsr.cm_syllabus_id = csats.cm_syllabus_id AND ccsr.cm_curriculum_id = g.cm_curriculum_id "; | |
$orderBy = "ORDER BY spa.properties->>'$.registerNumber' ASC , ccsr.orderNo 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 )"; | |
} | |
if(!empty($searchRequest->excludeMinorHonor)) { | |
$whereQuery .= " AND ( (eer.properties ->> '$.isHonorCourse' IS NULL OR eer.properties ->> '$.isHonorCourse' != '1') AND (eer.properties ->> '$.isMinorCourse' IS NULL OR eer.properties ->> '$.isMinorCourse' != '1'))"; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID AS id, | |
sa.studentID AS studentId, | |
sa.studentName, | |
sa.studentMother AS motherName, | |
spa.properties->>'$.rollNumber' AS rollNo, | |
spa.properties->>'$.registerNumber' AS regNo, | |
spa.properties->>'$.universityRegisterNumber' AS universityRegNo, | |
sa.admissionNo, | |
sa.studentBirthday as dob, | |
sa.myImage, | |
sa.fatherName as fatherName, | |
sa.reservationID AS reservationID, | |
g.properties ->> '$.startYear' as startYear, | |
sa.abcId as abcId, | |
sa.student_aadhar_name AS studentAadharName, | |
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, | |
religion.religionName AS religionName, | |
dept.deptName, | |
dept.departmentDesc as deptDesc, | |
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, | |
COALESCE(cap.properties ->> '$.order', 0) * 100 + COALESCE(aps.properties ->> '$.order', 0) as subjectPriority, | |
eserd.properties->>'$.universityExamSeatNo' AS universityExamSeatNo, | |
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_details AS semesterMarkDetails, | |
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, | |
aps.properties ->> '$.classType' AS classType, | |
aps.properties ->>'$.courseCode' AS courseCode, | |
aps.properties ->> '$.excludeSubjectFromTotal' AS excludeSubjectFromTotal, | |
scat.subjectcatID AS subjectCategoryId, | |
scat.subjectcatName AS subjectCategoryName, | |
scat.subjectcatPriority AS subjectCategoryPriority, | |
s.id AS amsSubjectId, | |
s.name AS subjectName, | |
s.description AS subjectDesc, | |
eers.cm_academic_paper_subjects_id AS academicPaperSubjectId, | |
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, | |
esmdsub.mark_details ->>'$.revaluationId' AS subjectRevaluationId, | |
esmdsub.mark_details ->>'$.hasRevaluationMark' AS subjectHasRevaluationMark, | |
esmdsub.mark_details ->>'$.withoutRevaluationIsFailed' AS subjectWithoutRevaluationIsFailed, | |
esmdsub.mark_details ->>'$.withoutRevaluationGrade' AS subjectWithoutRevaluationGrade, | |
esmdsub.mark_details ->>'$.subCoursesResultStatus' AS subCoursesResultStatus, | |
esmdsub.mark_details ->>'$.subCoursesInternalMaxMark' AS subCoursesInternalMaxMark, | |
esmdsub.mark_details ->>'$.subCoursesExternalMaxMark' AS subCoursesExternalMaxMark, | |
esmdsub.mark_details ->>'$.subCoursesTotalMaxMark' AS subCoursesTotalMaxMark, | |
esmdsub.mark_details ->>'$.subCoursesInternalMark' AS subCoursesInternalMark, | |
esmdsub.mark_details ->>'$.subCoursesExternalMark' AS subCoursesExternalMark, | |
esmdsub.mark_details ->>'$.subCoursesGradePoint' AS subCoursesGradePoint, | |
esmdsub.mark_details ->>'$.subCoursesGrade' AS subCoursesGrade, | |
esmdsub.mark_details ->>'$.subCoursesTotalObtainedMark' AS subCoursesTotalObtainedMark, | |
esmdsub.mark_details ->>'$.subCoursesCreditGradePoint' AS subCoursesCreditGradePoint, | |
esar.properties ->>'$.studentAttendanceStatus' AS studentInternalAttendanceStatus, | |
IF(esar.properties->>'$.syllabusSubType' = 'MOOC',1,0) AS isMoocSubject, | |
esar.properties->>'$.MOOC_SUBJECT_CODE' as moocSubjectCode, | |
esar.properties->>'$.MOOC_SUBJECT_NAME' as moocSubjectName, | |
esar.properties->>'$.MOOC_SUBJECT_MONTH_YEAR' as moocSubjectMonthYear, | |
esar.properties->>'$.syllabusSubType' as syllabusSubType, | |
esar.properties->>'$.moocCertificateStatus' as moocCertificateStatus, | |
esar.properties->>'$.registrationType' as registrationType, | |
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 AS 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, | |
ecmdcourse.failed_status AS courseFailedStatus, | |
esbrm.ec_block_student_reason_id as blockStudentReasonId, | |
ebsr.name as blockReasonName, | |
cpsa.staffName as contactPersonName, | |
ebsr.properties ->> '$.description' AS contactPersonDecription, | |
eserd.properties->>'$.isResultWithHeld' AS isResultWithHeld, | |
eer.id as examRegId, | |
eerb.properties as examBatchProperties, | |
eer.type as examType, | |
cst.name as subjectTypeName | |
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 | |
$joinCondition | |
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' ) OR | |
CAST(esar.properties->>'$.studentAttendanceStatus' AS CHAR) = 'FE' AND | |
CAST(esar.properties->>'$.registrationStatus' AS CHAR) ='NOT_REGISTERED') | |
INNER JOIN ec_student_exam_registration_details eserd ON | |
eserd.student_id = esar.student_id AND | |
eserd.ec_exam_registration_id = eer.id | |
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 | |
LEFT JOIN ec_student_block_reason_mapping esbrm ON | |
esbrm.student_id = sa.studentID AND esbrm.exam_registration_id = eer.id AND | |
esbrm.blocking_type = 'RESULT_BLOCKING' | |
LEFT JOIN ec_block_student_reason ebsr ON | |
ebsr.id = esbrm.ec_block_student_reason_id AND | |
ebsr.type = 'SEMESTER_WISE' | |
LEFT JOIN staffaccounts cpsa ON | |
cpsa.staffID = ebsr.contact_person_id | |
LEFT JOIN subject_category scat ON | |
scat.subjectcatID = aps.properties ->> '$.subjectTypeId' | |
LEFT JOIN religion religion ON | |
religion.religionID = sa.religion | |
LEFT JOIN cm_subject_types cst ON cst.id = aps.subject_type_id | |
WHERE 1=1"; | |
$studentMarkDetails = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[StudentMarkListServiceMapper::OVER_ALL_MARK_DETAILS]); | |
foreach($studentMarkDetails as $student){ | |
$student->isResultBlocked = false; | |
$student->blockingMsg = ""; | |
if($student->blockReasons ) { | |
$blockReasonMsg = "Result Blocked "; | |
foreach($student->blockReasons as $reason){ | |
$blockReasonMsg .= "<br> * Due to ".$reason->name .". "; | |
$blockReasonMsg .= $reason->contactPersonName ? "Please contact ".$reason->contactPersonName :""; | |
$blockReasonMsg .= $reason->contactPersonDecription ? " ".$reason->contactPersonDecription :""; | |
} | |
$student->isResultBlocked = true; | |
$student->blockingMsg = $blockReasonMsg; | |
} | |
} | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentMarkDetails; | |
} | |
/** | |
* Method for getting mark list template for an examType | |
* @input $examType | |
* Return marklistTemplate | |
* @author Krishnajith | |
*/ | |
public function getUniversityMarkListTemplate($examType){ | |
$sql = null; | |
$examType = $this->realEscapeString($examType); | |
$markListTemplate = null; | |
$sql = "SELECT | |
templateName AS templateName | |
FROM | |
universityMarkListTemplates | |
WHERE | |
examType = '$examType' AND | |
isActive = 1"; | |
try { | |
$markListTemplate = $this->executeQueryForObject($sql)->templateName; | |
} catch (\Exception $e) { | |
throw new ExamControllerException($e->getCode(), $e->getMessage()); | |
} | |
return $markListTemplate; | |
} | |
/** | |
* Get Supplementary consolidated mark sheet | |
* @param searchRequest | |
* @return programResult | |
* @author Krishnajith | |
*/ | |
public function getSupplementaryConsolidatedMarkSheetForBatch($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$searchrequest = new \stdClass; | |
$searchrequest->examRegistrationId = $searchRequest->examRegistrationId; | |
$searchrequest->groupId = $searchRequest->groupId; | |
$examRegistrationDetails = ExamRegistrationService::getInstance()->searchDetailedExamRegistrationDetails($searchrequest); | |
$request->selectedSemesters = $examRegistrationDetails[0]->groups[0]->academicTermId; | |
$request->examMonth = $examRegistrationDetails[0]->examMonth; | |
$request->examYear = $examRegistrationDetails[0]->examYear; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$request->marksCardType = $searchRequest->marksCardType; | |
$request->hideSeal = false; | |
$request->hideExternalOrInternalMark = false; | |
if($searchRequest->hideExternalOrInternalMark =="true" || $searchRequest->hideExternalOrInternalMark === true){ | |
$request->hideExternalOrInternalMark = true; | |
} | |
if($searchRequest->hideSeal =="true" || $searchRequest->hideSeal === true){ | |
$request->hideSeal = true; | |
} | |
$programResult = SupplementaryConsolidatedMarkListGenerator::getInstance()->getConsolidatedMarkListResultData($request); | |
return $programResult; | |
} | |
/** | |
* Get Supplementary consolidated mark sheet | |
* @param searchRequest | |
* @return programResult | |
* @author Krishnajith | |
*/ | |
public function getSupplementaryStudentDetails($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->hideSeal = false; | |
$request->hideExternalOrInternalMark = false; | |
if($searchRequest->hideExternalOrInternalMark =="true" || $searchRequest->hideExternalOrInternalMark === true){ | |
$request->hideExternalOrInternalMark = true; | |
} | |
if($searchRequest->hideSeal =="true" || $searchRequest->hideSeal === true){ | |
$request->hideSeal = true; | |
} | |
$programResult = SupplementaryConsolidatedMarkListGenerator::getInstance()->getConsolidatedMarkListResultData($request); | |
return $programResult; | |
} | |
/** | |
* Get Supplementary Individual mark sheet | |
* @param searchRequest | |
* @return programResult | |
* @author Krishnajith | |
*/ | |
public function getSupplementaryIndividualMarkCardForStudents($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$searchrequest = new \stdClass; | |
$searchrequest->examRegistrationId = $searchRequest->examRegistrationId; | |
$searchrequest->groupId = $searchRequest->groupId; | |
$examRegistrationDetails = ExamRegistrationService::getInstance()->searchDetailedExamRegistrationDetails($searchrequest); | |
$request->selectedSemesters = $examRegistrationDetails[0]->groups[0]->academicTermId; | |
$request->examMonth = $examRegistrationDetails[0]->examMonth; | |
$request->examYear = $examRegistrationDetails[0]->examYear; | |
$request->supplementaryExamRegistrationId = $searchRequest->examRegistrationId; | |
$request->markCardOption = $searchRequest->markCardOption; | |
$request->displayContentOptions = $searchRequest->displayContentOptions; | |
$request->selectedSemesters = $searchRequest->selectedSemesters; | |
$request->studentId = $searchRequest->studentId; | |
$programResult = SupplementaryIndividualMarkCardGenerator::getInstance()->getIndividualMarkCardResultData($request); | |
return $programResult; | |
} | |
/** | |
* Get Mark History For Student Subject | |
* @param searchRequest | |
* @return markHistory | |
* @author Krishnajith | |
*/ | |
public function getMarkHistoryForStudentSubject($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try | |
{ | |
$orderBy = "ORDER BY eer.properties ->> '$.examYear' ASC , eer.properties ->> '$.examMonth' 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->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','",$searchRequest->studentId) . "'" : "'".$searchRequest->studentId."'"; | |
$whereQuery .= " AND sa.studentID IN ( $studentIdString )"; | |
} | |
if(!empty($searchRequest->academicPaperSubjectId)) { | |
$academicPaperSubjectIdString = is_array($searchRequest->academicPaperSubjectId) ? "'" . implode("','",$searchRequest->academicPaperSubjectId) . "'" : "'".$searchRequest->academicPaperSubjectId."'"; | |
$whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdString )"; | |
} | |
$query = "SELECT DISTINCT | |
esmdsub.percentage as percentage, | |
esmdsub.grade as grade, | |
esmdsub.failed_status as failedStatus, | |
esmdsub.total_mark AS markObtained, | |
esmdsub.class AS class, | |
CAST(esmdsub.mark_details ->>'$.externalMark' AS DECIMAL(8,2)) + CAST(IF (esmdsubcon.mark_details ->>'$.graceMark' IS NULL,0,esmdsubcon.mark_details ->>'$.graceMark') AS DECIMAL(8,2)) AS externalMark, | |
esmdsub.mark_details ->>'$.resultStatus' AS isExternalFailed, | |
esmdsub.mark_details ->>'$.wgpa' AS wgpa, | |
1 AS isExternal, | |
eer.id AS examRegistrationId, | |
eer.type AS examType, | |
eer.properties ->> '$.examYear' AS examYear, | |
eer.properties ->> '$.examMonth' AS examMonth | |
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 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 | |
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 studentaccount sa ON | |
sa.studentID = esar.student_id | |
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 | |
WHERE 1=1"; | |
$marksHistory = $this->executeQueryForList($query.$whereQuery.$orderBy); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $marksHistory; | |
} | |
/** | |
* processSupplementaryStudentData | |
* @param studentDetails | |
* @return studentDetails | |
* @author Krishnajith | |
*/ | |
public function processSupplementaryStudentData($studentMarkDetails,$examRegistrationDetails){ | |
$response = new \stdClass; | |
$totalStudentDetails = new \stdClass; | |
$totalStudentDetails->totalStudents = count($studentMarkDetails); | |
$displaySubjectArray = []; | |
$displaySubjectCategories = []; | |
$studentsDetails = []; | |
foreach($studentMarkDetails as $student){ | |
$barcodeObj = new TCPDFBarcode($student->studentDetails->registerNo, 'C128'); | |
$studentsDetails[$student->id]->barcodeObj = $barcodeObj->getBarcodeHTML($w = 1, $h = 30, $color = 'black'); | |
$studentsDetails[$student->id]->id = $student->id; | |
$studentsDetails[$student->id]->isResultBlocked = $student->isResultBlocked; | |
$studentsDetails[$student->id]->blockingMsg = $student->blockingMsg; | |
$studentsDetails[$student->id]->name = $student->studentDetails->name; | |
$studentsDetails[$student->id]->isPG = $student->studentDetails->courseType == "PG" ? true : false; | |
$studentsDetails[$student->id]->myImage = $student->studentDetails->myImage; | |
$studentsDetails[$student->id]->registerNo = $student->studentDetails->registerNo; | |
$studentsDetails[$student->id]->rollNo = $student->studentDetails->rollNo; | |
$studentsDetails[$student->id]->admissionNo = $student->studentDetails->admissionNo; | |
$studentsDetails[$student->id]->passPercentageDisplayMessage = $student->studentDetails->academicYear < 2019 ? "For a pass in each course 35% mark or P grade is necessary." : "For a pass in each course 35% mark or P grade is necessary."; | |
$studentsDetails[$student->id]->roundOff = $student->studentDetails->academicYear < 2019 ? 2 : 3; | |
if ($student->studentDetails->courseType == "PG"){ | |
$studentsDetails[$student->id]->roundOff = 2; | |
} | |
foreach($student->academicTerms as $academicTerm){ | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->id = $academicTerm->id; | |
$semesterNames = CommonExamService::getInstance()->getDifferentSemesterName($academicTerm->name); | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semInRomanLetter = $semesterNames->romanLetter; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semInFullName = $semesterNames->fullName; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semInSemNumber = $semesterNames->semNumber; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterWiseFailedStatus = $academicTerm->isFailed; | |
foreach($academicTerm->markHistory as $semMarkHistory){ | |
if($semMarkHistory->examRegistrationId == $examRegistrationDetails->examRegistrationId){ | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->examRegistrationWiseFailedStatus = $semMarkHistory->failedStatus; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->failedStatus = $semMarkHistory->failedStatus; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterGrade = $semMarkHistory->grade; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterCredit = $academicTerm->credit; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterGradePoint = $semMarkHistory->gradePoint; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterCreditGradePoint = $semMarkHistory->creditGradePoint; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterSgpa = round($semMarkHistory->sgpa, $studentsDetails[$student->id]->roundOff); | |
// in this case using for CCM to get accurate sgpa.please don't do round off of this semesterRawSgpa variable | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterRawSgpa = $semMarkHistory->sgpa; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterpassPercentage = $academicTerm->passPercentage; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterTotalMinimumMarks = $academicTerm->totalMarks * $academicTerm->passPercentage / 100; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterTotalMarks = $academicTerm->totalMarks; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterMarkObtained = $semMarkHistory->supplyMarkObtained; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterMarkObtainedInWord = strtoupper(CommonUtil::convertNumberToWords($semMarkHistory->totalMarks))." ONLY"; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterPercentage = round($semMarkHistory->percentage,2); | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterClass = $semMarkHistory->class; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterCgpa = $semMarkHistory->semesterCgpa; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->earnedCredits = $semMarkHistory->totalEarnedCredits; | |
$studentsDetails[$student->id]->overallClass = $semMarkHistory->class; | |
$studentsDetails[$student->id]->overallGrade= $semMarkHistory->grade; | |
$studentsDetails[$student->id]->failedStatus = $semMarkHistory->failedStatus; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->examType = $semMarkHistory->historyType; | |
} | |
} | |
foreach( $academicTerm->subjects as $subject){ | |
$displaySubjectArray[$subject->id]= $subject; | |
$displaySubjectCategories[$subject->categoryId]->categoryId = $subject->categoryId; | |
$displaySubjectCategories[$subject->categoryId]->categoryName = $subject->categoryName; | |
$displaySubjectCategories[$subject->categoryId]->subjects[$subject->id] = $subject; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->id = $subject->id; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->name = $subject->name; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->code = $subject->code; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->priority = $subject->priority; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->externalMaxMark = $subject->externalMaxMark; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->internalMaxMark = $subject->internalMaxMark; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->class = $subject->class; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->grade = $subject->grade; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->percentage = round($subject->percentage,2); | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->internalMark = $studentsDetails[$student->id]->isPG ? $subject->internalGradePoint : $subject->internalMark; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->externalMark = $studentsDetails[$student->id]->isPG ? $subject->externalGradePoint : $subject->externalMark; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->totalMaxMark = $subject->totalMarks; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->markObtained = $studentsDetails[$student->id]->isPG ? $subject->gradePoint : $subject->markObtained; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->markObtainedInWord = strtoupper(CommonUtil::convertNumberToWords((int)$subject->markObtained)); | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->failedStatus = $subject->isFailed; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->attendanceStatus = $subject->attendanceStatus; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->credit = $subject->credit; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->creditGradePoint = $subject->credit * $subject->gradePoint; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->gradePoint = $subject->gradePoint; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->internalGrade = $subject->internalGrade; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->externalGrade = $subject->externalGrade; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->internalGradePoint = $subject->internalGradePoint; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->externalGradePoint = $subject->externalGradePoint; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->wgpa = $subject->wgpa; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->percentageObtainedExternal = $subject->percentageObtainedExternal; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->percentageObtainedInternal = $subject->percentageObtainedInternal; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->isExternalFailed = $subject->isExternalFailed; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->isInternalFailed = $subject->isInternalFailed; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->isInternal = $subject->isInternal; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->isExternal = $subject->isExternal; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->categoryId = $subject->categoryId; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->categoryName = $subject->categoryName; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->internalPassPercentage = $subject->internalPassPercentage; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->externalPassPercentage = $subject->externalPassPercentage; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->aggregatePassPercentage = $subject->aggregatePassPercentage; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->internalMinimumMark = $subject->internalMaxMark * $subject->internalPassPercentage / 100; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->externalMinimumMark = $subject->externalMaxMark * $subject->externalPassPercentage / 100; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->totalMinimumMark = $subject->totalMarks * $subject->aggregatePassPercentage / 100; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->internalLetterGrade = $subject->internalLetterGrade; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->internalAttendanceStatus = $subject->internalAttendanceStatus; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->externalLetterGrade = $subject->externalLetterGrade; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjectCategories[$subject->categoryId]->categoryId = $subject->categoryId; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjectCategories[$subject->categoryId]->categoryName = $subject->categoryName; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjectCategories[$subject->categoryId]->subjects[$subject->id] = $subject; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->latestExamYear = $subject->latestExamYear; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->latestExamMonth = $subject->latestExamMonth; | |
$studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects[$subject->id]->latestExamMonthName = ExamRegistrationService::getInstance()->getMonthName($subject->latestExamMonth); | |
} | |
// $studentsDetails[$student->id]->academicTerms[$academicTerm->id]->semesterCreditGradePoint = array_sum(array_column($studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects,'creditGradePoint')); | |
} | |
if(count($student->academicTerms) > 1){ | |
$studentsDetails[$student->id]->overallClass = $student->class; | |
$studentsDetails[$student->id]->overallGrade= $student->grade; | |
$studentsDetails[$student->id]->failedStatus = $student->isFailed; | |
} | |
} | |
uasort($studentsDetails[$student->id]->academicTerms[$academicTerm->id]->subjects, function($a, $b) { | |
return ($a->priority > $b->priority); | |
}); | |
$displaySubjectCategories = array_values($displaySubjectCategories); | |
foreach($displaySubjectCategories as $displaySubjectCategory){ | |
$displaySubjectCategory->subjects = array_values($displaySubjectCategory->subjects); | |
} | |
uasort($displaySubjectArray, function($a, $b) { | |
return ($a->priority > $b->priority); | |
}); | |
$displaySubjectArray = array_values($displaySubjectArray); | |
foreach($studentsDetails as $student){ | |
$student->academicTerms = array_values($student->academicTerms); | |
foreach($student->academicTerms as $academicTerm){ | |
$academicTerm->subjects = array_values($academicTerm->subjects); | |
$academicTerm->subjectCategories = array_values($academicTerm->subjectCategories); | |
foreach($academicTerm->subjectCategories as $subCategory){ | |
$subCategory->subjects = array_values($subCategory->subjects); | |
$subCategory->totaCategoryAwardedMark = 0; | |
foreach($subCategory->subjects as $subject){ | |
$subCategory->totaCategoryAwardedMark += $subject->internalMark + $subject->externalMark; | |
} | |
} | |
} | |
} | |
$response->studentsDetails = $studentsDetails; | |
$response->displaySubjects = $displaySubjectArray; | |
$response->displaySubjectCategories = $displaySubjectCategories; | |
return $response; | |
} | |
/** | |
* get Exam Registration Details Data For Consolidated And Individual Reports | |
* @param searchRequest | |
* @return examRegistrationDetails | |
* @author Krishnajith | |
*/ | |
public function getExamRegistrationDetailsDataForConsolidatedAndIndividualReports($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$searchRequest->examRegistrationId = $searchRequest->examRegistrationId; | |
$examRegistrationDetails = new \stdClass; | |
$examRegistrationDetailsArray = ExamRegistrationService::getInstance()->searchDetailedExamRegistrationDetails($searchRequest); | |
if(empty($examRegistrationDetailsArray)){ | |
throw new ExamControllerException(ExamControllerException::NO_DETAILS_FOUND,"No Details Found"); | |
} | |
$examRegistrationDetails->name = $examRegistrationDetailsArray[0]->name; | |
$examRegistrationDetails->properties = $examRegistrationDetailsArray[0]->properties; | |
$examRegistrationDetails->examYear = $examRegistrationDetailsArray[0]->examYear; | |
$examRegistrationDetails->examMonth = $examRegistrationDetailsArray[0]->examMonth; | |
$examRegistrationDetails->examMonthName = $examRegistrationDetailsArray[0]->examMonthName; | |
$examRegistrationDetails->type = $examRegistrationDetailsArray[0]->type; | |
$examRegistrationDetails->groupId = $examRegistrationDetailsArray[0]->groups[0]->groupId; | |
$examRegistrationDetails->groupName = $examRegistrationDetailsArray[0]->groups[0]->groupName; | |
$examRegistrationDetails->departmentDesc = $examRegistrationDetailsArray[0]->groups[0]->departmentDesc; | |
$examRegistrationDetails->degreeDescription = $examRegistrationDetailsArray[0]->groups[0]->degreeDescription; | |
$examRegistrationDetails->courseTypeID = $examRegistrationDetailsArray[0]->groups[0]->courseTypeID; | |
$examRegistrationDetails->courseTypeName = $examRegistrationDetailsArray[0]->groups[0]->courseTypeName; | |
$examRegistrationDetails->academicTermName = $examRegistrationDetailsArray[0]->groups[0]->academicTermName; | |
$examRegistrationDetails->academicTermYear = $examRegistrationDetailsArray[0]->groups[0]->academicTermYear; | |
$examRegistrationDetails->academicOrderNo = $examRegistrationDetailsArray[0]->groups[0]->academicOrderNo; | |
$examRegistrationDetails->departmentSpecialization = $examRegistrationDetailsArray[0]->groups[0]->departmentSpecialization; | |
$examRegistrationDetails->academicTermYearRoman = strtoupper(CommonUtil::convertNumberToRoman($examRegistrationDetails->academicTermYear)); | |
$examRegistrationDetails->academicTermId = $examRegistrationDetailsArray[0]->groups[0]->academicTermId; | |
$semesterNames = CommonExamService::getInstance()->getDifferentSemesterName($examRegistrationDetails->academicTermName); | |
$examRegistrationDetails->semInRomanLetter = $semesterNames->romanLetter; | |
$examRegistrationDetails->semInFullName = $semesterNames->fullName; | |
$examRegistrationDetails->semInSemNumber = $semesterNames->semNumber; | |
$examRegistrationDetails->batchStartYear = $examRegistrationDetailsArray[0]->groups[0]->batchStartYear; | |
$examRegistrationDetails->deptID = $examRegistrationDetailsArray[0]->groups[0]->deptID; | |
$examRegistrationDetails->deptName = $examRegistrationDetailsArray[0]->groups[0]->deptName; | |
$examRegistrationDetails->degreeName = $examRegistrationDetailsArray[0]->groups[0]->degreeName ; | |
$examRegistrationDetails->degreeDescription = $examRegistrationDetailsArray[0]->groups[0]->degreeDescription ; | |
$examRegistrationDetails->streamName = $examRegistrationDetailsArray[0]->groups[0]->streamName; | |
$examRegistrationDetails->finalTermId = $examRegistrationDetailsArray[0]->groups[0]->properties->finalTermId; | |
$examRegistrationDetails->publishingStartDate = $examRegistrationDetailsArray[0]->groups[0]->examBatchProperties->publishingStartDate; | |
$examRegistrationDetails->supplyOrImprove = $examRegistrationDetailsArray[0]->type; | |
$examRegistrationDetails->degreeStreamName = $examRegistrationDetailsArray[0]->groups[0]->degreeName." ".$examRegistrationDetailsArray[0]->groups[0]->streamName; | |
$examRegistrationDetails->programName = $examRegistrationDetailsArray[0]->groups[0]->programName; | |
$examRegistrationDetails->isHonorCourse = reset($examRegistrationDetailsArray)->properties->isHonorCourse == "1" ? true : false; | |
$examRegistrationDetails->isMinorCourse = reset($examRegistrationDetailsArray)->properties->isMinorCourse == "1" ? true : false; | |
$examRegistrationDetails->examBatchProperties = $examRegistrationDetailsArray[0]->groups[0]->examBatchProperties; | |
$request = new \stdClass; | |
$request->groupId = $examRegistrationDetails->groupId; | |
$gradeSchemes = $this->getAllGradeScemesByCurriculum($request); | |
return $examRegistrationDetails; | |
} | |
/** | |
* get College Details For Consolidated And Individual Reports | |
* @return collegeData | |
* @author Krishnajith | |
*/ | |
public function getCollegeDetailsForConsolidatedAndIndividualReports(){ | |
$collegeData = new \stdClass; | |
$collegeData->collageName = $GLOBALS['COLLEGE_NAME']; | |
if($GLOBALS['UNIVERSITY_NAME']){ | |
$collegeData->universityName = "AUTONOMOUS COLLEGE AFFILIATED TO ".$GLOBALS['UNIVERSITY_NAME']; | |
} | |
else{ | |
$collegeData->universityName = "AUTONOMOUS COLLEGE "; | |
} | |
return $collegeData; | |
} | |
/** | |
* get All Grade Scemes By Curriculum | |
* @return semesterName | |
* @author Krishnajith | |
*/ | |
public function getAllGradeScemesByCurriculum($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try{ | |
$whereQuery = ""; | |
if(!empty($searchRequest->courseTypeId)) { | |
$whereQuery .= " AND g.properties ->> '$.courseTypeId' = '$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)"; | |
} | |
$orderBy = " ORDER BY gr.name ASC"; | |
$query = "SELECT | |
DISTINCT gr.id, | |
gr.name, | |
gr.range_from, | |
gr.range_to, | |
gr.properties, | |
gs.type | |
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 | |
aps.id = eers.cm_academic_paper_subjects_id | |
INNER JOIN cm_academic_paper ap ON | |
ap.id = aps.cm_academic_paper_id | |
INNER JOIN cm_syllabus_academic_term_settings sats ON | |
sats.id = ap.cm_syllabus_academic_term_settings_id | |
INNER JOIN grade_scheme gs ON | |
gs.id = CAST(sats.properties ->> '$.gradeSchemId'AS CHAR) | |
INNER JOIN grade gr ON | |
gr.grade_scheme_id = gs.id"; | |
$gradeSchemrs = $this->executeQueryForList($query.$whereQuery.$orderBy); | |
} | |
catch (\Exception $e){ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $gradeSchemrs; | |
} | |
/** | |
* get current student exam result | |
* @param $searchRequest | |
* @return $programResult | |
* @author Krishnajith | |
*/ | |
public function getCurrentStudentExamResult($searchRequest){ | |
try{ | |
$request = new \stdClass; | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request->studentId = $searchRequest->studentId; | |
$request->academicTermId = $searchRequest->academicTermId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$request->examType = $searchRequest->examType ?? 'REGULAR'; | |
$request->mappingType = "EXAM_REGISTRATION"; | |
// to check is enable minor honour Exam Registration | |
$isEnableMinorHonorExamRegistration = false; | |
$searchExamRuleRequest = new SearchRuleRequest; | |
$searchExamRuleRequest->name = 'EXAM_REGISTRATION_CREATION_RULE'; | |
$ruleObj = reset(RuleService::getInstance()->searchRule($searchExamRuleRequest)); | |
if($ruleObj){ | |
$isEnableMinorHonorExamRegistration = $ruleObj->rule->isEnableMinorHonorExamRegistration == '1' ? true : false; | |
$searchRequest->notConsiderPublishEndDate = $ruleObj->rule->notConsiderPublishEndDate == '1' ? true : false; | |
} | |
$request->isEnableMinorHonorExamRegistration = $isEnableMinorHonorExamRegistration; | |
if($request->examType == 'REVALUATION'){ | |
$searchRuleRequest = new SearchRuleRequest; | |
$searchRuleRequest->name = "REVALUATION_SETTINGS_RULE"; | |
$settingsRule = reset(RuleService::getInstance()->searchRule($searchRuleRequest))->rule; | |
$isShowIndividualMarkCard = $settingsRule->isShowIndividualMarkCard ? true : false; | |
$request->registrationStatus[] = StudentExamRegistrationStatus::REGISTERED; | |
$currentExamRegistration = reset(StudentExamRegistrationService::getInstance()->getStudentRevaluationDetails($request)); | |
if(!$currentExamRegistration->examRevaluationBatchProperties->isResultPublished){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not published"); | |
} | |
else{ | |
if($currentExamRegistration->examRegistrationPaymentProperties->isResultWithHeld == 1){ | |
throw new ExamControllerException (ExamControllerException::STUDENT_WITH_HELD,"Your result is withheld. Please contact controller of examination"); | |
} | |
else if(strtotime($currentExamRegistration->examRevaluationBatchProperties->publishingStartDate) > strtotime(date("Y-m-d H:i"))){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not published"); | |
} | |
else if(strtotime($currentExamRegistration->examRevaluationBatchProperties->publishingEndDate) < strtotime(date("Y-m-d H:i")) && !($searchRequest->notConsiderPublishEndDate)){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not available since publish date exceeded"); | |
} | |
else{ | |
if($isShowIndividualMarkCard){ | |
$requestForMarkCard = new \stdClass; | |
$requestForMarkCard->examRegistrationId = $currentExamRegistration->id; | |
$requestForMarkCard->studentId = $request->studentId; | |
$displayContentOptions = new \stdClass; | |
$displayContentOptions->enableDateFlag = 1; | |
$displayContentOptions->principalSignFlag = $displayContentOptions->principalNameFlag = 1; | |
$displayContentOptions->collegeSealFlag = $displayContentOptions->collegeHeaderAndLogoFlag = 1; | |
$displayContentOptions->examControllerSignFlag = $displayContentOptions->examControllerNameFlag = 1; | |
$requestForMarkCard->displayContentOptions = $displayContentOptions; | |
$programResult = RevaluationIndividualMarkCardGenerator::getInstance()->getIndividualMarkCardResultData($requestForMarkCard); | |
} | |
else{ | |
$requestForMarkCard = new \stdClass; | |
$requestForMarkCard->examRegistrationId = $currentExamRegistration->id; | |
$requestForMarkCard->studentId = $request->studentId; | |
$programResult = RevaluationMemoGenerator::getInstance()->getRevaluationMemoResultData($requestForMarkCard); | |
} | |
} | |
} | |
} | |
else{ | |
if($searchRequest->examType == 'MINOR' || $searchRequest->examType == 'HONOUR'){ | |
$request->isMinorExamOnly = $searchRequest->examType == 'MINOR' ? true : false; | |
$request->isHonourExamOnly = $searchRequest->examType == 'HONOUR' ? true : false; | |
$request->examType = "REGULAR"; | |
$request->isEnableMinorHonorExamRegistration = false; | |
} | |
$request->registrationStatus == StudentExamRegistrationStatus::REGISTERED; | |
$currentExamRegistration = reset(StudentExamRegistrationService::getInstance()->getRegisteredStudentExamRegistrationDetails($request)); | |
if(!$currentExamRegistration->batchProperties->isResultPublished){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not published"); | |
} | |
else{ | |
if($currentExamRegistration->examRegistrationPaymentProperties->isResultWithHeld == 1){ | |
throw new ExamControllerException (ExamControllerException::STUDENT_WITH_HELD,"Your result is withheld. Please contact controller of examination"); | |
} | |
else if(strtotime($currentExamRegistration->batchProperties->publishingStartDate) > strtotime(date("Y-m-d"))){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not published"); | |
} | |
else if(strtotime($currentExamRegistration->batchProperties->publishingEndDate) < strtotime(date("Y-m-d")) && !($searchRequest->notConsiderPublishEndDate)){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not available since publish date exceeded"); | |
} | |
else{ | |
$requestForMarkCard = new \stdClass; | |
$requestForMarkCard->isStudentSideExamResult = true; | |
$requestForMarkCard->examRegistrationId = $currentExamRegistration->id; | |
$requestForMarkCard->studentId = $request->studentId; | |
$requestForMarkCard->academicTermId = $request->academicTermId; | |
$requestForMarkCard->isMinorOrHonour = ($searchRequest->examType == 'MINOR' || $searchRequest->examType == 'HONOUR') ? true : false; | |
if($currentExamRegistration->examRegistrationType == ExamRegistrationTypeConstants::REGULAR){ | |
$displayContentOptions = new \stdClass; | |
$displayContentOptions->enableDateFlag = 1; | |
$displayContentOptions->principalSignFlag = $displayContentOptions->principalNameFlag = 1; | |
$displayContentOptions->collegeSealFlag = $displayContentOptions->collegeHeaderAndLogoFlag = 1; | |
$displayContentOptions->examControllerSignFlag = $displayContentOptions->examControllerNameFlag = 1; | |
$requestForMarkCard->displayContentOptions = $displayContentOptions; | |
$programResult = RegularIndividualMarkCardGenerator::getInstance()->getIndividualMarkCardResultData($requestForMarkCard); | |
} | |
else if($currentExamRegistration->examRegistrationType == ExamRegistrationTypeConstants::SUPPLEMENTARY){ | |
$programResult = SupplementaryIndividualMarkCardGenerator::getInstance()->getIndividualMarkCardResultData($requestForMarkCard); | |
} | |
} | |
} | |
} | |
} | |
catch (\Exception $e){ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $programResult; | |
} | |
public function getconsolidatedResultSheetStaffSide($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$programResult = new \stdClass; | |
$batchSearchRequest = new SearchExamRegistrationBatchRequest(); | |
$batchSearchRequest->examRegistrationId = $searchRequest->examRegistrationId; | |
$batchSearchRequest->groupId = $searchRequest->groupId; | |
$batchDetails = reset(ExamRegistrationBatchService::getInstance()->searchExamRegistrationBatch($batchSearchRequest)); | |
$searchRuleRequest = new SearchRuleRequest; | |
$searchRuleRequest->name = "RESULT_SHEET_SETTINGS_RULE"; | |
$rule = reset(RuleService::getInstance()->searchRule($searchRuleRequest))->rule; | |
$isNotCheckResultPublishDate = $rule->isNotCheckResultPublishDate ? true : false; | |
$isNotCheckResultPublishEndDate = $rule->isNotCheckResultPublishEndDate ? true : false; | |
if(!$batchDetails->properties->isResultPublished){ | |
$programResult->errorMsg = "Semester result sheet is not available"; | |
} | |
else{ | |
if($batchDetails->properties->isResultWithHeld == 1 && !$isNotCheckResultPublishDate){ | |
$programResult->errorMsg = "Result is withheld. Please contact controller of examination"; | |
} | |
else if(strtotime($batchDetails->properties->publishingStartDate) > strtotime(date("Y-m-d")) && !$isNotCheckResultPublishDate){ | |
$programResult->errorMsg = "Result not published"; | |
} | |
else if(strtotime($batchDetails->properties->publishingEndDate) < strtotime(date("Y-m-d")) && !$isNotCheckResultPublishDate && !($isNotCheckResultPublishEndDate)){ | |
$programResult->errorMsg = "Result not available since publish date exceeded"; | |
} | |
else{ | |
if($batchDetails->examRegistrationType == 'REGULAR'){ | |
$request = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$request->hideSeal = true; | |
$request->hideExternalOrInternalMark = true; | |
$request->isStaffSideExamResultSheet = true; | |
$programResult = RegularConsolidatedMarkListGenerator::getInstance()->getConsolidatedMarkListResultData($request); | |
} | |
else{ | |
$request = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$request->hideSeal = true; | |
$request->hideExternalOrInternalMark = true; | |
$request->isStaffSideExamResultSheet = true; | |
$programResult = SupplementaryConsolidatedMarkListGenerator::getInstance()->getConsolidatedMarkListResultData($request); | |
} | |
} | |
} | |
return $programResult; | |
} | |
/** | |
* get All Student Subject Details Details | |
* @param $searchRequest | |
*/ | |
public function getAllStudentSubjectMarkDetailsByRequest($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try | |
{ | |
$whereQuery = ""; | |
if(!empty($searchRequest->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','",$searchRequest->studentId) . "'" : "'".$searchRequest->studentId."'"; | |
$whereQuery .= " AND esmd.student_id IN ( $studentIdString )"; | |
} | |
if(!empty($searchRequest->academicTermId)) { | |
$academicTermIdString = is_array($searchRequest->academicTermId) ? "'" . implode("','",$searchRequest->academicTermId) . "'" : "'".$searchRequest->academicTermId."'"; | |
$whereQuery .= " AND eerb.properties->>'$.academicTermId' IN ( $academicTermIdString )"; | |
} | |
if(!empty($searchRequest->upToAcademicTermOrderNo)) { | |
$whereQuery .= " AND act.properties ->>'$.orderNo' <= $searchRequest->upToAcademicTermOrderNo "; | |
} | |
if(!empty($searchRequest->upToAcademicTermOrderNoExceptCurrent)) { | |
$whereQuery .= " AND act.properties ->>'$.orderNo' < $searchRequest->upToAcademicTermOrderNoExceptCurrent "; | |
} | |
if(!empty($searchRequest->isHonorCourse)) { | |
$whereQuery .= " AND eer.properties ->> '$.isHonorCourse' = '1' "; | |
} | |
else if(!empty($searchRequest->isMinorCourse)) { | |
$whereQuery .= " AND eer.properties ->> '$.isMinorCourse' = '1' "; | |
} | |
else{ | |
$whereQuery .= " AND ( (eer.properties ->> '$.isHonorCourse' IS NULL OR eer.properties ->> '$.isHonorCourse' != '1') AND (eer.properties ->> '$.isMinorCourse' IS NULL OR eer.properties ->> '$.isMinorCourse' != '1'))"; | |
} | |
if($searchRequest->examMonthLimit && $searchRequest->examYearLimit){ | |
$whereQuery .= " AND UNIX_TIMESTAMP(CONCAT ( eer.properties ->> '$.examYear' ,'-', eer.properties ->> '$.examMonth','-01')) <= UNIX_TIMESTAMP('$searchRequest->examYearLimit-$searchRequest->examMonthLimit-01') "; | |
} | |
if(!empty($searchRequest->examRegistrationType)) { | |
$whereQuery .= " AND eer.`type` = '$searchRequest->examRegistrationType' "; | |
} | |
$query = "SELECT | |
esmd.cm_academic_paper_subjects_id AS paperSubjectId, | |
esmd.mark_details ->>'$.markObtained' AS subjectMarkObtained, | |
esmd.failed_status AS subjectFailedStatus, | |
esmd.mark_details ->>'$.externalMark' AS externalMark, | |
esmd.mark_details ->>'$.gradePoint' AS subjectGradePoint, | |
esmd.mark_details ->>'$.attendanceStatus' AS subjectAttendanceStatus, | |
esmd.mark_details ->>'$.isFinalSemSubject' AS isFinalSemSubject, | |
esmd.mark_details ->>'$.isProjectGroupSubject' AS isProjectGroupSubject, | |
esmd.mark_details ->>'$.finalSemProjectCredit' AS finalSemProjectCredit, | |
esmd.mark_details ->>'$.creditGradePointProject' AS creditGradePointProject, | |
act.id AS academicTermId, | |
act.properties ->>'$.orderNo' AS academicOrderNo, | |
esmd.mark_details ->>'$.creditGradePoint' AS subjectCreditGradePoint, | |
esmd.mark_details ->>'$.excludeSubjectFromTotal' AS excludeSubjectFromTotal, | |
esmd.mark_details ->>'$.revaluationId' AS subjectRevaluationId, | |
esmd.mark_details ->>'$.hasRevaluationMark' AS subjectHasRevaluationMark, | |
esmd.mark_details ->>'$.withoutRevaluationIsFailed' AS subjectWithoutRevaluationIsFailed, | |
esmd.mark_details ->>'$.withoutRevaluationCreditGradePoint' AS subjectWithoutRevaluationCreditGradePoint, | |
esmd.mark_details ->>'$.withoutRevaluationGrade' AS subjectWithoutRevaluationGrade, | |
ecsmd.mark_details ->>'$.credit' AS credit, | |
eer.properties ->> '$.examYear' AS examYear, | |
eer.properties ->> '$.examMonth' AS examMonth, | |
eer.id AS examregid, | |
eerb.properties ->>'$.isResultPublished' AS isResultPublished, | |
eerb.properties ->>'$.publishingStartDate' AS publishingStartDate | |
FROM | |
ec_subject_mark_details esmd | |
INNER JOIN ec_consolidated_subject_mark_details ecsmd ON | |
ecsmd.student_id = esmd.student_id AND | |
ecsmd.groups_id = esmd.groups_id AND | |
ecsmd.cm_academic_paper_subjects_id = esmd.cm_academic_paper_subjects_id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.cm_academic_paper_subjects_id = ecsmd.cm_academic_paper_subjects_id | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.groups_id = ecsmd.groups_id AND | |
eerb.id = eers.ec_exam_registration_batch_id | |
INNER JOIN ec_exam_registration eer ON | |
eer.id = esmd.ec_exam_registration_id | |
AND eer.id = eerb.ec_exam_registration_id | |
INNER JOIN academic_term act ON | |
act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) | |
WHERE 1=1 AND esmd.is_active = 1 AND eer.trashed IS NULL"; | |
$studentMarkDetails = $this->executeQueryForList($query.$whereQuery); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentMarkDetails; | |
} | |
/** | |
* get All Revaluatiom Registered Students Mark Details | |
* @param $searchRequest | |
*/ | |
public function getAllRegistredStudentRevaluationMarkDetails($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try | |
{ | |
$orderBy = "ORDER BY spa.properties->>'$.registerNumber' 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->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 )"; | |
} | |
$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, | |
act.id AS academicTermId, | |
act.name AS academicTermName, | |
dept.deptID, | |
deg.name AS degreeName, | |
deg.id AS degreeId, | |
dept.deptName, | |
ct.courseTypeID, | |
ct.typeName AS courseTypeName, | |
ct.course_Type AS courseType, | |
g.properties ->> '$.startYear' AS academicYear, | |
eerp.name as parentExamRegistrationName, | |
eerp.id as parentExamRegistrationId, | |
eer.name as revaluationName, | |
eer.type AS latestExamType, | |
eer.properties ->> '$.examYear' AS latestExamYear, | |
eer.properties ->> '$.examMonth' AS latestExamMonth, | |
s.code AS subjectCode, | |
aps.properties ->> '$.syllabusName' AS syllabusName, | |
s.name AS subjectName, | |
eers.cm_academic_paper_subjects_id AS academicPaperSubjectId, | |
esmdsubcon.mark_details ->>'$.internalMark' AS internalMark, | |
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_history AS subjectMarkHistory | |
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 program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN ec_exam_registration eerp ON | |
eerp.id = eerb.ec_exam_registration_id AND | |
eerp.trashed IS NULL | |
INNER JOIN ec_exam_registration eer ON | |
eer.properties->>'$.parentExamRegistrationId' = eerp.id AND | |
eer.trashed IS NULL | |
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 | |
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 | |
WHERE 1=1"; | |
$studentMarkDetails = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[StudentMarkListServiceMapper::OVER_ALL_REVALUATION_MARK_DETAILS]); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentMarkDetails; | |
} | |
/** | |
* Revaluation Memo | |
* @param $searchRequest | |
*/ | |
public function getRevaluationMemoForStudents($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request = new \stdClass; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$request->studentId = $searchRequest->studentId; | |
$request->isShowMarkAndGradeInRevaluation = true; | |
$programResult = RevaluationMemoGenerator::getInstance()->getRevaluationMemoResultData($request); | |
return $programResult; | |
} | |
/** | |
* get student subject credit details | |
* @return subjectList | |
*/ | |
public function getStudentSubjectCreditDetails($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try{ | |
$whereQuery = ""; | |
if(!empty($searchRequest->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','",$searchRequest->studentId) . "'" : "'".$searchRequest->studentId."'"; | |
$whereQuery .= " AND ecsmd.student_id IN ( $studentIdString )"; | |
} | |
$orderBy = " ORDER BY eerb.properties->>'$.academicTermId' ASC"; | |
$query = "SELECT | |
ecsmd.student_id AS studentId, | |
ecsmd.cm_academic_paper_subjects_id AS paperSubjectId, | |
ecsmd.failed_status AS FailedStatus, | |
ecsmd.credit, | |
ecsmd.mark_details->>'$.creditGradePoint' AS creditGradePoint, | |
ecsmd.mark_details->>'$.grade' AS grade, | |
ecsmd.mark_details->>'$.gradePoint' AS gradePoint, | |
eerb.properties->>'$.academicTermId' AS academicTermId, | |
at2.name AS academicTermName | |
FROM | |
ec_consolidated_subject_mark_details ecsmd | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.cm_academic_paper_subjects_id = ecsmd.cm_academic_paper_subjects_id | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.groups_id = ecsmd.groups_id AND | |
eerb.id = eers.ec_exam_registration_batch_id | |
INNER JOIN ec_exam_registration eer ON | |
eer.id = eerb.ec_exam_registration_id | |
INNER JOIN academic_term at2 ON | |
at2.id = eerb.properties->>'$.academicTermId' | |
WHERE | |
1 =1 AND eer.`type` = 'REGULAR' AND ecsmd.is_active = 1 AND eer.trashed IS NULL "; | |
$studentSubject = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[StudentMarkListServiceMapper::GET_STUDENT_SUBJECT_CREDIT_DETAILS]); | |
} | |
catch (\Exception $e){ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentSubject; | |
} | |
/** | |
* get All Registered Students Details | |
* @param $searchRequest | |
*/ | |
public function getAllRegistredStudentMarkDetailsForGradeUpgradation($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 )"; | |
} | |
if(!empty($searchRequest->assessmentIds)) { | |
$assessmentIdStr = is_array($searchRequest->assessmentIds) ? "'" . implode("','",$searchRequest->assessmentIds) . "'" : "'".$searchRequest->assessmentIds."'"; | |
$whereQuery .= " AND eers.am_assessment_id IN ( $assessmentIdStr )"; | |
} | |
$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 = 'GRADE_UPGRADATION'"; | |
$columns = " ostm.mark_obtained AS gradeUpgradedMark,"; | |
} | |
if(!empty($searchRequest->considerResolutionAppliedStudents)) { | |
$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 = 'MODERATION'"; | |
$columns = " ostm.mark_obtained AS gradeUpgradedMark,"; | |
} | |
$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->mapper[StudentMarkListServiceMapper::OVER_ALL_MARK_DETAILS]); | |
} | |
catch (\Exception $e) | |
{ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentMarkDetails; | |
} | |
/** | |
* get revalution Student details | |
* @param $searchRequest | |
* @return $programResult | |
*/ | |
public function getRevaluationStudentListAndOtherDetails($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$searchRuleRequest = new SearchRuleRequest; | |
$searchRuleRequest->name = "INDIVIDUAL_MARK_CARD_SETTINGS"; | |
$individualMarkCardSettings = reset(RuleService::getInstance()->searchRule($searchRuleRequest))->rule; | |
$request = new \stdClass; | |
$response = new \stdClass; | |
$examRegistrationDetails = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$studentsDetails = $this->getAllRevaluationRegistredStudentMarkDetails($request); | |
if(empty($studentsDetails)){ | |
throw new ExamControllerException(ExamControllerException::NO_DETAILS_FOUND,"No Details Found"); | |
} | |
$examRegistrationDetails->name = reset($studentsDetails)->examRegistrationName; | |
$examRegistrationDetails->id = reset($studentsDetails)->examRegistrationId; | |
$examRegistrationDetails->type = reset($studentsDetails)->examRegistrationType; | |
$examRegistrationDetails->groupId = reset($studentsDetails)->groupId; | |
$examRegistrationDetails->groupName = reset($studentsDetails)->groupName; | |
$examRegistrationDetails->academicTermId = reset($studentsDetails)->academicTermId; | |
$examRegistrationDetails->academicTermName = reset($studentsDetails)->academicTerm; | |
$registeredStudents = []; | |
if( $individualMarkCardSettings->sortByRollNumber ){ | |
uasort($studentsDetails, function($a, $b) { | |
return ($a->rollNo > $b->rollNo); | |
}); | |
} | |
foreach($studentsDetails as $student){ | |
$registeredStudents[$student->studentId]->studentId = $student->studentId; | |
$registeredStudents[$student->studentId]->isSelected = false; | |
$registeredStudents[$student->studentId]->studentName = $student->studentName; | |
$registeredStudents[$student->studentId]->regNo = $student->regNo; | |
$registeredStudents[$student->studentId]->rollNo = $student->rollNo; | |
$registeredStudents[$student->studentId]->withHeldStatus = $student->isResultWithHeld ? true : false; | |
$registeredStudents[$student->studentId]->examRegistrationId = $student->examRegistrationId ; | |
} | |
if(empty($registeredStudents)){ | |
throw new ExamControllerException(ExamControllerException::NO_DETAILS_FOUND,"No Details Found"); | |
} | |
$registeredStudents = array_values($registeredStudents); | |
$response->examRegistrationDetails = $examRegistrationDetails; | |
$response->studentList = $registeredStudents; | |
return $response; | |
} | |
/** | |
* get All Revaluation Registered Students Details | |
* @param $searchRequest | |
* @return $studentDataDetails | |
*/ | |
public function getAllRevaluationRegistredStudentMarkDetails($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->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 spa.student_id IN ( $studentIdString )"; | |
} | |
if(!empty($searchRequest->orderByRollNo)) { | |
$orderBy = "ORDER BY spa.properties->>'$.rollNumber' ASC"; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID AS id, | |
sa.studentID AS studentId, | |
sa.studentName, | |
spa.properties->>'$.registerNumber' as regNo, | |
spa.properties->>'$.rollNumber' as rollNo, | |
eer.name as examRegistrationName, | |
eer.id as examRegistrationId, | |
eer.type as examRegistrationType, | |
g.id AS groupId, | |
g.name AS groupName, | |
act.id AS academicTermId, | |
act.name AS academicTerm, | |
d.deptName, | |
d.deptID, | |
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 program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN ec_exam_registration eerp ON | |
eerp.id = eerb.ec_exam_registration_id AND | |
eerp.trashed IS NULL | |
INNER JOIN ec_exam_registration eer ON | |
eer.properties->>'$.parentExamRegistrationId' = eerp.id AND | |
eer.trashed IS NULL | |
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.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) | |
LEFT JOIN ec_student_exam_registration_details eserd ON | |
eserd.student_id = esar.student_id AND | |
eserd.ec_exam_registration_id = eer.id | |
WHERE 1=1 "; | |
$studentDataDetails = $this->executeQueryForList($query.$whereQuery.$orderBy); | |
} | |
catch (\Exception $e){ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $studentDataDetails; | |
} | |
/** | |
* Get Revaluation Individual mark sheet | |
* @param searchRequest | |
* @return programResult | |
* @author Krishnajith | |
*/ | |
public function getRevaluationIndividualMarkCardForStudents($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request = new \stdClass; | |
$request->groupId = $searchRequest->groupId; | |
$request->examRegistrationId = $searchRequest->examRegistrationId; | |
$request->markCardOption = $searchRequest->markCardOption; | |
$request->displayContentOptions = $searchRequest->displayContentOptions; | |
$request->selectedSemesters = $searchRequest->selectedSemesters; | |
$request->studentId = $searchRequest->studentId; | |
$programResult = RevaluationIndividualMarkCardGenerator::getInstance()->getIndividualMarkCardResultData($request); | |
return $programResult; | |
} | |
/** | |
* get Exam Registration Details Data For Revaluation Individual Report | |
* @param searchRequest | |
* @return examRegistrationDetails | |
* @author Krishnajith | |
*/ | |
public function getExamRegistrationDetailsDataForRevaluationIndividualReports($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$examRegistrationDetails = new \stdClass; | |
$examRegistrationDetailsArray = ExamRegistrationService::getInstance()->searchDetailedExamRevaluationDetails($searchRequest); | |
if(empty($examRegistrationDetailsArray)){ | |
throw new ExamControllerException(ExamControllerException::NO_DETAILS_FOUND,"No Details Found"); | |
} | |
$examRegistrationDetails->examRegistrationId = $examRegistrationDetailsArray[0]->id; | |
$examRegistrationDetails->name = $examRegistrationDetailsArray[0]->name; | |
$examRegistrationDetails->parentExamRegistrationId = $examRegistrationDetailsArray[0]->parentExamRegistrationId; | |
$examRegistrationDetails->properties = $examRegistrationDetailsArray[0]->properties; | |
$examRegistrationDetails->examYear = $examRegistrationDetailsArray[0]->examYear; | |
$examRegistrationDetails->examMonth = $examRegistrationDetailsArray[0]->examMonth; | |
$examRegistrationDetails->examMonthName = $examRegistrationDetailsArray[0]->examMonthName; | |
$examRegistrationDetails->type = $examRegistrationDetailsArray[0]->type; | |
$examRegistrationDetails->groupId = $examRegistrationDetailsArray[0]->groups[0]->groupId; | |
$examRegistrationDetails->groupName = $examRegistrationDetailsArray[0]->groups[0]->groupName; | |
$examRegistrationDetails->departmentDesc = $examRegistrationDetailsArray[0]->groups[0]->departmentDesc; | |
$examRegistrationDetails->degreeDescription = $examRegistrationDetailsArray[0]->groups[0]->degreeDescription; | |
$examRegistrationDetails->courseTypeID = $examRegistrationDetailsArray[0]->groups[0]->courseTypeID; | |
$examRegistrationDetails->courseTypeName = $examRegistrationDetailsArray[0]->groups[0]->courseTypeName; | |
$examRegistrationDetails->academicTermName = $examRegistrationDetailsArray[0]->groups[0]->academicTermName; | |
$examRegistrationDetails->academicTermYear = $examRegistrationDetailsArray[0]->groups[0]->academicTermYear; | |
$examRegistrationDetails->academicOrderNo = $examRegistrationDetailsArray[0]->groups[0]->academicOrderNo; | |
$examRegistrationDetails->academicTermYearRoman = strtoupper(CommonUtil::convertNumberToRoman($examRegistrationDetails->academicTermYear)); | |
$examRegistrationDetails->academicTermId = $examRegistrationDetailsArray[0]->groups[0]->academicTermId; | |
$semesterNames = CommonExamService::getInstance()->getDifferentSemesterName($examRegistrationDetails->academicTermName); | |
$examRegistrationDetails->semInRomanLetter = $semesterNames->romanLetter; | |
$examRegistrationDetails->semInFullName = $semesterNames->fullName; | |
$examRegistrationDetails->semInSemNumber = $semesterNames->semNumber; | |
$examRegistrationDetails->batchStartYear = $examRegistrationDetailsArray[0]->groups[0]->batchStartYear; | |
$examRegistrationDetails->deptID = $examRegistrationDetailsArray[0]->groups[0]->deptID; | |
$examRegistrationDetails->deptName = $examRegistrationDetailsArray[0]->groups[0]->deptName; | |
$examRegistrationDetails->degreeName = $examRegistrationDetailsArray[0]->groups[0]->degreeName ; | |
$examRegistrationDetails->degreeDescription = $examRegistrationDetailsArray[0]->groups[0]->degreeDescription ; | |
$examRegistrationDetails->streamName = $examRegistrationDetailsArray[0]->groups[0]->streamName; | |
$examRegistrationDetails->finalTermId = $examRegistrationDetailsArray[0]->groups[0]->properties->finalTermId; | |
$examRegistrationDetails->publishingStartDate = $examRegistrationDetailsArray[0]->groups[0]->examBatchProperties->publishingStartDate; | |
$examRegistrationDetails->supplyOrImprove = $examRegistrationDetailsArray[0]->type; | |
$examRegistrationDetails->degreeStreamName = $examRegistrationDetailsArray[0]->groups[0]->degreeName." ".$examRegistrationDetailsArray[0]->groups[0]->streamName; | |
$examRegistrationDetails->programName = $examRegistrationDetailsArray[0]->groups[0]->programName; | |
$examRegistrationDetails->isHonorCourse = reset($examRegistrationDetailsArray)->properties->isHonorCourse == "1" ? true : false; | |
$examRegistrationDetails->isMinorCourse = reset($examRegistrationDetailsArray)->properties->isMinorCourse == "1" ? true : false; | |
$request = new \stdClass; | |
$request->groupId = $examRegistrationDetails->groupId; | |
$gradeSchemes = $this->getAllGradeScemesByCurriculum($request); | |
return $examRegistrationDetails; | |
} | |
/** | |
* get Final Consolidated Mark Card | |
* @param $searchRequest | |
* @return $programResult | |
* @author Krishnajith | |
*/ | |
public function getFinalMarkCardForStudents($searchRequest){ | |
try{ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request = new \stdClass; | |
$request->studentId = $searchRequest->studentId; | |
$student = $this->getCurrentStudentBatchDetails($request); | |
if(!empty($student)){ | |
if($student->withHeldStatus == '1' ){ | |
throw new ExamControllerException (ExamControllerException::STUDENT_WITH_HELD,"Result Withheld"); | |
} | |
else if($student->isResultPublished !== '1' ){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not published"); | |
} | |
else if(strtotime($student->publishingStartDate) > strtotime(date("Y-m-d"))){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not published"); | |
} | |
else if(strtotime($student->publishingEndDate) < strtotime(date("Y-m-d")) && !($searchRequest->notConsiderPublishEndDate)){ | |
throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not available since publish date exceeded"); | |
} | |
else{ | |
$requestForFCMarkCard = new \stdClass; | |
$requestForFCMarkCard->isStudentSideExamResult = true; | |
$requestForFCMarkCard->studentId = $request->studentId; | |
$requestForFCMarkCard->groupId = $student->groupId; | |
$requestForFCMarkCard->isStudentSideExamResult = '1'; | |
$programResult = FinalConsolidatedMarksCardGenerator::getInstance()->getFinalConsolidatedMarksCard($requestForFCMarkCard); | |
} | |
} | |
} | |
catch (\Exception $e){ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $programResult; | |
} | |
/** | |
* get Current student Batch Details | |
* @param $searchRequest | |
* @return $student | |
* @author Krishnajith | |
*/ | |
public function getCurrentStudentBatchDetails($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try{ | |
$whereQuery = ""; | |
if(!empty($searchRequest->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','",$searchRequest->studentId) . "'" : "'".$searchRequest->studentId."'"; | |
$whereQuery .= " AND s.studentID IN ( $studentIdString )"; | |
} | |
$query = "SELECT DISTINCT | |
s.studentID as id, | |
g.id AS groupId, | |
g.name AS groupName, | |
p.name as programName, | |
g.properties ->>'$.programId' AS programId, | |
ct.courseTypeID as courseTypeId, | |
ct.typeName as courseTypeName, | |
spa.student_id AS studentId, | |
spa.properties->>'$.rollNumber' AS studentRollNo, | |
IF(IFNULL(spa.properties ->> '$.registerNumber', 'null') = 'null','',spa.properties ->> '$.registerNumber') AS studentRegisterNo, | |
s.studentName AS studentName, | |
ebad.properties->>'$.isPublishFCMC' AS isResultPublished, | |
ebad.properties->>'$.startDateFCMC' AS publishingStartDate, | |
ebad.properties->>'$.endDateFCMC' AS publishingEndDate, | |
esad.properties->>'$.withHeldStatus' as withHeldStatus | |
FROM | |
studentaccount s | |
INNER JOIN student_program_account spa | |
ON spa.student_id = s.studentID | |
INNER JOIN student_program_batch_log spbl | |
ON spbl.program_student_id = spa.id | |
INNER JOIN `program` p | |
ON p.id = spbl.program_id | |
INNER JOIN `groups` g | |
ON g.id = spbl.batch_group_id | |
INNER JOIN `course_type` ct ON | |
ct.courseTypeID = p.course_type_id | |
INNER JOIN group_members gm ON | |
gm.groups_id = g.id AND | |
gm.members->>'$.studentId' = spa.id | |
LEFT JOIN ec_batch_additional_details ebad ON ebad.groups_id = g.id | |
LEFT JOIN ec_student_additional_details esad ON | |
esad.student_id = s.studentID AND | |
esad.program_id = p.id AND | |
esad.type = 'FINAL_MARK_CARD' | |
WHERE 1=1 "; | |
$student = $this->executeQueryForObject($query.$whereQuery); | |
} | |
catch (\Exception $e){ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $student; | |
} | |
/** | |
* get current student exam result | |
* @param $searchRequest | |
* @return $programResult | |
* @author Krishnajith | |
*/ | |
public function getCurrentStudentExamResultMultipleSemesters($searchRequest){ | |
try{ | |
$request = new \stdClass; | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
$request->studentId = $searchRequest->studentId; | |
$request->academicTermId = $searchRequest->academicTermId; | |
$request->examType = $searchRequest->examType ; | |
$request->mappingType = "EXAM_REGISTRATION"; | |
$request->orderBySemester = 1; | |
$dispalyHtmlData = ""; | |
$request->registrationStatus == StudentExamRegistrationStatus::REGISTERED; | |
$collegeData = CommonExamService::getInstance()->getCollegeDetails(); | |
$examType = 'EC_REGULAR_INDIVIDUAL'; | |
$markListTemplate = StudentMarkListService::getInstance()->getUniversityMarkListTemplate($examType); | |
$frontPage = ''; | |
if( $markListTemplate == 'Template_9'){ | |
$frontPage = TwigRenderer::renderTemplateFileToHtml(realpath(DOCUMENT_ROOT."../examcontroller-api/src/com/linways/web/templates/RegularIndividualMarkCards/Template9/frontPage1.twig"), [ 'college'=>$collegeData ]); | |
} | |
$currentExamRegistrations = StudentExamRegistrationService::getInstance()->getRegisteredStudentExamRegistrationDetails($request); | |
$result = 0; | |
foreach ( $currentExamRegistrations as $currentExamRegistration){ | |
if(!$currentExamRegistration->batchProperties->isResultPublished){ | |
continue; | |
// throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not published"); | |
} | |
else{ | |
if($currentExamRegistration->examRegistrationPaymentProperties->isResultWithHeld == 1){ | |
continue; | |
// throw new ExamControllerException (ExamControllerException::STUDENT_WITH_HELD,"Your result is withheld. Please contact controller of examination"); | |
} | |
else if(strtotime($currentExamRegistration->batchProperties->publishingStartDate) > strtotime(date("Y-m-d"))){ | |
continue; | |
// throw new ExamControllerException (ExamControllerException::RESULT_NOT_PUBLISHED,"Result not published"); | |
} | |
else{ | |
$requestForMarkCard = new \stdClass; | |
$requestForMarkCard->isStudentSideExamResult = true; | |
$requestForMarkCard->examRegistrationId = $currentExamRegistration->id; | |
$requestForMarkCard->studentId = $request->studentId; | |
$requestForMarkCard->academicTermId = $currentExamRegistration->batchProperties->academicTermId; | |
if($currentExamRegistration->examRegistrationType == ExamRegistrationTypeConstants::REGULAR){ | |
$displayContentOptions = new \stdClass; | |
$displayContentOptions->enableDateFlag = 1; | |
$displayContentOptions->principalSignFlag = $displayContentOptions->principalNameFlag = 1; | |
$displayContentOptions->collegeSealFlag = $displayContentOptions->collegeHeaderAndLogoFlag = 1; | |
$displayContentOptions->examControllerSignFlag = $displayContentOptions->examControllerNameFlag = 1; | |
$requestForMarkCard->displayContentOptions = $displayContentOptions; | |
$programResult = RegularIndividualMarkCardGenerator::getInstance()->getIndividualMarkCardResultData($requestForMarkCard); | |
} | |
else if($currentExamRegistration->examRegistrationType == ExamRegistrationTypeConstants::SUPPLEMENTARY){ | |
$programResult = SupplementaryIndividualMarkCardGenerator::getInstance()->getIndividualMarkCardResultData($requestForMarkCard); | |
} | |
$result = 1; | |
$dispalyHtmlData .= $programResult->dispalyHtmlData; | |
} | |
} | |
} | |
if ( empty($result) ){ | |
throw new ExamControllerException (ExamControllerException::NO_DETAILS_FOUND,"No details found"); | |
} | |
$prtContent = NULL; | |
$prtContent .= '<html><head>'; | |
$prtContent .= "<style> | |
.bg-image{ | |
background: url('$collegeData->waterMark') repeat ; | |
width:100%; | |
background-size: 100% 100%; | |
height:100%; | |
} | |
@media print | |
{ | |
@page { | |
margin:0 2mm 0 2mm; | |
zoom: 500%!important; | |
} | |
html, body { | |
width: 297mm; | |
height: 200mm; | |
} | |
} | |
</style>"; | |
$prtContent .= "</head><title>Exam Notification</title><body><div style='height:100vh!important;' class='bg-image'>"; | |
$prtContent .= $frontPage."</div>".$dispalyHtmlData; | |
$prtContent .= '</body></html>'; | |
$totalWidth = 297; | |
$totalHeight = 210; | |
$options = array( | |
'page-width' => $totalWidth."mm", | |
'page-height' => $totalHeight."mm", | |
'dpi' => 96, | |
'margin-top' => "9mm", | |
'margin-left' => "10mm", | |
'margin-right' => "10mm", | |
'margin-bottom' => "9mm", | |
// 'binary' => "/usr/local/bin/wkhtmltopdf", // For Mac | |
'user-style-sheet' => realpath(DOCUMENT_ROOT . "/libcommon/bootstrap/css/bootstrap.min.css") | |
); | |
$programResult = new \stdClass; | |
$programResult->printData = PdfUtil::renderPdf($prtContent, $options); | |
} | |
catch (\Exception $e){ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
$programResult->dispalyHtmlData = $dispalyHtmlData; | |
return $programResult; | |
} | |
/** | |
* get student subject result details | |
* @param $searchRequest | |
* @return $student | |
* @author Sibin | |
*/ | |
public function getStudentSubjectResults($searchRequest) { | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try{ | |
$whereQuery = ""; | |
if(!empty($searchRequest->academicPaperSubjectIds)) { | |
$academicPaperSubjectIdsString = is_array($searchRequest->academicPaperSubjectIds) ? "'" . implode("','",$searchRequest->academicPaperSubjectIds) . "'" : "'".$searchRequest->academicPaperSubjectIds."'"; | |
$whereQuery .= " AND cap.id IN ( $academicPaperSubjectIdsString )"; | |
} | |
if(!empty($searchRequest->courseTypeId)) { | |
$courseTypeIdsString = is_array($searchRequest->courseTypeId) ? "'" . implode("','",$searchRequest->courseTypeId) . "'" : "'".$searchRequest->courseTypeId."'"; | |
$whereQuery .= " AND p.course_type_id IN ( $courseTypeIdsString )"; | |
} | |
if(!empty($searchRequest->academicTermId)) { | |
$academicTermIdsString = is_array($searchRequest->academicTermId) ? "'" . implode("','",$searchRequest->academicTermId) . "'" : "'".$searchRequest->academicTermId."'"; | |
$whereQuery .= " AND eerb.academicTermId IN ( $academicTermIdsString )"; | |
} | |
if(!empty($searchRequest->admissionYear)) { | |
$admissionYearString = is_array($searchRequest->admissionYear) ? "'" . implode("','",$searchRequest->admissionYear) . "'" : "'".$searchRequest->admissionYear."'"; | |
$whereQuery .= " AND g.properties->>'$.startYear' IN ( $admissionYearString )"; | |
} | |
$orderBy = " ORDER BY spa.properties->> '$.registerNumber' ASC"; | |
$query = "SELECT | |
sa.studentID, | |
sa.studentName, | |
spa.properties->> '$.registerNumber' AS registerNumber, | |
esmd.mark_details->>'$.internalMark' AS internalMark, | |
esmd.mark_details->>'$.externalMark' AS externalMark, | |
esmd.mark_details->>'$.markObtained' AS markObtained, | |
esmd.mark_details->>'$.grade' AS grade, | |
esmd.mark_details->>'$.resultStatus' AS resultStatus, | |
esmd.mark_details->>'$.attendanceStatus' AS attendanceStatus, | |
esmd.mark_details->>'$.subCoursesGrade' AS subCoursesGrade, | |
esmd.mark_details->>'$.subCoursesInternalMark' AS subCoursesInternalMark, | |
esmd.mark_details->>'$.subCoursesExternalMark' AS subCoursesExternalMark, | |
esmd.mark_details->>'$.subCoursesTotalObtainedMark' AS subCoursesTotalObtainedMark, | |
g.id AS groupId, | |
g.name AS groupName, | |
s.id AS subjectId, | |
s.name AS subjectName, | |
s.code AS subjectCode | |
from | |
cm_academic_paper_subjects cap | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.cm_academic_paper_subjects_id = cap.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` = 'REGULAR' | |
INNER JOIN ec_subject_mark_details esmd ON | |
esmd.ec_exam_registration_id = eer.id | |
AND esmd.groups_id = eerb.groups_id | |
AND esmd.cm_academic_paper_subjects_id = cap.id | |
INNER JOIN `groups` g ON | |
g.id = eerb.groups_id | |
INNER JOIN program p ON | |
p.id = g.properties ->> '$.programId' | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esmd.student_id | |
INNER JOIN student_program_account spa ON | |
spa.student_id = sa.studentID | |
INNER JOIN v4_ams_subject s ON s.id = cap.ams_subject_id | |
WHERE 1=1"; | |
$students = $this->executeQueryForList($query.$whereQuery.$orderBy); | |
} | |
catch (\Exception $e){ | |
throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
} | |
return $students; | |
} | |
} |