Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 431 |
| NominalRollService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
6972.00 | |
0.00% |
0 / 431 |
| __construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
| getNominalRollUIType | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 16 |
|||
| getCurrentExamRegistration | |
0.00% |
0 / 1 |
56.00 | |
0.00% |
0 / 32 |
|||
| getNominalRollTemplate | |
0.00% |
0 / 1 |
870.00 | |
0.00% |
0 / 150 |
|||
| getAllExamRegisteredStudentDetailsForNominalRoll | |
0.00% |
0 / 1 |
380.00 | |
0.00% |
0 / 127 |
|||
| getAllSubjectDetailsForNominalRoll | |
0.00% |
0 / 1 |
182.00 | |
0.00% |
0 / 71 |
|||
| saveNominalRollRemarks | |
0.00% |
0 / 1 |
90.00 | |
0.00% |
0 / 23 |
|||
| insertNominalRollRemarks | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
| <?php | |
| namespace com\linways\ec\core\service; | |
| use com\linways\base\util\MakeSingletonTrait; | |
| use com\linways\ec\core\exception\ExamControllerException; | |
| use com\linways\ec\core\service\ExamRegistrationSubjectService; | |
| use com\linways\core\ams\professional\service\CommonService; | |
| use com\linways\core\ams\professional\constant\SettingsConstants; | |
| use com\linways\ec\core\mapper\NominalRollServiceMapper; | |
| use com\linways\ec\core\request\SearchExamRegistrationRequest; | |
| use com\linways\base\util\TwigRenderer; | |
| use com\linways\core\ams\professional\util\PdfUtil; | |
| use com\linways\core\ams\professional\constant\examcontroller\ExamRegistrationFeePaymentConstants; | |
| use com\linways\ec\core\constant\ShortTermCourseTypeConstants; | |
| use com\linways\ec\core\constant\ShortTermCourseModeConstants; | |
| class NominalRollService extends BaseService | |
| { | |
| use MakeSingletonTrait; | |
| private function __construct() { | |
| $this->mapper = NominalRollServiceMapper::getInstance()->getMapper(); | |
| } | |
| /** | |
| * get Nominal Roll UI Type | |
| * @return $response | |
| */ | |
| public function getNominalRollUIType() { | |
| try{ | |
| $response = new \stdClass; | |
| $nominalRollUIType = CommonService::getInstance()->getSettings(SettingsConstants::NOMINAL_ROLL, SettingsConstants::CURRENT_NOMINAL_ROLL_UI_TYPE); | |
| if($nominalRollUIType == "TEMPLATE_WITH_MULTIPLE_BATCH"){ | |
| $response->nominalRollUIType = "TEMPLATE_WITH_MULTIPLE_BATCH"; | |
| } | |
| else{ | |
| $response->nominalRollUIType = "TEMPLATE_WITH_SINGLE_BATCH"; | |
| } | |
| } | |
| catch (\Exception $e) | |
| { | |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
| } | |
| return $response; | |
| } | |
| /** | |
| * get Current exam registration | |
| * @param $searchRequest | |
| * @return $response | |
| * @author Krishnajith | |
| */ | |
| public function getCurrentExamRegistration($searchRequest) { | |
| $searchRequest = $this->realEscapeObject($searchRequest); | |
| try{ | |
| $examRegistrationDetails = new \stdClass; | |
| $response = new \stdClass; | |
| if(empty($searchRequest->examRegistrationId)){ | |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Invailed Request For Nominal Roll"); | |
| } | |
| $examRegistrations = []; | |
| $examRegistrationRequest = new SearchExamRegistrationRequest(); | |
| $examRegistrationRequest->id = $searchRequest->examRegistrationId; | |
| $examRegistrations = ExamRegistrationService::getInstance()->searchExamRegistration($examRegistrationRequest); | |
| if(empty($examRegistrations)){ | |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION,"Error Fetching Exam Registration"); | |
| } | |
| $isEnableNominalRoll = reset($examRegistrations)->properties->isEnableNominalRoll; | |
| if($isEnableNominalRoll){ | |
| throw new ExamControllerException(ExamControllerException::NOT_ENABLE_NOMINAL_ROLE_FOR_EXAM_REGISTRATION,"Nominal Role Not Enabled By exam Registration"); | |
| } | |
| $examRegistrationDetails->name = reset($examRegistrations)->name; | |
| $examRegistrationDetails->description = reset($examRegistrations)->properties->description == "null" ? null : reset($examRegistrations)->properties->description ; | |
| $examRegistrationDetails->examMonth = reset($examRegistrations)->properties->examMonth; | |
| if($examRegistrationDetails->examMonth){ | |
| $examRegistrationDetails->examMonthName =date("F", mktime(0, 0, 0, $examRegistrationDetails->examMonth, 10)); | |
| } | |
| $examRegistrationDetails->examYear = reset($examRegistrations)->properties->examYear; | |
| $response->examRegistrationDetails = $examRegistrationDetails; | |
| return $response; | |
| } | |
| catch (\Exception $e){ | |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * get Nominal Roll Template | |
| * @param $searchRequest | |
| * @return $response | |
| * @author Krishnajith | |
| */ | |
| public function getNominalRollTemplate($searchRequest) { | |
| $searchRequest = $this->realEscapeObject($searchRequest); | |
| try{ | |
| $data = new \stdClass; | |
| $request = new \stdClass; | |
| $examRegistrationDetails = new \stdClass; | |
| $request->examRegistrationId = $searchRequest->examRegistrationId; | |
| $request->departmentId = $searchRequest->departmentId; | |
| $request->groupId = $searchRequest->groupId; | |
| $request->academicTermId = $searchRequest->academicTermId; | |
| $request->slotId = $searchRequest->slotId; | |
| $request->courseDepartmentId = $searchRequest->courseDepartmentId; | |
| $data->showCourseNameWithReport = $searchRequest->showCourseNameWithReport == 'true' ? true : false ; | |
| // $subjects = CommonExamService::getInstance()->getAssignedSubjectsInBatch($request); | |
| $assignedSubjects = ExamRegistrationSubjectService::getInstance()->getAssignedExamRegistrationSubjectsInBatch($request); | |
| $registeredStudents = $this->getAllExamRegisteredStudentDetailsForNominalRoll($request); | |
| if(empty( $registeredStudents)){ | |
| throw new ExamControllerException(ExamControllerException::NO_STUDENTS_REGISTEDED_OR_PAID,"No Student(s) Found"); | |
| } | |
| $shortTermCourseTypes = []; | |
| $shortTermCourseTypes[] = ShortTermCourseTypeConstants::MINOR; | |
| $shortTermCourseTypes[] = ShortTermCourseTypeConstants::MAJOR; | |
| $examRegistrationDetails->examRegistrationName = reset($registeredStudents)->examRegistrationName; | |
| $examRegistrationDetails->groupName = reset($registeredStudents)->groupName; | |
| $examRegistrationDetails->courseType = reset($registeredStudents)->courseType; | |
| $examRegistrationDetails->deptName = reset($registeredStudents)->deptName; | |
| $examRegistrationDetails->streamName = reset($registeredStudents)->streamName; | |
| $examRegistrationDetails->degreeName = reset($registeredStudents)->degreeName; | |
| $examRegistrationDetails->academicTermName = reset($registeredStudents)->academicTermName; | |
| $examRegistrationDetails->examRegistrationType = reset($registeredStudents)->examRegistrationType; | |
| $subjects = []; | |
| foreach($assignedSubjects as $currentSubject){ | |
| if(empty($subjects[$currentSubject->id])){ | |
| $subjects[$currentSubject->id] = $currentSubject; | |
| $subjects[$currentSubject->id]->groupNames[$currentSubject->groupId] = $currentSubject->groupName; | |
| $subjects[$currentSubject->id]->groups[$currentSubject->groupId]->id = $currentSubject->groupId; | |
| $subjects[$currentSubject->id]->groups[$currentSubject->groupId]->name = $currentSubject->groupName; | |
| $subjects[$currentSubject->id]->groups[$currentSubject->groupId]->registeredStudents = 0; | |
| } | |
| else{ | |
| $subjects[$currentSubject->id]->groupNames[$currentSubject->groupId] = $currentSubject->groupName; | |
| $subjects[$currentSubject->id]->groups[$currentSubject->groupId]->id = $currentSubject->groupId; | |
| $subjects[$currentSubject->id]->groups[$currentSubject->groupId]->name = $currentSubject->groupName; | |
| $subjects[$currentSubject->id]->groups[$currentSubject->groupId]->registeredStudents = 0; | |
| } | |
| } | |
| foreach($subjects as $currentSubject){ | |
| $currentSubject->groupName = implode(',',$currentSubject->groupNames); | |
| } | |
| $subjects = array_values($subjects); | |
| $maxSubjectCount = count((array)$subjects); | |
| $subjectChunks = array_chunk($subjects, 20); | |
| foreach($registeredStudents as $student){ | |
| $semesterNames = CommonExamService::getInstance()->getDifferentSemesterName($student->academicTermName); | |
| $student->semInRoman = $semesterNames->romanLetter; | |
| $student->subjectDiff = $maxSubjectCount - count( $student->subjects); | |
| $student->supplyImproveStatus = ""; | |
| $isSupplementary = false; | |
| $isImprovement = false; | |
| array_walk($student->streams, function($stream) use($student){ | |
| $student->streamNames[] = $stream->streamName; | |
| }); | |
| $student->streamName = implode(" and ",$student->streamNames); | |
| foreach($student->subjects as $studentSubject){ | |
| $studentSubject->isShowShortTermCourseMode = false; | |
| if($studentSubject->studentExamRegistrationStatus == "SUPPLEMENTARY"){ | |
| $isSupplementary = true; | |
| } | |
| elseif($studentSubject->studentExamRegistrationStatus == "IMPROVEMENT"){ | |
| $isImprovement = true; | |
| } | |
| foreach($subjects as $currentSubject){ | |
| if($studentSubject->id == $currentSubject->id){ | |
| if($student->examRegistrationProperties->isShortTermCourse && in_array($student->examRegistrationProperties->shortTermCourseType, $shortTermCourseTypes) && $studentSubject->studentCourseMode == ShortTermCourseModeConstants::MOOC){ | |
| $studentSubject->isShowShortTermCourseMode = true; | |
| } | |
| elseif($studentSubject->syllabusSubType != 'MOOC'){ | |
| $currentSubject->noOfRegisteredStudents ++ ; | |
| if(!empty($currentSubject->groups[$student->groupId])){ | |
| $currentSubject->groups[$student->groupId]->registeredStudents ++; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if($isSupplementary && $isImprovement){ | |
| $student->supplyImproveStatus = "SUPPLY/IMPROVE"; | |
| } | |
| elseif($isSupplementary && !$isImprovement){ | |
| $student->supplyImproveStatus = "SUPPLEMENTARY"; | |
| } | |
| elseif(!$isSupplementary && $isImprovement){ | |
| $student->supplyImproveStatus = "IMPROVEMENT"; | |
| } | |
| } | |
| $data->subjectSlot = reset(reset($registeredStudents)->subjects)->slot; | |
| $data->departmentName = reset($subjects)->deptName; | |
| $data->subjectData = $subjects; | |
| $data->subjectChunks = $subjectChunks; | |
| $data->maxSubjectCount = $maxSubjectCount; | |
| $data->studentData = $registeredStudents; | |
| $data->currentDate = date('d-M-Y'); | |
| $data->examRegistrationData = $examRegistrationDetails; | |
| $data->collegeData = CommonExamService::getInstance()->getCollegeDetails(); | |
| $nominalRollUIType = CommonService::getInstance()->getSettings(SettingsConstants::NOMINAL_ROLL, SettingsConstants::CURRENT_NOMINAL_ROLL_UI_TYPE); | |
| if($nominalRollUIType == "TEMPLATE_WITH_MULTIPLE_BATCH"){ | |
| $templateName = "NominalRoleTemplateWithoutSubjects"; | |
| } | |
| else if($nominalRollUIType == "TEMPLATE_6") { | |
| $templateName = "Template_6"; | |
| } | |
| else if($nominalRollUIType == "TEMPLATE_16") { | |
| // this template for WCCMD Template (this case template to change reg no to roll no) | |
| $templateName = "Template_16"; | |
| // change order by roll no | |
| usort($data->studentData, function ($a, $b) { | |
| return $a->rollNo > $b->rollNo; | |
| }); | |
| } | |
| else{ | |
| $templateName = "NominalRoleTemplateWithSubjects"; | |
| } | |
| if($searchRequest->template == 'SUBJECT_SLOT_WISE_REPORT' || $searchRequest->template == 'DEPARTMENT_WISE_REPORT' ){ | |
| $data->reportTemplate = $searchRequest->template; | |
| $templateName = "NominalRoleTemplateWithSubjectSlot"; | |
| } | |
| $responseHtml = TwigRenderer::renderTemplateFileToHtml(realpath(DOCUMENT_ROOT."../examcontroller-api/src/com/linways/web/templates/NominalRollTemplate/$templateName.twig"), [ 'data'=>$data ]); | |
| $prtContent = NULL; | |
| $prtContent .= '<html><head><link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">'; | |
| $prtContent .= "<style> | |
| .displayOnlyDisplayData { display: none; } | |
| </style>"; | |
| $prtContent .= '</head><title>Nominal Roll</title><body>'; | |
| $prtContent .= $responseHtml; | |
| $prtContent .= '</body></html>'; | |
| $totalWidth = 297; | |
| $totalHeight = 210; | |
| $options = array( | |
| 'page-width' => $totalWidth."mm", | |
| 'page-height' => $totalHeight."mm", | |
| 'dpi' => 96, | |
| 'margin-top' => "9mm", | |
| 'margin-left' => "1mm", | |
| 'margin-right' => "1mm", | |
| '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->dispalyHtmlData = $responseHtml; | |
| $programResult->printData = PdfUtil::renderPdf($prtContent, $options); | |
| return $programResult; | |
| } | |
| catch (\Exception $e){ | |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * get All Exam Registered Student Details For Nominal Roll | |
| * @param $searchRequest | |
| * @return $registeredStudentsDetails | |
| * @author Krishnajith | |
| */ | |
| public function getAllExamRegisteredStudentDetailsForNominalRoll($searchRequest){ | |
| $searchRequest = $this->realEscapeObject($searchRequest); | |
| try{ | |
| $whereQuery = null; | |
| $orderBy = " ORDER BY CAST(spa.properties->>'$.registerNumber' AS CHAR) ASC "; | |
| $whereQuery = ""; | |
| if(!empty($searchRequest->assessmentId)) { | |
| $assessmentIdString = is_array($searchRequest->assessmentId) ? "'" . implode("','",$searchRequest->assessmentId) . "'" : "'".$searchRequest->assessmentId."'"; | |
| $whereQuery .= " AND aa.id IN ( $assessmentIdString )"; | |
| } | |
| if(!empty($searchRequest->examDate)) { | |
| $whereQuery .= " AND aa.properties_value ->>'$.assessmentDate' = '$searchRequest->examDate'"; | |
| } | |
| if(!empty($searchRequest->examRegistrationId)) { | |
| $examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'"; | |
| $whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; | |
| } | |
| if(!empty($searchRequest->groupId)) { | |
| $groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; | |
| $whereQuery .= " AND g.id IN ( $groupIdString )"; | |
| } | |
| if(!empty($searchRequest->departmentId)) { | |
| $departmentIdString = is_array($searchRequest->departmentId) ? "'" . implode("','",$searchRequest->departmentId) . "'" : "'".$searchRequest->departmentId."'"; | |
| $whereQuery .= " AND dept.deptID IN ( $departmentIdString )"; | |
| } | |
| if(!empty($searchRequest->academicTermId)) { | |
| $academicTermIdString = is_array($searchRequest->academicTermId) ? "'" . implode("','",$searchRequest->academicTermId) . "'" : "'".$searchRequest->academicTermId."'"; | |
| $whereQuery .= " AND act.id IN ( $academicTermIdString )"; | |
| } | |
| if(!empty($searchRequest->subjectId)) { | |
| $subjectIdString = is_array($searchRequest->subjectId) ? "'" . implode("','",$searchRequest->subjectId) . "'" : "'".$searchRequest->subjectId."'"; | |
| $whereQuery .= " AND s.id IN ( $subjectIdString )"; | |
| } | |
| if(!empty($searchRequest->slotId)) { | |
| $slotIdString = is_array($searchRequest->slotId) ? "'" . implode("','",$searchRequest->slotId) . "'" : "'".$searchRequest->slotId."'"; | |
| $whereQuery .= " AND aps.slot_id IN ( $slotIdString )"; | |
| } | |
| if(!empty($searchRequest->courseDepartmentId)) { | |
| $courseDepartmentIdString = is_array($searchRequest->courseDepartmentId) ? "'" . implode("','",$searchRequest->courseDepartmentId) . "'" : "'".$searchRequest->courseDepartmentId."'"; | |
| $whereQuery .= " AND s.department_id IN ( $courseDepartmentIdString )"; | |
| } | |
| $query = "SELECT | |
| DISTINCT | |
| sa.studentID AS id, | |
| sa.studentID AS studentId, | |
| sa.studentName, | |
| sa.studentGender, | |
| sa.category, | |
| spa.properties->>'$.rollNumber' AS rollNo, | |
| spa.properties->>'$.registerNumber' AS regNo, | |
| esar.properties->>'$.registrationType' AS studentExamRegistrationStatus, | |
| esar.properties->>'$.syllabusSubType' AS syllabusSubType, | |
| esar.properties->>'$.courseMode' AS studentCourseMode, | |
| eers.am_assessment_id AS assessmentId, | |
| g.id AS groupId, | |
| g.name AS groupName, | |
| eer.id AS examRegistrationId, | |
| eer.name AS examRegistrationName, | |
| eer.type AS examRegistrationType, | |
| eer.properties AS examRegistrationProperties, | |
| aps.id AS academicPaperSubjectId, | |
| aps.properties->>'$.externalMaxMark' as externalMaxMark, | |
| s.code AS subjectCode, | |
| s.name AS subjectName, | |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, | |
| aps.properties ->> '$.classType' AS classType, | |
| s.code AS syllabusName, | |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, | |
| aa.properties_value ->>'$.startTime' AS assessmentStartTime, | |
| aa.properties_value ->>'$.endTime' AS assessmentEndTime, | |
| act.id AS academicTermId, | |
| act.name AS academicTermName, | |
| dept.deptID, | |
| dept.deptName, | |
| dept.departmentDesc, | |
| deg.id AS degreeId, | |
| deg.name AS degreeName, | |
| str.id AS streamId, | |
| str.name AS streamName, | |
| nrr.remarks as nominalRollRemarks, | |
| cclo.name as slot, | |
| eqc.qpCode | |
| FROM | |
| `groups` g | |
| INNER JOIN ec_exam_registration_batch eerb ON | |
| eerb.groups_id = g.id | |
| INNER JOIN ec_exam_registration eer ON | |
| eer.id = eerb.ec_exam_registration_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 am_assessment aa ON | |
| aa.id = eers.am_assessment_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_student_assessment_registration esar ON | |
| esar.am_assessment_id = eers.am_assessment_id AND CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID' AND esar.ec_exam_registration_type = eer.type | |
| INNER JOIN student_program_account spa ON | |
| spa.current_program_id = p.id AND | |
| spa.student_id = esar.student_id | |
| INNER JOIN studentaccount sa ON | |
| sa.studentID = spa.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) | |
| LEFT JOIN stream str ON | |
| JSON_SEARCH( p.stream_id, 'one', str.id) IS NOT NULL | |
| INNER JOIN degree deg ON | |
| deg.id = p.degree_id | |
| LEFT JOIN examQpCodes eqc ON | |
| eqc.cm_academic_paper_subjects_id = aps.id AND eqc.ec_exam_registration_id = eer.id | |
| LEFT JOIN nominal_roll_remarks nrr ON | |
| nrr.studentID = sa.studentID AND nrr.ec_exam_registration_id = eer.id AND nrr.groups_id = g.id AND nrr.academic_term_id = act.id | |
| LEFT JOIN cm_common_list_object cclo ON | |
| aps.slot_id = cclo.id AND cclo.type = 'SLOT' | |
| WHERE 1=1 "; | |
| $registeredStudentsDetails = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[NominalRollServiceMapper::GET_STUDENT_FOR_NOMINAL_ROLL]); | |
| } | |
| catch (\Exception $e) | |
| { | |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
| } | |
| return $registeredStudentsDetails; | |
| } | |
| /** | |
| * get All Subject Details For NominalRoll | |
| * @param $searchRequest | |
| * @return $registeredStudentsDetails | |
| * @author Krishnajith | |
| */ | |
| public function getAllSubjectDetailsForNominalRoll($searchRequest){ | |
| $searchRequest = $this->realEscapeObject($searchRequest); | |
| try{ | |
| $whereQuery = null; | |
| $orderBy = " ORDER BY s.code ASC "; | |
| $whereQuery = ""; | |
| if(!empty($searchRequest->assessmentId)) { | |
| $assessmentIdString = is_array($searchRequest->assessmentId) ? "'" . implode("','",$searchRequest->assessmentId) . "'" : "'".$searchRequest->assessmentId."'"; | |
| $whereQuery .= " AND eers.am_assessment_id IN ( $assessmentIdString )"; | |
| } | |
| if(!empty($searchRequest->examRegistrationId)) { | |
| $examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'"; | |
| $whereQuery .= " AND eerb.ec_exam_registration_id IN ( $examRegistrationIdString )"; | |
| } | |
| if(!empty($searchRequest->groupId)) { | |
| $groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; | |
| $whereQuery .= " AND g.id IN ( $groupIdString )"; | |
| } | |
| if(!empty($searchRequest->departmentId)) { | |
| $departmentIdString = is_array($searchRequest->departmentId) ? "'" . implode("','",$searchRequest->departmentId) . "'" : "'".$searchRequest->departmentId."'"; | |
| $whereQuery .= " AND dept.deptID IN ( $departmentIdString )"; | |
| } | |
| if(!empty($searchRequest->academicTermId)) { | |
| $academicTermIdString = is_array($searchRequest->academicTermId) ? "'" . implode("','",$searchRequest->academicTermId) . "'" : "'".$searchRequest->academicTermId."'"; | |
| $whereQuery .= " AND act.id IN ( $academicTermIdString )"; | |
| } | |
| $query = "SELECT | |
| DISTINCT | |
| eers.am_assessment_id AS assessmentId, | |
| aps.id AS academicPaperSubjectId, | |
| s.code AS subjectCode, | |
| s.name AS subjectName, | |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, | |
| aps.properties ->> '$.syllabusName' AS syllabusName, | |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, | |
| aa.properties_value ->>'$.startTime' AS assessmentStartTime, | |
| aa.properties_value ->>'$.endTime' AS assessmentEndTime, | |
| eqc.qpCode | |
| 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 am_assessment aa ON | |
| aa.id = eers.am_assessment_id | |
| INNER JOIN v4_ams_subject s ON | |
| aps.ams_subject_id = s.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 program p ON | |
| p.id = g.properties ->> '$.programId' | |
| INNER JOIN degree deg ON | |
| deg.id = p.degree_id | |
| LEFT JOIN examQpCodes eqc ON | |
| eqc.cm_academic_paper_subjects_id = aps.id AND eqc.ec_exam_registration_id = eerb.ec_exam_registration_id | |
| WHERE 1=1 "; | |
| $subjectDetails = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[NominalRollServiceMapper::GET_SUBJECTS_FOR_NOMINAL_ROLL]); | |
| foreach($subjectDetails as $subject){ | |
| $subject->noOfRegisteredStudents = 0; | |
| } | |
| } | |
| catch (\Exception $e) | |
| { | |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
| } | |
| return $subjectDetails; | |
| } | |
| /** | |
| * get Current exam registration | |
| * @param $searchRequest | |
| * @return $response | |
| * @author Krishnajith | |
| */ | |
| public function saveNominalRollRemarks($searchRequest) { | |
| $searchRequest = $this->realEscapeObject($searchRequest); | |
| try{ | |
| $insertionValues = []; | |
| $nominalRollRemarks = $searchRequest->nominalRollRemarks; | |
| if(empty($nominalRollRemarks)){ | |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Invailed Request For Save Nominal Roll Remarks"); | |
| } | |
| foreach($nominalRollRemarks as $student){ | |
| if(empty($student['studentId']) || empty($student['examRegistrationId']) || empty($student['academicTermId']) || empty($student['groupId'])){ | |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Invailed Request For Save Nominal Roll Remarks"); | |
| } | |
| else{ | |
| $insertionValues[] = " ( '".$student['studentId']."','".$student['examRegistrationId']."','".$student['groupId']."',,'".$student['academicTermId']."' ) "; | |
| } | |
| } | |
| if( !empty ( $insertionValues ) ){ | |
| $this->insertNominalRollRemarks($insertionValues); | |
| } | |
| } | |
| catch (\Exception $e){ | |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * insert Nominal Roll Remarks | |
| * @param $insertionValues | |
| */ | |
| public function insertNominalRollRemarks($insertionValues){ | |
| try { | |
| $insert_query = "INSERT INTO nominal_roll_remarks | |
| (studentID,mark,ec_exam_registration_id,groups_id,academic_term_id,remarks) | |
| VALUES " . implode ( ",", $insertionValues ) . " ON DUPLICATE KEY UPDATE remarks = VALUES(remarks)" ; | |
| $this->executeQuery($insert_query); | |
| } | |
| catch (\Exception $e){ | |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| } |