| <?php |
| |
| namespace com\linways\ec\core\service; |
| |
| |
| |
| use com\linways\base\util\SecurityUtils; |
| use com\linways\ec\core\dto\ExamRegistration; |
| use com\linways\base\util\MakeSingletonTrait; |
| use com\linways\ec\core\constant\StatusConstants; |
| use com\linways\ec\core\dto\ExamRegistrationSubject; |
| use com\linways\ec\core\exception\ExamControllerException; |
| use com\linways\ec\core\mapper\ExamRegistrationSubjectServiceMapper; |
| use com\linways\ec\core\request\SearchExamRegistrationSubjectRequest; |
| use com\linways\core\ams\professional\service\StaffService; |
| use com\linways\core\ams\professional\service\CommonService; |
| use com\linways\core\ams\professional\constant\SettingsConstants; |
| use com\linways\ec\core\request\SearchExamRegistrationRequest; |
| use com\linways\base\util\TwigRenderer; |
| use com\linways\core\ams\professional\util\PdfUtil; |
| use com\linways\ec\core\service\CommonExamService; |
| use com\linways\core\ams\professional\logging\AMSLogger; |
| use com\linways\ec\core\logging\Events; |
| use com\linways\ec\core\logging\entities\Staff; |
| use com\linways\ec\core\service\StudentExamRegistrationService; |
| use com\linways\ec\core\mapper\ExamRevaluationServiceMapper; |
| use com\linways\ec\core\constant\ExamRegistrationTypeConstants; |
| use com\linways\ec\core\service\RuleService; |
| use com\linways\ec\core\request\SearchRuleRequest; |
| use com\linways\core\ams\professional\dto\SettingsConstents; |
| use com\linways\academics\core\request\FilterSubjectClusterRequest; |
| use com\linways\academics\core\service\SubjectService; |
| |
| class ExamRegistrationSubjectService extends BaseService |
| { |
| use MakeSingletonTrait; |
| |
| private function __construct() { |
| $this->logger = AMSLogger::getLogger('exam-controller-log'); |
| $this->mapper = ExamRegistrationSubjectServiceMapper::getInstance()->getMapper(); |
| $this->mapper2 = ExamRevaluationServiceMapper::getInstance()->getMapper(); |
| |
| } |
| |
| |
| |
| |
| |
| |
| public function saveExamRegistrationSubject (ExamRegistrationSubject $examRegistrationSubject) |
| { |
| $examRegistrationSubject = $this->realEscapeObject($examRegistrationSubject); |
| $examRegistrationSubject->updatedBy = $GLOBALS['userId'] ?? $examRegistrationSubject->updatedBy; |
| $examRegistrationSubject->createdBy = $GLOBALS['userId'] ?? $examRegistrationSubject->createdBy; |
| $staffId = $GLOBALS['userId']; |
| try{ |
| $this->validateSaveExamRegistrationSubject($examRegistrationSubject); |
| |
| if(!empty($examRegistrationSubject->id)){ |
| $this->updateExamRegistrationSubjects($examRegistrationSubject); |
| } |
| else{ |
| $this->insertExamRegistrationSubjects($examRegistrationSubject); |
| } |
| AMSLogger::log_info($this->logger,Events::EC_SAVE_EXAM_REGISTRATION_SUBJECT,[ |
| "staff" => new Staff(["id" => $staffId]), |
| "request" => $examRegistrationSubject, |
| "status" => StatusConstants::SUCCESS |
| ]); |
| |
| }catch(\Exception $e) { |
| AMSLogger::log_error($this->logger,Events::EC_SAVE_EXAM_REGISTRATION_SUBJECT, [ |
| "staff" => new Staff(["id" => $staffId]), |
| "request" => $examRegistrationSubject, |
| "errorCode" => $e->getCode(), |
| "errorMessage" => $e->getMessage(), |
| "status" => StatusConstants::FAILED |
| ]); |
| if($e->getCode() !== ExamControllerException::INVALID_PARAMETERS_EXAM_REGISTRATION_FEE || $e->getCode() !== ExamControllerException::EMPTY_PARAMETERS_EXAM_REGISTRATION_FEE) { |
| throw new ExamControllerException($e->getCode(),"Failed to assign Fees for Exam Registration! Please try again"); |
| } else { |
| throw new ExamControllerException ($e->getCode(),$e->getMessage()); |
| } |
| } |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| private function validateSaveExamRegistrationSubject(ExamRegistrationSubject $examRegistrationSubject){ |
| if(empty($examRegistrationSubject->examRegistrationBatchId)) |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS_EXAM_REGISTRATION_FEE," Exam registration subject is empty! "); |
| if(empty($examRegistrationSubject->academicPaperSubjectId)) |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS_EXAM_REGISTRATION_FEE," Exam registration subject is empty! "); |
| if(empty($examRegistrationSubject->assessmentId)) |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS_EXAM_REGISTRATION_FEE," Exam registration subject is empty! "); |
| } |
| |
| |
| |
| |
| |
| |
| private function updateExamRegistrationSubjects(ExamRegistrationSubject $examRegistrationSubject) |
| { |
| if(!empty($examRegistrationSubject->valuationDetails)){ |
| $examRegistrationSubject->valuationDetails->listStaffs = []; |
| if(!empty($examRegistrationSubject->valuationDetails->valuationStaffs)){ |
| foreach($examRegistrationSubject->valuationDetails->valuationStaffs as $valuationStaff){ |
| $valuationStaff->listStaffs = []; |
| } |
| } |
| } |
| $feesProperties = !empty($examRegistrationSubject->feeProperties) ? "'".json_encode($examRegistrationSubject->feeProperties)."'" : "JSON_OBJECT()"; |
| $valuationDetails = !empty($examRegistrationSubject->valuationDetails) ? "'".json_encode($examRegistrationSubject->valuationDetails)."'" : "JSON_OBJECT()"; |
| |
| $query = "UPDATE |
| ec_exam_registration_subject |
| SET |
| fees_properties = $feesProperties, |
| ec_exam_registration_batch_id = '$examRegistrationSubject->examRegistrationBatchId', |
| cm_academic_paper_subjects_id = '$examRegistrationSubject->academicPaperSubjectId', |
| am_assessment_id = '$examRegistrationSubject->assessmentId', |
| valuation_details = $valuationDetails, |
| updated_by = '$examRegistrationSubject->updatedBy' |
| WHERE |
| id = '$examRegistrationSubject->id'"; |
| |
| try { |
| $this->executeQuery($query); |
| } catch (\Exception $e) { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| } |
| |
| |
| |
| |
| |
| |
| |
| private function insertExamRegistrationSubjects(ExamRegistrationSubject $examRegistrationSubject) |
| { |
| $feesProperties = !empty($examRegistrationSubject->feeProperties) ? "'".json_encode($examRegistrationSubject->feeProperties)."'" : "JSON_OBJECT()"; |
| $valuationDetails = !empty($examRegistrationSubject->valuationDetails) ? "'".json_encode($examRegistrationSubject->valuationDetails)."'" : "JSON_OBJECT()"; |
| $query = "INSERT INTO ec_exam_registration_subject |
| (ec_exam_registration_batch_id,cm_academic_paper_subjects_id,am_assessment_id,fees_properties,valuation_details,created_by,updated_by) |
| VALUES |
| ('$examRegistrationSubject->examRegistrationBatchId','$examRegistrationSubject->academicPaperSubjectId','$examRegistrationSubject->assessmentId',$feesProperties,$valuationDetails,'$examRegistrationSubject->createdBy','$examRegistrationSubject->updatedBy')"; |
| try { |
| $examRegistrationSubject->id = $this->executeQuery($query,true); |
| return $examRegistrationSubject->id; |
| } catch (\Exception $e) { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| } |
| |
| |
| |
| |
| |
| |
| public function deleteExamRegistrationSubject($id) |
| { |
| $id = $this->realEscapeString($id); |
| $staffId = $GLOBALS['userId']; |
| $searchRequest = new SearchExamRegistrationSubjectRequest(); |
| $searchRequest->id = $id; |
| $examRegistrationSubject = reset($this->getExamRegistrationSubjects($searchRequest)); |
| if(empty($id) && empty($examRegistrationSubject)) |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS_EXAM_REGISTRATION_FEE,"Exam Registration Subject is invalid! "); |
| $query = "DELETE FROM |
| ec_exam_registration_subject |
| WHERE |
| id = '$id'"; |
| try { |
| $this->executeQuery($query); |
| AMSLogger::log_info($this->logger,Events::EC_DELETE_EXAM_REGISTRATION_SUBJECT,[ |
| "staff" => new Staff(["id" => $staffId]), |
| "request" => $examRegistrationSubject, |
| "status" => StatusConstants::SUCCESS |
| ]); |
| } |
| catch (\Exception $e) { |
| AMSLogger::log_error($this->logger,Events::EC_DELETE_EXAM_REGISTRATION_SUBJECT,[ |
| "staff" => new Staff(["id" => $staffId]), |
| "request" => $examRegistrationSubject, |
| "errorCode" => $e->getCode(), |
| "errorMessage" => $e->getMessage(), |
| "status" => StatusConstants::FAILED |
| ]); |
| throw new ExamControllerException(ExamControllerException::ERROR_DELETING_EXAM_REGISTRATION_FEE,"Error deleting Exam Registration Subject! Please try again"); |
| } |
| } |
| |
| |
| |
| |
| |
| |
| public function getExamRegistrationSubjects(SearchExamRegistrationSubjectRequest $request) |
| { |
| $request = $this->realEscapeObject($request); |
| |
| $whereQuery = ""; |
| $limitQuery = ""; |
| |
| if(!empty($request->groupId)) { |
| $whereQuery .= " AND eerb.groups_id = '$request->groupId' "; |
| } |
| if(!empty($request->id)) { |
| $whereQuery .= " AND eers.id = '$request->id' "; |
| } |
| if(!empty($request->examRegistrationbatchId)) { |
| $whereQuery .= " AND eerb.id = '$request->examRegistrationbatchId' "; |
| } |
| if(!empty($request->academicPaperSubjectId)) { |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id = '$request->academicPaperSubjectId' "; |
| } |
| if(!empty($request->examRegistrationId)) { |
| $whereQuery .= " AND eerb.ec_exam_registration_id='$request->examRegistrationId' "; |
| } |
| |
| if($request->startIndex !== "" && $request->endIndex !== "") |
| { |
| $limitQuery .= " LIMIT $request->startIndex,$request->endIndex"; |
| } |
| |
| $query = "SELECT |
| eers.id, |
| eers.ec_exam_registration_batch_id, |
| eers.am_assessment_id, |
| eers.cm_academic_paper_subjects_id, |
| eerb.ec_exam_registration_id, |
| eerb.groups_id, |
| oe.id as oeExamId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| eerb.properties AS examRegistrationBatchProperties |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = eers.am_assessment_id AND oe.is_deleted = 0 |
| WHERE |
| 1 = 1"; |
| |
| try { |
| $examRegistrationFee = $this->executeQueryForList($query.$whereQuery.$limitQuery, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_EXAM_REGISTRATION_SUBJECT_FEE]); |
| } catch (\Exception $e) { |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION_FEE,"Cannot fetch Exam Registration Batch details! Please try again."); |
| } |
| |
| return $examRegistrationFee; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| public function getAssignedubjectByBatch($groupId,$examRegistrationId) |
| { |
| $groupId = $this->realEscapeString($groupId); |
| $examRegistrationId = $this->realEscapeString($examRegistrationId); |
| $query = "SELECT |
| eers.cm_academic_paper_subjects_id as id, |
| ap.name, |
| eers.fm_head_id, |
| eers. id as ec_exam_registration_subject |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| eers.cm_academic_paper_subjects_id = aps.id |
| INNER JOIN cm_academic_paper ap ON |
| aps.cm_academic_paper_id = ap.id |
| WHERE |
| eerb.groups_id = '$groupId' AND eerb.ec_exam_registration_id='$examRegistrationId' "; |
| |
| $assignedSubjects = $this->executeQueryForList($query); |
| return $assignedSubjects; |
| |
| |
| } |
| |
| public function getExamRegistrationSubjectFee($examRegistrationSubjectFee) |
| { |
| $examRegistrationSubjectFee = $this->realEscapeObject($examRegistrationSubjectFee); |
| $subjectid = $examRegistrationSubjectFee->subjects['id']; |
| $query = "SELECT |
| id |
| FROM |
| ec_exam_registration_subject |
| |
| WHERE |
| ec_exam_registration_batch_id = '$examRegistrationSubjectFee->examRegistrationBatchRelationId' AND cm_academic_paper_subjects_id ='$subjectid' "; |
| |
| try { |
| $assignedSubjectFee = $this->executeQueryForObject($query); |
| } |
| catch (\Exception $e) { |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION_FEE,"Cannot fetch Exam Registration Batch details! Please try again."); |
| } |
| return $assignedSubjectFee; |
| } |
| |
| |
| |
| |
| |
| public function getAssessmentExaminer($request){ |
| $request = $this->realEscapeObject($request); |
| $searchRuleRequest = new SearchRuleRequest; |
| $searchRuleRequest->name = "EXAM_VALUATION_PROCEDURE_RULE"; |
| $examValuationProcedureRule = reset(RuleService::getInstance()->searchRule($searchRuleRequest))->rule; |
| |
| $whereQuery = ""; |
| $limitQuery = ""; |
| $resultData = []; |
| $joinQuery = ""; |
| if(!empty($request->assessmentId)) { |
| $whereQuery .= " AND eers.am_assessment_id = '$request->assessmentId'"; |
| } |
| if(!empty($request->assessmentDate)) { |
| $whereQuery .= " AND aa.properties_value ->>'$.assessmentDate' = '$request->assessmentDate'"; |
| } |
| |
| if(!empty($request->groupId)) { |
| $whereQuery .= " AND g.id = '$request->groupId'"; |
| } |
| |
| if(!empty($request->courseTypeId)) { |
| $whereQuery .= " AND p.course_type_id = '$request->courseTypeId'"; |
| } |
| |
| if(!empty($request->academicTermId)) { |
| $whereQuery .= " AND CAST(eerb.properties ->> '$.academicTermId'AS CHAR) = '$request->academicTermId'"; |
| } |
| |
| if(!empty($request->examRegistrationId)) { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId'"; |
| } |
| if($request->examType == ExamRegistrationTypeConstants::REVALUATION){ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration eerp ON |
| eerp.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eerp.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eerp.id AND |
| eerbParent.groups_id = eerb.groups_id |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerbParent.id "; |
| } |
| else{ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerb.id "; |
| } |
| |
| $query = "SELECT |
| eers.id, |
| eers.am_assessment_id, |
| eerb.groups_id, |
| eerb.ec_exam_registration_id, |
| eers.ec_exam_registration_batch_id, |
| eers.cm_academic_paper_subjects_id, |
| oe.id AS onlineExamId, |
| IF( |
| eers.valuation_details IS NULL , |
| JSON_SET(JSON_OBJECT(), '$.staffIds', '', '$.departmentIds', '','$.valuationDates', ''), |
| eers.valuation_details |
| ) AS valuation_details, |
| aa.name AS assessmentName, |
| g.name AS groupName, |
| s.id AS subjectId, |
| s.name AS subjectDesc, |
| s.code AS subjectName, |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, |
| caps.properties ->> '$.syllabusName' AS syllabusName, |
| caps.properties->>'$.subjectPriority' AS subjectPriority, |
| g.properties->>'$.description' AS groupDescription, |
| act.id as academicTermId, |
| act.name as academicTermName |
| FROM |
| ec_exam_registration_batch eerb |
| $joinQuery |
| INNER JOIN academic_term act ON |
| act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = aa.id AND oe.is_deleted = 0 |
| INNER JOIN cm_academic_paper_subjects caps ON |
| caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = caps.ams_subject_id |
| WHERE |
| g.trashed IS NULL"; |
| |
| $settingsQuery = "SELECT value FROM settings s WHERE name='SUBJECT_SLOT_VALUES' AND `type`='EXAM_CONTROLLER'"; |
| |
| try { |
| $assementExaminers = $this->executeQueryForList($query.$whereQuery.$limitQuery, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_ASSESSMENT_EXAMINER]); |
| |
| $slots = json_decode($this->executeQueryForObject($settingsQuery)->value); |
| |
| } catch (\Exception $e) { |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION_FEE,"Cannot fetch Exam Registration Batch details! Please try again."); |
| } |
| $staffSideMarkEntryUItype = CommonService::getInstance()->getSettings(SettingsConstents::EXAM_VALUATION, SettingsConstents::STAFF_SIDE_MARK_ENTRY_UI_FORMAT); |
| $mappedAcademicPaperSubjectIdsBySubject=[]; |
| $mappedGroupIdsBySubject=[]; |
| if($request->isAssignStaffBySubject){ |
| foreach ($assementExaminers as $assementExaminer) { |
| $mappedAcademicPaperSubjectIdsBySubject[$assementExaminer->subjectId][] = $assementExaminer->paperSubjectId; |
| $mappedGroupIdsBySubject[$assementExaminer->subjectId][] = $assementExaminer->groupId; |
| } |
| } |
| foreach ($assementExaminers as $assementExaminer) { |
| $assementExaminer->valuationDetails->staffIds = empty($assementExaminer->valuationDetails->staffIds) ? [] : $assementExaminer->valuationDetails->staffIds; |
| |
| |
| $assementExaminer->valuationDetails->valuationDates = empty($assementExaminer->valuationDetails->valuationDates) ? [] : $assementExaminer->valuationDetails->valuationDates; |
| $assementExaminer->valuationDetails->valuationStaffs = empty($assementExaminer->valuationDetails->valuationStaffs) ? [] : $assementExaminer->valuationDetails->valuationStaffs; |
| $assementExaminer->valuationDetails->reValuationDates = empty($assementExaminer->valuationDetails->reValuationDates) ? [] : $assementExaminer->valuationDetails->reValuationDates; |
| $assementExaminer->valuationDetails->reValuationStaffs = empty($assementExaminer->valuationDetails->reValuationStaffs) ? [] : $assementExaminer->valuationDetails->reValuationStaffs; |
| if (!empty($assementExaminer->valuationDetails->valuationStaffs)) { |
| foreach ($assementExaminer->valuationDetails->valuationStaffs as $valuationStaff) { |
| $assementExaminer->assignedStaffIds = array_merge($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->addiitonalExamniners); |
| |
| $valuationStaff->staffs = []; |
| $valuationStaff->addiitonalExamninersName = empty($valuationStaff->addiitonalExamniners) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| if(!$request->listAllFaculties){ |
| $requestForStaff = new \stdClass(); |
| $requestForStaff->academicPaperSubjectId = $mappedAcademicPaperSubjectIdsBySubject[$assementExaminer->subjectId] ? $mappedAcademicPaperSubjectIdsBySubject[$assementExaminer->subjectId] : $assementExaminer->paperSubjectId; |
| $valuationStaff->listStaffs = $this->getAssignedFacultiesByAcademicPaper($requestForStaff,'STAFF'); |
| } |
| } |
| foreach ($assementExaminer->valuationDetails->valuationStaffs as $valuationStaff) { |
| $valuationStaff->removedStaffIds = array_diff($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->addiitonalExamniners); |
| foreach($valuationStaff->allStaffs as $staff){ |
| if(!in_array($staff->staffId,$valuationStaff->removedStaffIds)){ |
| $valuationStaff->staffs[] = $staff; |
| } |
| } |
| $valuationStaff->allStaffs = []; |
| if( !empty($valuationStaff->addiitonalExamniners) ){ |
| $existingSavedStaffs = StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| |
| $listStaffIds = array_column($valuationStaff->listStaffs, 'id'); |
| if(!empty($existingSavedStaffs)){ |
| $newStaffEntries = array_filter($existingSavedStaffs, function ($item) use ($listStaffIds) { |
| return !in_array($item->id, $listStaffIds); |
| }); |
| } |
| $valuationStaff->listStaffs = array_values(array_merge( $valuationStaff->listStaffs, $newStaffEntries)); |
| |
| } |
| } |
| foreach ($assementExaminer->valuationDetails->valuationStaffs as $valuationStaff) { |
| if(!empty($valuationStaff->addiitonalExamninersName) && !empty($request->assessmentId)){ |
| foreach($valuationStaff->addiitonalExamninersName as $staffName){ |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| $requestForAvailableStudent = new \stdClass; |
| $responseForAvailableStudent = new \stdClass; |
| $requestForAvailableStudent->staffId = $staffName->id; |
| $requestForAvailableStudent->valuationCount = $valuationStaff->count; |
| $requestForAvailableStudent->examRegistrationId = $assementExaminer->examRegistrationId; |
| $requestForAvailableStudent->assessmentId = $assementExaminer->assessmentId; |
| $requestForAvailableStudent->notCheckEmpty = true; |
| $responseForAvailableStudent = ExamValuationService::getInstance()->getAllAvailableStudentDetails($requestForAvailableStudent); |
| $staffName->isStudentAssigned = $responseForAvailableStudent->countOfAssignedStudents > 0 ? true : false; |
| |
| } |
| } |
| $valuationStaff->isMarkConfirmed = false; |
| if(!empty($assementExaminer->valuationDetails->valuatedStaffs)){ |
| foreach ($assementExaminer->valuationDetails->valuatedStaffs as $valuatedStaff) { |
| if(!empty($valuatedStaff)){ |
| if(($valuationStaff->count == $valuatedStaff->count) && (($valuatedStaff->markEntryStatus == 'CONFIRMED') || ($valuatedStaff->markEntryStatus == 'SAVED'))){ |
| $valuationStaff->isMarkConfirmed = true; |
| } |
| } |
| } |
| } |
| } |
| } |
| else { |
| $assementExaminer->staffs = []; |
| } |
| if (!empty($assementExaminer->valuationDetails->reValuationStaffs)) { |
| foreach ($assementExaminer->valuationDetails->reValuationStaffs as $valuationStaff) { |
| $assementExaminer->assignedStaffIds = array_merge($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->addiitonalExamniners); |
| $valuationStaff->allStaffs = empty($valuationStaff->departmentIds) ? [] : StaffService::getInstance()->getStaffByDepartments($valuationStaff->departmentIds); |
| $valuationStaff->staffs = []; |
| $valuationStaff->addiitonalExamninersName = empty($valuationStaff->addiitonalExamniners) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| } |
| foreach ($assementExaminer->valuationDetails->reValuationStaffs as $valuationStaff) { |
| $valuationStaff->removedStaffIds = array_diff($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->addiitonalExamniners); |
| foreach($valuationStaff->allStaffs as $staff){ |
| if(!in_array($staff->staffId,$valuationStaff->removedStaffIds)){ |
| $valuationStaff->staffs[] = $staff; |
| } |
| } |
| $valuationStaff->allStaffs = []; |
| } |
| if($valuationStaff->count == '1' && !$request->listAllFaculties){ |
| $requestForStaff = new \stdClass; |
| $requestForStaff->academicPaperSubjectId = $assementExaminer->paperSubjectId; |
| $valuationStaff->listStaffs = $this->getAssignedFacultiesByAcademicPaper($requestForStaff,'STAFF'); |
| } |
| else if(!$request->listAllFaculties){ |
| $requestForStaff = new \stdClass; |
| $requestForStaff->academicPaperSubjectId = $assementExaminer->paperSubjectId; |
| $valuationStaff->listStaffs = $this->getAssignedFacultiesByAcademicPaper($requestForStaff,'STAFF'); |
| |
| } |
| } |
| |
| $requestForStaff = new \stdClass; |
| $requestForStaff->academicPaperSubjectId = $mappedAcademicPaperSubjectIdsBySubject[$assementExaminer->subjectId] ? $mappedAcademicPaperSubjectIdsBySubject[$assementExaminer->subjectId] : $assementExaminer->paperSubjectId; |
| $subjectAssignedStaff = $this->getAssignedFacultiesByAcademicPaper($requestForStaff,'STAFF'); |
| $assementExaminer->valuationDetails->firstValuationStaff = $subjectAssignedStaff; |
| |
| $chiefExaminerIds = call_user_func_array('array_merge',array_column($assementExaminer->valuationDetails->valuationStaffs,"chiefExaminers")); |
| $additionalExaminerIds = call_user_func_array('array_merge',array_column($assementExaminer->valuationDetails->valuationStaffs,"additionalExaminer")); |
| $examinerStaffIds = array_unique(array_merge($chiefExaminerIds,$additionalExaminerIds)); |
| $examinerStaffs = empty($examinerStaffIds) ? [] : StaffService::getInstance()->getStaffByIds($examinerStaffIds); |
| switch ($request->listBasedOn) { |
| |
| |
| |
| |
| |
| |
| |
| case 'SUBJECT_WISE': |
| case 'BATCH_WISE': |
| $resultData[$assementExaminer->groupId]->name = $assementExaminer->groupName; |
| $resultData[$assementExaminer->groupId]->isExpand = false; |
| $resultData[$assementExaminer->groupId]->valuationDetails = $assementExaminer->valuationDetails ? $assementExaminer->valuationDetails : $resultData[$assementExaminer->groupId]->valuationDetails; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->subjectId = $assementExaminer->subjectId; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->name = $assementExaminer->subjectName; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->code = $assementExaminer->subjectCode; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->academicTermName = $assementExaminer->academicTermName; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->assessmentDate = $assementExaminer->assessmentDate ? date("d-m-Y", strtotime($assementExaminer->assessmentDate)) : ''; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->syllabusCode = $assementExaminer->syllabusCode; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->subjectPriority = $assementExaminer->subjectPriority; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->slot = "Slot " . $slots->{$assementExaminer->subjectPriority}; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->valuationDetails = $assementExaminer->valuationDetails; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->exams[] = $assementExaminer; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->staffs[] = $examinerStaffs; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->assessmentId = $assementExaminer->assessmentId; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->examRegistrationId = $assementExaminer->examRegistrationId; |
| $searchReguestForCountOfRegisteredStudent = new \stdClass; |
| $searchReguestForCountOfRegisteredStudent->academicPaperSubjectId = $mappedAcademicPaperSubjectIdsBySubject[$assementExaminer->subjectId] ? $mappedAcademicPaperSubjectIdsBySubject[$assementExaminer->subjectId] :$assementExaminer->paperSubjectId; |
| $searchReguestForCountOfRegisteredStudent->groupId = $mappedGroupIdsBySubject[$assementExaminer->subjectId] ? $mappedGroupIdsBySubject[$assementExaminer->subjectId] :$assementExaminer->groupId; |
| $searchReguestForCountOfRegisteredStudent->examRegistrationId = $request->examRegistrationId; |
| $searchReguestForCountOfRegisteredStudent->falseNoGeneratedStudentsOnly = false; |
| if($examValuationProcedureRule->showOnlyFalseNumberInAssignStudents){ |
| $searchReguestForCountOfRegisteredStudent->falseNoGeneratedStudentsOnly = true; |
| } |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->noOfRegisteredStudentsForExam = StudentExamRegistrationService::getInstance()->getCountOfRegisteredStudents($searchReguestForCountOfRegisteredStudent); |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->noOfRegisteredStudents[1] = $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->noOfRegisteredStudents[2] = $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->noOfRegisteredStudentsForExam; |
| $resultData[$assementExaminer->groupId]->subjects[$assementExaminer->paperSubjectId]->noOfRegisteredStudents[3] = ExamValuationService::getInstance()->getTotalCountOfThirdValuationStudentsForExamRegistrationSubject($searchReguestForCountOfRegisteredStudent); |
| break; |
| |
| default: |
| $resultData[$assementExaminer->assessmentId]->name = $assementExaminer->assessmentName; |
| $resultData[$assementExaminer->assessmentId]->batchName = $assementExaminer->groupName; |
| $resultData[$assementExaminer->assessmentId]->valuationDetails = $assementExaminer->valuationDetails; |
| $resultData[$assementExaminer->assessmentId]->exams[] = $assementExaminer; |
| $resultData[$assementExaminer->assessmentId]->staffs[] = $examinerStaffs; |
| break; |
| } |
| } |
| ksort($resultData); |
| if (isset($request->offset) && $request->offset > 0){ |
| if (isset($request->limitStart) && $request->limitStart>=0) { |
| $resultData = array_slice($resultData,(int)$request->limitStart,(int)$request->offset); |
| } |
| else{ |
| $resultData = array_slice($resultData,0,(int)$request->offset); |
| } |
| } |
| if($request->listBasedOn == "SUBJECT_WISE" || $request->listBasedOn == "BATCH_WISE"){ |
| array_walk($resultData,function($group,$key){ |
| $group->subjects = array_values($group->subjects); |
| }); |
| } |
| return array_values($resultData); |
| } |
| |
| |
| |
| |
| |
| |
| public function getCountOfAssessmentExaminer($request){ |
| $request = $this->realEscapeObject($request); |
| $whereQuery = ""; |
| if(!empty($request->assessmentId)) { |
| $whereQuery .= " AND eers.am_assessment_id = '$request->assessmentId'"; |
| } |
| |
| if(!empty($request->groupId)) { |
| $whereQuery .= " AND g.id = '$request->groupId'"; |
| } |
| |
| if(!empty($request->courseTypeId)) { |
| $whereQuery .= " AND g.properties->>'$.courseTypeId' = '$request->courseTypeId'"; |
| } |
| |
| if(!empty($request->academicTermId)) { |
| $whereQuery .= " AND CAST(eerb.properties ->> '$.academicTermId'AS CHAR) = '$request->academicTermId'"; |
| } |
| |
| $query = "SELECT |
| COUNT(distinct eers.cm_academic_paper_subjects_id) as count |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN cm_academic_paper_subjects caps ON |
| caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = caps.ams_subject_id |
| WHERE |
| g.trashed IS NULL |
| "; |
| |
| try { |
| $count = $this->executeQueryForObject($query.$whereQuery)->count; |
| } catch (\Exception $e) { |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION_FEE,"Cannot fetch Exam Registration Batch details! Please try again."); |
| } |
| |
| return (int)$count; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public function updateAssessmentExaminer(ExamRegistration $examRegistrationSubject) |
| { |
| $examRegistrationSubject = $this->realEscapeObject($examRegistrationSubject); |
| $updatedBy = $GLOBALS['userId']; |
| |
| if(empty($examRegistrationSubject)) |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS_EXAM_REGISTRATION_FEE,"Exam Registration is invalid! Please enter a valid Exam Registration"); |
| $examRegistrationSubject->valuationDetails->listStaffs = []; |
| if(!empty($examRegistrationSubject->valuationDetails->valuationStaffs)){ |
| foreach($examRegistrationSubject->valuationDetails->valuationStaffs as $valuationStaff){ |
| $valuationStaff->listStaffs = []; |
| } |
| } |
| $valuationDetails = json_encode($examRegistrationSubject->valuationDetails, JSON_HEX_APOS); |
| $query = "UPDATE ec_exam_registration_subject |
| SET |
| valuation_details = '$valuationDetails', |
| updated_by = '$updatedBy' |
| WHERE |
| id = '$examRegistrationSubject->id'"; |
| |
| |
| try { |
| $this->executeQuery($query); |
| AMSLogger::log_info($this->logger,Events::EC_EXAM_VALUATION_ASSIGN,[ |
| "staff" => new Staff(["id" => $updatedBy]), |
| "request" => $valuationDetails, |
| "status" => StatusConstants::SUCCESS |
| ]); |
| } |
| |
| catch (\Exception $e) { |
| AMSLogger::log_error($this->logger,Events::EC_EXAM_VALUATION_ASSIGN, [ |
| "staff" => new Staff(["id" => $updatedBy]), |
| "request" => $valuationDetails, |
| "errorCode" => $e->getCode(), |
| "errorMessage" => $e->getMessage(), |
| "status" => StatusConstants::FAILED |
| ]); |
| throw new ExamControllerException(ExamControllerException::ERROR_UPDATING_VALUATION_DATE,"Error while updating valuation dates! Please try again."); |
| } |
| } |
| public function getAllSubjectsForCreatePacketByExamRegistrationId($examRegistrationId) |
| { |
| try |
| { |
| $query = "SELECT |
| DISTINCT eers.cm_academic_paper_subjects_id as id, |
| s.code as code, |
| s.name as name, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| eers.id as examRegistrationSubjectId |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_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 cm_academic_paper ap ON |
| aps.cm_academic_paper_id = ap.id |
| WHERE |
| eerb.ec_exam_registration_id='$examRegistrationId' |
| ORDER BY eers.created_date ASC "; |
| |
| |
| $subjects = $this->executeQueryForList($query); |
| foreach($subjects as $subject){ |
| $staffIdsArray = []; |
| $deptIdsArray = []; |
| $subject->answerGroupDetails = $this->getAsnwerGroupConfigDetailsByExamRegistrationAndAcademicPaperSubject($examRegistrationId,$subject->id); |
| $assignedStaffs = $this->getAssignedStaffsForSubjectPacketByAcademicPaperId($examRegistrationId,$subject->id); |
| foreach($assignedStaffs as $staffId) |
| { |
| $staffIdsArray[] = $staffId->staffId; |
| } |
| $subject->staffs = $staffIdsArray; |
| if(!empty($staffIdsArray)){ |
| $departments = CommonExamService::getInstance()->getDepartmentsByAssignedStaffs($subject->staffs); |
| foreach($departments as $department){ |
| $deptIdsArray[] = $department->deptId; |
| } |
| } |
| $subject->departments = $deptIdsArray; |
| } |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjects; |
| } |
| |
| public function getAsnwerGroupConfigDetailsByExamRegistrationAndAcademicPaperSubject($examRegistrationId,$academicPaperSubjectsId) |
| { |
| $academicPaperSubjectsId = $this->realEscapeString($academicPaperSubjectsId); |
| $examRegistrationId = $this->realEscapeString($examRegistrationId); |
| try |
| { |
| $query = "SELECT |
| eesagc.id, |
| eesagc.registeredStudentCount, |
| eesagc.studentsPerAnswerSheetGroup, |
| eesagc.studentsPerAnswerSheetGroupCount, |
| eesagc.cm_academic_paper_subjects_id AS paperSubjectId, |
| eesagc.ec_exam_registration_id AS examRegistrationId, |
| eesag.packet_start_no AS answerSheetRangeFrom, |
| eesag.packet_end_no AS answerSheetRangeTo |
| FROM |
| exam_examReg_subject_answerSheet_group_config eesagc |
| INNER JOIN exam_examReg_subject_answerSheet_group eesag ON |
| eesagc.id = eesag.examReg_subject_answerSheet_group_config_id |
| WHERE |
| eesagc.cm_academic_paper_subjects_id = '$academicPaperSubjectsId' AND |
| eesagc.ec_exam_registration_id = '$examRegistrationId'"; |
| |
| $answerGroupDetailsConfig = $this->executeQueryForObject($query); |
| if(empty( $answerGroupDetailsConfig)) |
| { |
| $answerGroupDetailsConfig->id = NULL; |
| $answerGroupDetailsConfig->answerSheetRangeFrom = NULL; |
| $answerGroupDetailsConfig->answerSheetRangeTo = NULL; |
| $answerGroupDetailsConfig->paperSubjectId = $academicPaperSubjectsId; |
| $answerGroupDetailsConfig->examRegistrationId = $examRegistrationId; |
| $answerGroupDetailsConfig->registeredStudentCount = $this->getCountOfRegisteredStudentsByAssessment($examRegistrationId,$academicPaperSubjectsId); |
| $answerGroupDetailsConfig->studentsPerAnswerSheetGroup = CommonService::getInstance()->getSettings("EXAM_VALUATION", "ANSWERSHEETS_PER_PACKET"); |
| $answerGroupDetailsConfig->studentsPerAnswerSheetGroupCount = ceil($answerGroupDetailsConfig->registeredStudentCount/$answerGroupDetailsConfig->studentsPerAnswerSheetGroup ); |
| } |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $answerGroupDetailsConfig; |
| } |
| public function getCountOfRegisteredStudentsByAssessment($examRegistrationId,$academicPaperSubjectId) |
| { |
| $academicPaperSubjectId = $this->realEscapeString($academicPaperSubjectId); |
| $examRegistrationId = $this->realEscapeString($examRegistrationId); |
| try |
| { |
| $query = "SELECT |
| count(DISTINCT student_id) as registerdStudentCount |
| FROM |
| ec_student_assessment_registration |
| WHERE |
| am_assessment_id IN (SELECT |
| eers.am_assessment_id |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| WHERE |
| eerb.ec_exam_registration_id='$examRegistrationId' AND |
| eers.cm_academic_paper_subjects_id = '$academicPaperSubjectId') |
| AND properties ->> '$.registrationStatus' = 'REGISTERED' |
| AND properties ->> '$.feeStatus' = 'PAID'"; |
| |
| $registerdStudentCount = $this->executeQueryForObject($query); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $registerdStudentCount->registerdStudentCount; |
| } |
| public function getAssignedStaffsForSubjectPacketByAcademicPaperId($examRegistrationId,$academicPaperSubjectId) |
| { |
| $academicPaperSubjectId = $this->realEscapeString($academicPaperSubjectId); |
| $examRegistrationId = $this->realEscapeString($examRegistrationId); |
| try |
| { |
| $query = "SELECT |
| additionalEvaluator AS staffId |
| FROM |
| examValuationFacultyPackets |
| WHERE |
| cm_academic_paper_subjects_id = '$academicPaperSubjectId' AND |
| ec_exam_registration_id = '$examRegistrationId'"; |
| |
| $assignedStaffs = $this->executeQueryForList($query); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $assignedStaffs; |
| } |
| |
| |
| public function getMaxSubjectMarkByAcademicPaperSubjectId($academicPaperSubjectId) |
| { |
| $academicPaperSubjectId = is_array($academicPaperSubjectId) ? $this->realEscapeArray($academicPaperSubjectId):stripslashes($this->realEscapeString($academicPaperSubjectId)); |
| $academicPaperSubjectId = is_array($academicPaperSubjectId) ? "'" . implode("','",$academicPaperSubjectId) . "'" : "'".$academicPaperSubjectId."'"; |
| try |
| { |
| $query = "SELECT |
| aps.properties ->> '$.externalMaxMark' as maximumSubjectMark |
| FROM |
| cm_academic_paper_subjects aps |
| WHERE |
| aps.id IN ($academicPaperSubjectId)"; |
| |
| $maximumSubjectMark = $this->executeQueryForObject($query); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $maximumSubjectMark->maximumSubjectMark; |
| } |
| |
| public function getExamregistrationSubjectDetails($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| $searchRequest->academicPaperSubjectId = stripslashes($searchRequest->academicPaperSubjectId); |
| $searchRequest->assessmentId = stripslashes($searchRequest->assessmentId); |
| try { |
| $whereQuery = ""; |
| if(!empty($searchRequest->groupId)) { |
| $groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; |
| $whereQuery .= " AND eerb.groups_id IN ( $groupIdString )"; |
| } |
| 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->academicPaperSubjectId)) { |
| $academicPaperSubjectIdString = is_array($searchRequest->academicPaperSubjectId) ? "'" . implode("','",$searchRequest->academicPaperSubjectId) . "'" : "'".$searchRequest->academicPaperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdString )"; |
| } |
| if(!empty($searchRequest->academicPaperSubjectIds)) { |
| $academicPaperSubjectIdsString = is_array($searchRequest->academicPaperSubjectIds) ? "'" . implode("','",$searchRequest->academicPaperSubjectIds) . "'" : "'".$searchRequest->academicPaperSubjectIds."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdsString )"; |
| } |
| if(!empty($searchRequest->assessmentId)) { |
| $whereQuery .= " AND eers.am_assessment_id IN ( '$searchRequest->assessmentId' )"; |
| } |
| if(!empty($searchRequest->examRegistrationBatchId)) { |
| $examRegistrationBatchIdString = is_array($searchRequest->examRegistrationBatchId) ? "'" . implode("','",$searchRequest->examRegistrationBatchId) . "'" : "'".$searchRequest->examRegistrationBatchId."'"; |
| $whereQuery .= " AND eerb.id IN ( $examRegistrationBatchIdString )"; |
| } |
| $query = "SELECT |
| eer.id as examRegistrationId, |
| eer.name as examRegistrationName, |
| eer.type as examRegistrationType, |
| eers.am_assessment_id as assessmentId, |
| eer.properties ->> '$.examDate' as examDate, |
| aps.properties ->> '$.externalMaxMark' as maximumSubjectMark, |
| eers.valuation_details as valuationDetails, |
| s.code as subjectCode, |
| s.name as subjectName, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| g.name as groupName, |
| g.id as groupId, |
| ct.course_Type as courseType |
| FROM |
| ec_exam_registration_subject eers |
| 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 |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN `course_type` ct ON |
| ct.courseTypeID = p.course_type_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| WHERE |
| 1 = 1 "; |
| |
| $subjectDetails = $this->executeQueryForObject($query.$whereQuery); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getAllSubjectsForExamDateDefinition($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try { |
| $response = new \stdClass; |
| $request = new \stdClass; |
| $enableOnlineExam = 0; |
| $enableOnlineExam = CommonService::getInstance()->getSettings(SettingsConstants::EXAM_CONTROLLER, SettingsConstants::ONLINE_EXAMINATION_PRIVILEGE); |
| $assignedSubjects = []; |
| $request->examRegistrationId = $searchRequest->examRegistrationId; |
| $request->subjectTypes = $searchRequest->subjectTypeIds; |
| $request->groupId = $searchRequest->groupId; |
| $request->academicTermId = $searchRequest->currentTermId; |
| $request->subjectCategoriesIds = $searchRequest->subjectCategoriesIds; |
| $request->subjectSlotIds = $searchRequest->subjectSlotIds; |
| |
| $searchRuleRequest = new SearchRuleRequest; |
| $searchRuleRequest->name = "EXAM_DEFINITION_RULE"; |
| $examDefinitionRule = reset(RuleService::getInstance()->searchRule($searchRuleRequest))->rule; |
| |
| $requestForExamRegistration = new SearchExamRegistrationRequest; |
| $requestForExamRegistration->id = $request->examRegistrationId; |
| $examRegistration = ExamRegistrationService::getInstance()->searchExamRegistration($requestForExamRegistration); |
| $uniqueSubjects = []; |
| $assignedSubjects = $this->getAllSubjectAssessmentDetailsByExamRegistrationId($request); |
| foreach($assignedSubjects as $subject){ |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->id = $subject->subjectId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->subjectCode = $subject->subjectCode; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->subjectName = $subject->subjectName; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->syllabusName = $subject->syllabusName; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->isTheory = $subject->isTheory; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->onlineExamType = $subject->onlineExamType; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->subjectTypeId = $subject->subjectTypeId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->externalMaxMark = $subject->externalMaxMark; |
| $subject->assessmentProperties = json_decode($subject->assessmentProperties); |
| if(! $subject->assessmentProperties->assessmentDate){ |
| $subject->assessmentProperties->assessmentDate= ""; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->hasEmptyDate = 1; |
| } |
| if(! $subject->assessmentProperties->startTime){ |
| $subject->assessmentProperties->startTime= ""; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->hasEmptyDate = 1; |
| } |
| if(! $subject->assessmentProperties->endTime && $examDefinitionRule->isAvoidExamEndTime != '1'){ |
| $subject->assessmentProperties->endTime= ""; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->hasEmptyDate = 1; |
| } |
| if(!empty($subject->assessmentIdentifyingContext)){ |
| $subject->assessmentIdentifyingContext = json_decode($subject->assessmentIdentifyingContext); |
| } |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentProperties = clone($subject->assessmentProperties); |
| if( $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->hasEmptyDate ){ |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentProperties->assessmentDate= ""; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentProperties->startTime= ""; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentProperties->endTime= ""; |
| } |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->groupId = $subject->groupId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->groupName = $subject->groupName; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->assessmentProperties = $subject->assessmentProperties; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->onlineExamType = $subject->onlineExamType; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->externalMaxMark = $subject->externalMaxMark; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->assessmentId = $subject->assessmentId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->academicPaperSubjectId = $subject->academicPaperSubjectId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->assessmentIdentifyingContext = $subject->assessmentIdentifyingContext; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->assessmentInstanceId = $subject->assessmentInstanceId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->assessmentDescription = $subject->assessmentDescription; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->assessmentName = $subject->assessmentName; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->subjectName = $subject->subjectName; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->syllabusName = $subject->syllabusName; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->batches[$subject->groupId]->onlineExamId = $subject->onlineExamId; |
| |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->assessmentId = $subject->assessmentId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->academicPaperSubjectId = $subject->academicPaperSubjectId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->assessmentProperties = $subject->assessmentProperties; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->assessmentIdentifyingContext = $subject->assessmentIdentifyingContext; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->assessmentInstanceId = $subject->assessmentInstanceId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->assessmentDescription = $subject->assessmentDescription; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->assessmentName = $subject->assessmentName; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->onlineExamType = $subject->onlineExamType; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->onlineExamId = $subject->onlineExamId; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->subjectName = $subject->subjectName; |
| $uniqueSubjects[$subject->subjectCode.'-'.$subject->subjectName]->assessmentIds[$subject->assessmentId]->syllabusName = $subject->syllabusName; |
| } |
| $totalExamAssessment = count($uniqueSubjects); |
| $uniqueSubjects = array_values($uniqueSubjects); |
| foreach($uniqueSubjects as $subject){ |
| $subject->batches = array_values($subject->batches); |
| $subject->assessmentIds = array_values($subject->assessmentIds); |
| $subject->isExpand = false; |
| $subject->isSelected = false; |
| } |
| ksort($uniqueSubjects); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| $response->subjects = $uniqueSubjects; |
| $response->totalExamAssessment = $totalExamAssessment; |
| $response->publishExamTimeTableStudent = reset($examRegistration)->properties->publishExamTimeTableStudent; |
| $response->considerPublishTimeTable = $examDefinitionRule->considerPublishTimeTable; |
| $response->isAvoidExamEndTime = $examDefinitionRule->isAvoidExamEndTime == '1' ? true : false; |
| $response->enableOnlineExam = $enableOnlineExam; |
| $response->currentStaffId = (int)$GLOBALS['userId']; |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $response; |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getAllSubjectAssessmentDetailsByExamRegistrationId($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| $whereQuery = null; |
| $subjectOrderBy = CommonService::getInstance()->getSettings(SettingsConstants::EXAM_CONTROLLER, SettingsConstants::SUBJECT_ORDER_TAKEN_BY); |
| if($subjectOrderBy == "ORDER"){ |
| $orderBy = " ORDER BY CAST(aps.properties ->> '$.orderNo' AS UNSIGNED) ASC"; |
| } |
| else{ |
| $orderBy = " ORDER BY CAST(aps.properties ->> '$.priority' AS UNSIGNED) ASC"; |
| } |
| if(!empty($searchRequest->subjectTypes)){ |
| $whereQuery .= " AND aps.properties ->> '$.subjectTypeId' IN (" ."'" . implode("', '", $searchRequest->subjectTypes) . "'" .")"; |
| } |
| if(!empty($searchRequest->subjectCategoriesIds)){ |
| $whereQuery .= " AND aps.category_id IN (" ."'" . implode("', '", $searchRequest->subjectCategoriesIds) . "'" .")"; |
| } |
| if(!empty($searchRequest->subjectSlotIds)){ |
| $whereQuery .= " AND aps.slot_id IN (" ."'" . implode("', '", $searchRequest->subjectSlotIds) . "'" .")"; |
| } |
| 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->academicTermId)) { |
| $academicTermIdString = is_array($searchRequest->academicTermId) ? "'" . implode("','",$searchRequest->academicTermId) . "'" : "'".$searchRequest->academicTermId."'"; |
| $whereQuery .= " AND eerb.properties ->> '$.academicTermId' IN ( $academicTermIdString )"; |
| } |
| $joinQueries = ""; |
| if(!empty($searchRequest->courseTypeId)) { |
| $whereQuery .= " AND p.course_type_id = $searchRequest->courseTypeId"; |
| $joinQueries .= " INNER JOIN program p |
| ON p.id = g.program_id"; |
| } |
| if(!empty($searchRequest->startYear)) { |
| $whereQuery .= " AND g.properties ->> '$.startYear' = '$searchRequest->startYear'"; |
| } |
| try { |
| $query = "SELECT |
| DISTINCT aps.id as id, |
| aps.id as academicPaperSubjectId, |
| g.id as groupId, |
| g.name as groupName, |
| eers.am_assessment_id as assessmentId, |
| aa.name as assessmentName, |
| aa.description as assessmentDescription, |
| aa.am_instance_id as assessmentInstanceId, |
| aa.identifying_context as assessmentIdentifyingContext, |
| aa.properties_value as assessmentProperties, |
| aa.permissions as assessmentPermissions, |
| s.id as subjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| IF(aps.properties ->> '$.classType' like '%THEORY%',1,0) AS isTheory, |
| oe.id as onlineExamId, |
| oe.identifying_context ->> '$.type' as onlineExamType, |
| aps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| LEFT JOIN oe_exams oe ON |
| oe.assessment_id = eers.am_assessment_id AND oe.is_deleted = 0 |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| $joinQueries |
| WHERE |
| aa.is_active = 1 "; |
| $subjectDetails = $this->executeQueryForList($query.$whereQuery.$orderBy); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| public function printExamDateDetails($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try { |
| $response = new \stdClass; |
| $request = new \stdClass; |
| $assignedSubjects = []; |
| $request->examRegistrationId = $searchRequest->examRegistrationId; |
| $request->subjectTypes = $searchRequest->subjectTypeIds; |
| $request->subjectCategoriesIds = $searchRequest->subjectCategoriesIds; |
| $request->subjectSlotIds = $searchRequest->subjectSlotIds; |
| $assignedSubjects = $this->getAllSubjectAssessmentDetailsByExamRegistrationId($request); |
| foreach($assignedSubjects as $subject){ |
| if(!empty($subject->assessmentIdentifyingContext)){ |
| $subject->assessmentIdentifyingContext = json_decode($subject->assessmentIdentifyingContext); |
| } |
| if(!empty($subject->assessmentProperties)){ |
| $subject->assessmentProperties = json_decode($subject->assessmentProperties); |
| if($subject->assessmentProperties->assessmentDate) |
| { |
| $subject->assessmentProperties->assessmentDate = date("d-m-Y" ,strtotime($subject->assessmentProperties->assessmentDate)); |
| } |
| if($subject->assessmentProperties->startTime) |
| { |
| $subject->assessmentProperties->startTime = date("h:i A" ,strtotime($subject->assessmentProperties->startTime)); |
| } |
| if($subject->assessmentProperties->endTime) |
| { |
| $subject->assessmentProperties->endTime = date("h:i A" ,strtotime($subject->assessmentProperties->endTime)); |
| } |
| } |
| } |
| if(empty($assignedSubjects)){ |
| throw new ExamControllerException(ExamControllerException::NO_STUDENT_IN_THE_BATCH_SUBJECT,"No Students Registerd In this Exam"); |
| } |
| else |
| { |
| $requestForExamRegistration = new SearchExamRegistrationRequest; |
| $requestForExamRegistration->id = $searchRequest->examRegistrationId; |
| $examRegistration = ExamRegistrationService::getInstance()->searchExamRegistration($requestForExamRegistration); |
| if(!empty($examRegistration)){ |
| $currentExamRegistrationDetails = $examRegistration[0]; |
| } |
| $templateName = "PrintExamDateAndTimeDetails"; |
| $responseHtml = TwigRenderer::renderTemplateFileToHtml(realpath(DOCUMENT_ROOT."../examcontroller-api/src/com/linways/web/templates/printTwigs/$templateName.twig"), [ 'subjects'=>$assignedSubjects ,'examRegistration'=>$currentExamRegistrationDetails]); |
| |
| $prtContent = NULL; |
| $prtContent .= '<html><head>'; |
| $prtContent .= "<style> |
| |
| </style>"; |
| $prtContent .= '</head><title>Exam Date And Time Report</title><body>'; |
| $prtContent .= $responseHtml; |
| $prtContent .= '</body></html>'; |
| |
| $totalWidth = 210; |
| $totalHeight = 297; |
| $options = array( |
| 'page-width' => $totalWidth."mm", |
| 'page-height' => $totalHeight."mm", |
| 'dpi' => 96, |
| 'margin-top' => "9mm", |
| 'margin-left' => "1mm", |
| 'margin-right' => "1mm", |
| 'margin-bottom' => "9mm", |
| |
| 'user-style-sheet' => realpath(DOCUMENT_ROOT . "/libcommon/bootstrap/css/bootstrap.min.css") |
| ); |
| $programResult = new \stdClass; |
| $programResult->displayData = $responseHtml; |
| $programResult->pdf = PdfUtil::renderPdf($prtContent, $options); |
| return $programResult; |
| |
| } |
| |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $response; |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getSubjectForCurrentStaffs($request) |
| { |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $currentUerId = $GLOBALS['userId']; |
| $subjectDetails = []; |
| try |
| { |
| $query = "SELECT |
| DISTINCT(aps.id) as id, |
| aps.id as academicPaperSubjectId, |
| s.id as subjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| oe.id as onlineExamId, |
| eers.am_assessment_id as assessmentId, |
| oe.settings ->> '$.isValidated' AS isValidated, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| IF(aps.properties ->> '$.classType' LIKE '%THEORY%',1,0) AS isTheory, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| eers.valuation_details as valuationDetails, |
| eerb.ec_exam_registration_id as examRegistrationId, |
| eqc.qpCode, |
| ct.course_Type as courseType |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = eers.am_assessment_id AND oe.is_deleted = 0 |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN `course_type` ct ON |
| ct.courseTypeID = p.course_type_id |
| LEFT JOIN examQpCodes eqc ON |
| eqc.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND eqc.ec_exam_registration_id = eerb.ec_exam_registration_id |
| WHERE |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('addiitonalExamniners', '$currentUerId')) AND |
| eerb.ec_exam_registration_id='$request->examRegistrationId' AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) OR |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('chiefExaminers', '$currentUerId')) AND |
| eerb.ec_exam_registration_id='$request->examRegistrationId' AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) "; |
| |
| $subjects = $this->executeQueryForList($query); |
| foreach($subjects as $subject){ |
| $subject->valuationDetailsCopy = json_decode($subject->valuationDetails); |
| $subject->valuationStaffs = $subject->valuationDetailsCopy->valuationStaffs; |
| $subject->currentValuationObj = (array_filter($subject->valuationStaffs ,function($value)use($request){ |
| return $value->count == $request->currentValuationCount; |
| })); |
| foreach($subject->currentValuationObj as $currentValuationObj){ |
| if((in_array( $currentUerId,$currentValuationObj->addiitonalExamniners))|| (in_array( $currentUerId,$currentValuationObj->chiefExaminers))){ |
| $subjectDetails[$subject->id]->id = $subject->id; |
| $subjectDetails[$subject->id]->subjectId = $subject->subjectId; |
| $subjectDetails[$subject->id]->academicPaperSubjectId = $subject->academicPaperSubjectId; |
| $subjectDetails[$subject->id]->subjectCode = $subject->subjectCode; |
| $subjectDetails[$subject->id]->subjectName = $subject->subjectName; |
| $subjectDetails[$subject->id]->assessmentId = $subject->assessmentId; |
| $subjectDetails[$subject->id]->isTheory = $subject->isTheory; |
| $subjectDetails[$subject->id]->externalMaxMark = $subject->externalMaxMark; |
| $subjectDetails[$subject->id]->valuationDetails = $subject->valuationDetails; |
| $subjectDetails[$subject->id]->examRegistrationId = $subject->examRegistrationId; |
| $subjectDetails[$subject->id]->qpCode = $subject->qpCode; |
| $subjectDetails[$subject->id]->courseType = $subject->courseType; |
| $subjectDetails[$subject->id]->onlineExamId[] = $subject->onlineExamId; |
| $subjectDetails[$subject->id]->isValidatedDetails[] = $subject->isValidated; |
| } |
| } |
| |
| } |
| $subjectDetails = array_values($subjectDetails); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| public function getcurrentExamSubjectForCurrentStaff($request) |
| { |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $currentUerId = $GLOBALS['userId']; |
| $whereQuery = null; |
| if(!empty($request->paperSubjectId)) |
| { |
| $academicPaperSubjectIdsString = is_array($request->paperSubjectId) ? "'" . implode("','",$request->paperSubjectId) . "'" : "'".$request->paperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdsString )"; |
| } |
| if(!empty($request->examRegistrationBatchId)) |
| { |
| $whereQuery .= " AND eers.ec_exam_registration_batch_id = '$request->examRegistrationBatchId' "; |
| } |
| if(!empty($request->academicPaperSubjectIds)) { |
| $academicPaperSubjectIdsString = is_array($request->academicPaperSubjectIds) ? "'" . implode("','",$request->academicPaperSubjectIds) . "'" : "'".$request->academicPaperSubjectIds."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdsString )"; |
| } |
| if(!empty($request->examRegistrationId)) |
| { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId' "; |
| } |
| if(!empty($request->assessmentId)) |
| { |
| $whereQuery .= " AND eers.am_assessment_id = '$request->assessmentId' "; |
| } |
| try |
| { |
| $query = "SELECT DISTINCT |
| eers.am_assessment_id as id, |
| aps.id as academicPaperSubjectId, |
| eers.am_assessment_id as assessmentId, |
| g.id as groupId, |
| g.name as groupName, |
| eer.name as examRegistrationName, |
| eer.type as examRegistrationType, |
| s.code as subjectCode, |
| s.name as subjectName, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| aps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| aps.properties ->> '$.internalMaxMark' as internalMaxMark, |
| eers.valuation_details as valuationDetails, |
| aa.properties_value as assessmentProperties, |
| oe.id as onlineExamId, |
| eqc.qpCode, |
| ct.course_Type as courseType |
| FROM |
| ec_exam_registration_subject eers |
| 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 |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN `course_type` ct ON |
| ct.courseTypeID = p.course_type_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = aa.id AND oe.is_deleted = 0 |
| LEFT JOIN examQpCodes eqc ON |
| eqc.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND eqc.ec_exam_registration_id = eerb.ec_exam_registration_id |
| WHERE |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('addiitonalExamniners', '$currentUerId')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) $whereQuery OR |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('chiefExaminers', '$currentUerId')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) $whereQuery "; |
| $subjectDetails = $this->executeQueryForObject($query); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getAllCurretStaffSubjectsValuationDetailsByExamRegistrationId($request) |
| { |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $currentUerId = $GLOBALS['userId']; |
| $whereQuery = null; |
| if(!empty($request->examRegistrationId)) |
| { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId' "; |
| } |
| if(!empty($request->academicPaperSubjectIds)){ |
| $request->paperSubjectId = is_array($request->academicPaperSubjectIds) ? "'" . implode("','",$request->academicPaperSubjectIds) . "'" : "'".$request->academicPaperSubjectIds."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ($request->paperSubjectId) "; |
| } |
| try |
| { |
| $query = "SELECT |
| eers.am_assessment_id as id, |
| eers.am_assessment_id as assessmentId, |
| eers.cm_academic_paper_subjects_id as academicPaperSubjectId, |
| eers.valuation_details as valuationDetails |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| WHERE |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('addiitonalExamniners', '$currentUerId')) $whereQuery OR |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('chiefExaminers', '$currentUerId')) $whereQuery"; |
| $subjectDetails = $this->executeQueryForList($query); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getAllSubjectForCurrentStaff($request) |
| { |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $currentUerId = $GLOBALS['userId']; |
| $whereQuery = null; |
| if(!empty($request->paperSubjectId)) |
| { |
| $request->paperSubjectId = is_array($request->paperSubjectId) ? "'" . implode("','",$request->paperSubjectId) . "'" : "'".$request->paperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ($request->paperSubjectId) "; |
| } |
| if(!empty($request->examRegistrationBatchId)) |
| { |
| $whereQuery .= " AND eers.ec_exam_registration_batch_id = '$request->examRegistrationBatchId' "; |
| } |
| if(!empty($request->examRegistrationId)) |
| { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId' "; |
| } |
| try |
| { |
| $query = "SELECT |
| DISTINCT (eers.am_assessment_id) as id, |
| aps.id as academicPaperSubjectId, |
| eers.am_assessment_id as assessmentId, |
| eers.id as ec_exam_registration_subject_id, |
| g.id as groupId, |
| g.name as groupName, |
| s.code as subjectCode, |
| s.name as subjectName, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| aps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| eers.valuation_details as valuationDetails, |
| aa.properties_value as assessmentProperties |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| WHERE |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('addiitonalExamniners', '$currentUerId')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) $whereQuery OR |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('chiefExaminers', '$currentUerId')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) $whereQuery"; |
| $subjectDetails = $this->executeQueryForList($query); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getAllExamSubjectForCurrentStaffDigitalValuation($request) |
| { |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $currentUerId = $GLOBALS['userId']; |
| $whereQuery = null; |
| if(!empty($request->paperSubjectId)) |
| { |
| $academicPaperSubjectIdsString = is_array($request->paperSubjectId) ? "'" . implode("','",$request->paperSubjectId) . "'" : "'".$request->paperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdsString )"; |
| } |
| if(!empty($request->examRegistrationBatchId)) |
| { |
| $whereQuery .= " AND eers.ec_exam_registration_batch_id = '$request->examRegistrationBatchId' "; |
| } |
| if(!empty($request->examRegistrationId)) |
| { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId' "; |
| } |
| if(!empty($request->assessmentId)) |
| { |
| $whereQuery .= " AND eers.am_assessment_id = '$request->assessmentId' "; |
| } |
| try |
| { |
| $query = "SELECT |
| DISTINCT eers.am_assessment_id as id, |
| aps.id as academicPaperSubjectId, |
| eers.am_assessment_id as assessmentId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| eap.packet_list as packetDetails, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| aps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| eers.valuation_details as valuationDetails, |
| aa.properties_value as assessmentProperties |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| LEFT JOIN ec_answersheet_packet eap ON |
| eap.identifying_context ->> '$.examRegistrationId' = eerb.ec_exam_registration_id AND |
| eap.identifying_context ->> '$.academicPaperSubjectId' = eers.cm_academic_paper_subjects_id AND |
| eap.identifying_type = 'EXAM_REGISTRATION_SUBJECT' |
| WHERE |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('addiitonalExamniners', '$currentUerId')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) $whereQuery OR |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('chiefExaminers', '$currentUerId')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.valuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) $whereQuery "; |
| $subjectDetails = $this->executeQueryForObject($query); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getAllSubjectsDetailsByExamRegistrationId($searchRequest) |
| { |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try |
| { |
| $response = new \stdClass; |
| $subjects = []; |
| $assignedSubjects = []; |
| $examRegistrationId = $searchRequest->examRegistrationId; |
| $examType = $searchRequest->examType; |
| if($examType == "REVALUATION"){ |
| $subjects = $this->getAllSubjectDetailsByRevaluation($searchRequest); |
| } |
| else{ |
| $subjects = $this->getAllSubjectDetailsByExamRegistrationId($examRegistrationId); |
| } |
| foreach($subjects as $subject){ |
| $assignedSubjects[$subject->subjectCode]->academicPaperSubjectIds[] = $subject->academicPaperSubjectId; |
| $assignedSubjects[$subject->subjectCode]->subjectCode = $subject->subjectCode; |
| $assignedSubjects[$subject->subjectCode]->subjectName = $subject->subjectName; |
| $assignedSubjects[$subject->subjectCode]->examRegistrationId = $subject->examRegistrationId; |
| $assignedSubjects[$subject->subjectCode]->subjectTypeId = $subject->subjectTypeId; |
| $assignedSubjects[$subject->subjectCode]->externalMaxMark = $subject->externalMaxMark; |
| $assignedSubjects[$subject->subjectCode]->subjectCode = $subject->subjectCode; |
| } |
| $assignedSubjects = array_values($assignedSubjects); |
| array_walk($assignedSubjects,function($subject,$key){ |
| $subject->academicPaperSubjectId = implode ( ",", $subject->academicPaperSubjectIds ); |
| }); |
| $response->subjects = $assignedSubjects; |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $response; |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getAllSubjectDetailsByExamRegistrationId($examRegistrationId) |
| { |
| $examRegistrationId = $this->realEscapeString($examRegistrationId); |
| $whereQuery = null; |
| try |
| { |
| $query = "SELECT |
| DISTINCT aps.id as id, |
| aps.id as academicPaperSubjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| eers.am_assessment_id as assessmentId, |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, |
| aa.properties_value ->>'$.startTime' AS assessmentStartTime, |
| aa.properties_value ->>'$.endTime' AS assessmentEndTime, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| eerb.ec_exam_registration_id as examRegistrationId, |
| aps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| WHERE |
| eerb.ec_exam_registration_id='$examRegistrationId' "; |
| $subjectDetails = $this->executeQueryForList($query.$whereQuery); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getAllSubjectDetailsByRevaluation($searchRequest) { |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try |
| { |
| $whereQuery = ""; |
| if(!empty($searchRequest->examRegistrationId)) { |
| $whereQuery .= " AND eer.id IN ( '$searchRequest->examRegistrationId' )"; |
| } |
| if(!empty($searchRequest->revaluationType)) { |
| $whereQuery .= " AND esar.identifying_context->>'$.revaluationType' IN ( '$searchRequest->revaluationType' )"; |
| } |
| if(!empty($searchRequest->studentId)) { |
| $whereQuery .= " AND esar.student_id IN ( '$searchRequest->studentId' )"; |
| } |
| if(!empty($searchRequest->academicPaperSubjectId)) { |
| $academicPaperSubjectIdString = is_array($searchRequest->academicPaperSubjectId) ? "'" . implode("','",$searchRequest->academicPaperSubjectId) . "'" : "'".$searchRequest->academicPaperSubjectId."'"; |
| $whereQuery .= " AND caps.id IN ( $academicPaperSubjectIdString )"; |
| } |
| if(!empty($searchRequest->academicPaperSubjectIds)) { |
| $academicPaperSubjectIdsString = is_array($searchRequest->academicPaperSubjectIds) ? "'" . implode("','",$searchRequest->academicPaperSubjectIds) . "'" : "'".$searchRequest->academicPaperSubjectIds."'"; |
| $whereQuery .= " AND caps.id IN ( $academicPaperSubjectIdsString )"; |
| } |
| if(!empty($searchRequest->assessmentId)) { |
| $whereQuery .= " AND esar.am_assessment_id IN ( '$searchRequest->assessmentId' )"; |
| } |
| $query = "SELECT |
| DISTINCT caps.id as id, |
| caps.id as academicPaperSubjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| IF(caps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| caps.properties ->> '$.classType' AS classType, |
| eerb.ec_exam_registration_id as examRegistrationId, |
| caps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| caps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| caps.properties ->> '$.externalMaxMark' as maximumSubjectMark, |
| eer.name as examRegistrationName, |
| eer.type as examRegistrationType |
| FROM |
| ec_student_assessment_registration esar |
| INNER JOIN ec_exam_registration eer ON |
| eer.`type` = esar.ec_exam_registration_type AND eer.id = CAST(esar.identifying_context->>'$.examRegistrationId' AS CHAR) |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.ec_exam_registration_id = eer.id |
| INNER JOIN ec_exam_registration eer2 ON |
| eer2.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eer2.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eer2.id AND |
| eerb.groups_id = eerbParent.groups_id |
| INNER JOIN ec_exam_registration_subject eers2 ON |
| eers2.ec_exam_registration_batch_id = eerbParent.id |
| INNER JOIN cm_academic_paper_subjects caps ON |
| caps.id = eers2.cm_academic_paper_subjects_id AND eers2.am_assessment_id = esar.am_assessment_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = caps.ams_subject_id |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| AND g.`type` = 'BATCH' |
| WHERE eer.type = 'REVALUATION' AND esar.properties ->>'$.feeStatus' = 'PAID' AND esar.properties ->>'$.registrationStatus' = 'REGISTERED' AND eer.trashed IS NULL "; |
| $subjectDetails = $this->executeQueryForList($query.$whereQuery); |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getCurrentSubjectDetailsByExamRegistrationIdAndPaperSubjectId($request) |
| { |
| $request = $this->realEscapeObject($request); |
| $request->academicPaperSubjectId = is_array($request->academicPaperSubjectId) ? "'" . implode("','",$request->academicPaperSubjectId) . "'" : "'".$request->academicPaperSubjectId."'"; |
| $whereQuery = null; |
| try |
| { |
| $query = "SELECT |
| DISTINCT aps.id as id, |
| aps.id as academicPaperSubjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| eer.name as examRegistrationName, |
| eer.type as examRegistrationType, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| aps.properties ->> '$.classType' AS classType, |
| eerb.ec_exam_registration_id as examRegistrationId, |
| aps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| ct.course_Type as courseType |
| FROM |
| ec_exam_registration_subject eers |
| 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 |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN `course_type` ct ON |
| ct.courseTypeID = p.course_type_id |
| WHERE |
| eerb.ec_exam_registration_id='$request->examRegistrationId' AND |
| eers.cm_academic_paper_subjects_id IN ( $request->academicPaperSubjectId )"; |
| $subjectDetails = $this->executeQueryForObject($query.$whereQuery); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| public function searchExamRegistrationSubjects($searchRequest) |
| { |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try |
| { |
| $whereQuery = null; |
| |
| if(!empty($searchRequest->examRegistrationBatchId)) { |
| $whereQuery = "AND eers.ec_exam_registration_batch_id = '$searchRequest->examRegistrationBatchId'"; |
| } |
| if(!empty($searchRequest->examRegistrationIds)) { |
| $examRegistrationString= "'" . implode("', '", $searchRequest->examRegistrationIds) . "'" ; |
| $whereQuery = "AND eers.ec_exam_registration_id IN ($examRegistrationString)"; |
| } |
| if(!empty($searchRequest->examRegistrationBatchIds)) { |
| $examRegistrationBatchString= "'" . implode("', '", $searchRequest->examRegistrationBatchIds) . "'" ; |
| $whereQuery = "AND eers.ec_exam_registration_batch_id IN ($examRegistrationBatchString)"; |
| } |
| if(!empty($searchRequest->academicTermId)) { |
| $academicTermIdString = is_array($searchRequest->academicTermId) ? "'" . implode("','",$searchRequest->academicTermId) . "'" : "'".$searchRequest->academicTermId."'"; |
| $whereQuery .= " AND eerb.academicTermId IN ($academicTermIdString)"; |
| } |
| if(!empty($searchRequest->examDate)) { |
| $whereQuery .= " AND aa.properties_value->>'$.assessmentDate'='$searchRequest->examDate' "; |
| } |
| |
| $query = "SELECT |
| DISTINCT (aps.id) as id, |
| s.code as code, |
| s.name as name, |
| CONCAT( s.code,'-',s.name) AS subejctDisplayName, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| s.id as subjectId, |
| aa.properties_value->>'$.assessmentDate' as examDate |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_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 cm_academic_paper ap ON |
| aps.cm_academic_paper_id = ap.id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| WHERE |
| eerb.ec_exam_registration_id='$searchRequest->examRegistrationId'" .$whereQuery. " ORDER BY s.code ASC "; |
| $subjects = $this->executeQueryForList($query); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjects; |
| } |
| |
| |
| |
| |
| |
| public function getAllExamRegistrationSubjectDetails($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try{ |
| $whereQuery = null; |
| $orderBy = " ORDER BY eers.created_date ASC "; |
| if(!empty($searchRequest->examRegistrationId)) { |
| $examRegIdStr = is_array($searchRequest->examRegistrationId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'"; |
| $whereQuery .= " AND eerb.ec_exam_registration_id IN ($examRegIdStr)"; |
| } |
| $query = "SELECT |
| DISTINCT eers.id, |
| eers.am_assessment_id, |
| eerb.groups_id, |
| eerb.ec_exam_registration_id, |
| eers.ec_exam_registration_batch_id, |
| eers.cm_academic_paper_subjects_id, |
| s.code as code, |
| s.name as name, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| eers.revaluation_properties , |
| eers.valuation_details , |
| eers.fees_properties , |
| eers.properties |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_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 cm_academic_paper ap ON |
| aps.cm_academic_paper_id = ap.id |
| WHERE 1=1 "; |
| $subjects = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_EXAM_REG_SUBJECT_DETAILS] ); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjects; |
| } |
| |
| |
| |
| |
| |
| public function getAllRevaluationTypeDetails($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try{ |
| $revaluationTypes = []; |
| $request = new \stdClass; |
| $request->examRegistrationId = $searchRequest->examRegistrationId; |
| $assignedSubjects = $this->getAllExamRegistrationSubjectDetails($request); |
| foreach($assignedSubjects as $subjects){ |
| if(!empty($subjects->revaluationProperties)){ |
| foreach($subjects->revaluationProperties as $revaluation){ |
| $revaluationTypes[$revaluation->name]->id = $revaluation->name; |
| $revaluationTypes[$revaluation->name]->name = $revaluation->name; |
| $revaluationTypes[$revaluation->name]->order = $revaluation->order; |
| $revaluationTypes[$revaluation->name]->markEntryNeeded = $revaluation->markEntryNeeded; |
| $revaluationTypes[$revaluation->name]->markEntryType = $revaluation->markEntryType; |
| } |
| } |
| } |
| $revaluationTypes = array_values($revaluationTypes); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $revaluationTypes; |
| } |
| |
| |
| |
| |
| |
| public function getAllValuationDateDetails($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try{ |
| $subjectWithDateDetails = []; |
| $request = new \stdClass; |
| $request->examRegistrationId = $searchRequest->examRegistrationId; |
| $request->revaluationType = $searchRequest->revaluationType; |
| $assignedSubjects = $this->getAllExamRegistrationSubjectDetails($request); |
| foreach($assignedSubjects as $subjects){ |
| if(!empty($subjects->revaluationProperties)){ |
| foreach($subjects->revaluationProperties as $revaluation){ |
| if($revaluation->name == $request->revaluationType){ |
| $subjectWithDateDetails[$subjects->paperSubjectId]->id = $subjects->id; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->examRegistrationSubjectId = $subjects->id; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->paperSubjectId = $subjects->paperSubjectId; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->name = $subjects->subjectName; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->code = $subjects->subjectCode; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->valuationDetails = $subjects->valuationDetails; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->isSelected = false; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->startDate = null; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->endDate = null; |
| if(! empty($subjects->valuationDetails)){ |
| foreach($subjects->valuationDetails->valuationDates as $valuatonDate){ |
| if($valuatonDate->count == $searchRequest->valuationCount && $valuatonDate->revaluationType == $searchRequest->revaluationType){ |
| $subjectWithDateDetails[$subjects->paperSubjectId]->startDate = $valuatonDate->startDate; |
| $subjectWithDateDetails[$subjects->paperSubjectId]->endDate = $valuatonDate->endDate; |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| $subjectWithDateDetails = array_values($subjectWithDateDetails); |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectWithDateDetails; |
| } |
| |
| |
| |
| |
| |
| public function updateValuationDatesToExamRegSubjects($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try{ |
| $examRegSubjects = $searchRequest->examRegSubjects; |
| foreach( $examRegSubjects as $examRegSub){ |
| if(empty($examRegSub->examRegistrationSubjectId)){ |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS_EXAM_REGISTRATION_FEE,"Exam Registration Subject is invalid!"); |
| } |
| else{ |
| $updatedBy = $GLOBALS['userId']; |
| $examRegSub->valuationDetails->listStaffs = []; |
| if(!empty($examRegSub->valuationDetails->valuationStaffs)){ |
| foreach($examRegistrationSubject->valuationDetails->valuationStaffs as $valuationStaff){ |
| $valuationStaff->listStaffs = []; |
| } |
| } |
| $valuationDetails = json_encode($examRegSub->valuationDetails); |
| $query = "UPDATE ec_exam_registration_subject |
| SET |
| valuation_details = '$valuationDetails', |
| updated_by = '$updatedBy' |
| WHERE |
| id = '$examRegSub->examRegistrationSubjectId'"; |
| $this->executeQuery($query); |
| } |
| $this->executeQuery($query); |
| } |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| |
| } |
| |
| |
| |
| |
| |
| |
| public function updateRevaluationDetailsToExamRegistrationSubjects(Array $examRegistrationSubjects) { |
| $examRegistrationSubjects = $this->realEscapeArray($examRegistrationSubjects); |
| foreach ($examRegistrationSubjects as $examRegistrationSubject) { |
| $examRegistrationSubject->createdBy = $GLOBALS['userId'] ?? $examRegistrationSubject->createdBy; |
| $examRegistrationSubject->updatedBy = $GLOBALS['userId'] ?? $examRegistrationSubject->updatedBy; |
| $revaluationProperties = !empty($examRegistrationSubject->revaluationProperties) ? "'".json_encode($examRegistrationSubject->revaluationProperties)."'" : "NULL"; |
| if($examRegistrationSubject->id){ |
| try { |
| $query = "UPDATE ec_exam_registration_subject |
| SET |
| revaluation_properties = $revaluationProperties, |
| updated_by = '$examRegistrationSubject->updatedBy' |
| WHERE |
| id = '$examRegistrationSubject->id'"; |
| |
| $this->executeQuery($query); |
| } catch (\Exception $e) { |
| if($e->getCode() !== ExamControllerException::EMPTY_PARAMETERS_EXAM_REGISTRATION_FEE) { |
| throw new ExamControllerException($e->getCode(),"Failed to Assign Exam Registration Subject fee! Please try again"); |
| } else if ($e->getCode() === ExamControllerException::DUPLICATE_ENTRY) { |
| throw new ExamControllerException (ExamControllerException::DUPLICATE_ENTRY_EXAM_REGISTRATION,"Cannot Assign Exam Registration Subject fees.This Fees is already assigned!"); |
| } else { |
| throw new ExamControllerException ($e->getCode(),$e->getMessage()); |
| } |
| } |
| } |
| } |
| return $examRegistrationSubjects; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| public function getAllAssessmentDetails($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try{ |
| $whereQuery = null; |
| $orderBy = " ORDER BY s.code ASC "; |
| $whereQuery = ""; |
| if(!empty($searchRequest->courseTypeId)) { |
| $courseTypeIdString = is_array($searchRequest->courseTypeId) ? "'" . implode("','",$searchRequest->courseTypeId) . "'" : "'".$searchRequest->courseTypeId."'"; |
| $whereQuery .= " AND p.course_type_id IN ( $courseTypeIdString )"; |
| } |
| if(!empty($searchRequest->examType)) { |
| $examTypeString = is_array($searchRequest->examType) ? "'" . implode("','",$searchRequest->examType) . "'" : "'".$searchRequest->examType."'"; |
| $whereQuery .= " AND eer.type IN ( $examTypeString )"; |
| } |
| if(!empty($searchRequest->examRegistrationId)) { |
| $examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'"; |
| $whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; |
| } |
| if(!empty($searchRequest->examDate)) { |
| $examDateString = is_array($searchRequest->examDate) ? "'" . implode("','",$searchRequest->examDate) . "'" : "'".$searchRequest->examDate."'"; |
| $whereQuery .= " AND aa.properties_value ->>'$.assessmentDate' IN ( $examDateString )"; |
| } |
| if(!empty($searchRequest->groupId)) { |
| $groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; |
| $whereQuery .= " AND g.id IN ( $groupIdString )"; |
| } |
| if(!empty($searchRequest->academicPaperSubjectId)) { |
| $academicPaperSubjectIdString = is_array($searchRequest->academicPaperSubjectId) ? "'" . implode("','",$searchRequest->academicPaperSubjectId) . "'" : "'".$searchRequest->academicPaperSubjectId."'"; |
| $whereQuery .= " AND aps.id IN ( $academicPaperSubjectIdString )"; |
| } |
| $query = "SELECT |
| DISTINCT eers.am_assessment_id as id, |
| eers.am_assessment_id as assessmentId, |
| aps.id as academicPaperSubjectId, |
| g.id as groupId, |
| g.name as groupName, |
| eer.id as examRegistrationId, |
| eer.name as examRegistrationName, |
| 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, |
| act.id as academicTermId, |
| act.name as academicTermName, |
| dept.deptID, |
| dept.deptName, |
| deg.id as degreeId, |
| deg.name as degreeName, |
| 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 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 = eer.id |
| WHERE 1=1 "; |
| $assessments = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_ASSESSMENT_DETAILS] ); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $assessments; |
| } |
| |
| |
| |
| |
| |
| |
| public function getAllDistinctSubjectsByExamRegistration($searchRequest) |
| { |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try |
| { |
| $uniqueSubjects = []; |
| $assignedSubjects = $this->searchExamRegistrationSubjects($searchRequest); |
| foreach($assignedSubjects as $subject){ |
| $uniqueSubjects[$subject->code]->id = $subject->id; |
| $uniqueSubjects[$subject->code]->code = $subject->code; |
| $uniqueSubjects[$subject->code]->subjectName = $subject->subjectName; |
| $uniqueSubjects[$subject->code]->subejctDisplayName = $subject->subejctDisplayName; |
| $uniqueSubjects[$subject->code]->isTheory = $subject->isTheory; |
| $uniqueSubjects[$subject->code]->paperSubjectId[$subject->id] = $subject->id; |
| $uniqueSubjects[$subject->code]->subjectId = $subject->subjectId; |
| $uniqueSubjects[$subject->code]->examDate = $subject->examDate; |
| } |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return array_values($uniqueSubjects); |
| } |
| |
| |
| |
| |
| |
| |
| public function getAssignedDistinctSubjectByBatch($searchRequest) |
| { |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try |
| { |
| $uniqueSubjects = []; |
| $assignedSubjects = ExamRegistrationBatchService::getInstance()->getAssignedSubjectByBatchOrExamReg($searchRequest); |
| foreach($assignedSubjects as $subject){ |
| $uniqueSubjects[$subject->code]->id = $subject->id; |
| $uniqueSubjects[$subject->code]->code = $subject->code; |
| $uniqueSubjects[$subject->code]->name = $subject->name; |
| $uniqueSubjects[$subject->code]->isTheory = $subject->isTheory; |
| $uniqueSubjects[$subject->code]->groupId = $subject->groupId; |
| $uniqueSubjects[$subject->code]->groupName = $subject->groupName; |
| $uniqueSubjects[$subject->code]->fm_head_id = $subject->fm_head_id; |
| $uniqueSubjects[$subject->code]->subjectId = $subject->subjectId; |
| $uniqueSubjects[$subject->code]->paperSubjectId[$subject->academicPaperSubjectId] = $subject->academicPaperSubjectId; |
| $uniqueSubjects[$subject->code]->assessmentId[$subject->assessmentId] = $subject->assessmentId; |
| } |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| foreach($uniqueSubjects as $subject){ |
| $subject->paperSubjectId = array_values($subject->paperSubjectId); |
| } |
| return array_values($uniqueSubjects); |
| } |
| |
| |
| |
| |
| |
| |
| public function getAllCurretStaffSubjectsValuationDetailsByExamRevaluationId($request){ |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $currentUerId = $GLOBALS['userId']; |
| $whereQuery = null; |
| if(!empty($request->examRegistrationId)){ |
| $whereQuery .= " AND eer.id = '$request->examRegistrationId' "; |
| } |
| try { |
| $query = "SELECT |
| eers.am_assessment_id as id, |
| eers.am_assessment_id as assessmentId, |
| eers.valuation_details as valuationDetails |
| FROM ec_exam_registration_batch eerb |
| INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration eerp ON |
| eerp.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eerp.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eerp.id AND |
| eerbParent.groups_id = eerb.groups_id |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerbParent.id |
| WHERE |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.reValuationStaffs'),JSON_OBJECT('addiitonalExamniners', '$currentUerId')) $whereQuery OR |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.reValuationStaffs'),JSON_OBJECT('chiefExaminers', '$currentUerId')) $whereQuery"; |
| $subjectDetails = $this->executeQueryForList($query); |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getSubjectForCurrentStaffsRevaluation($request){ |
| $request = $this->realEscapeObject($request); |
| $whereQuery = null; |
| if(!empty($request->academicPaperSubjectIds)) { |
| $academicPaperSubjectIdsString = is_array($request->academicPaperSubjectIds) ? "'" . implode("','",$request->academicPaperSubjectIds) . "'" : "'".$request->academicPaperSubjectIds."'"; |
| $whereQuery .= " AND aps.id IN ( $academicPaperSubjectIdsString )"; |
| } |
| $query = ""; |
| $currentUerId = $GLOBALS['userId']; |
| try |
| { |
| $query = "SELECT |
| DISTINCT(aps.id) as id, |
| aps.id as academicPaperSubjectId, |
| s.id as subjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| oe.id as onlineExamId, |
| eers.am_assessment_id as assessmentId, |
| oe.settings ->> '$.isValidated' AS isValidated, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| eers.valuation_details as valuationDetails, |
| eerb.ec_exam_registration_id as examRegistrationId, |
| eerb.properties ->> '$.valuationRule' as valuationRule, |
| eqc.qpCode |
| FROM ec_exam_registration_batch eerb |
| INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration eerp ON |
| eerp.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eerp.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eerp.id AND |
| eerbParent.groups_id = eerb.groups_id |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerbParent.id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = eers.am_assessment_id AND oe.is_deleted = 0 |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| LEFT JOIN examQpCodes eqc ON |
| eqc.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND eqc.ec_exam_registration_id = eerb.ec_exam_registration_id |
| WHERE |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.reValuationStaffs'),JSON_OBJECT('addiitonalExamniners', '$currentUerId')) AND |
| eer.id='$request->examRegistrationId' AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.reValuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.reValuationStaffs'),JSON_OBJECT('revaluationType', '$request->currentRevaluationType')) "; |
| $subjects = $this->executeQueryForList($query.$whereQuery); |
| foreach($subjects as $subject){ |
| $subject->valuationDetailsCopy = json_decode($subject->valuationDetails); |
| $subject->reValuationStaffs = $subject->valuationDetailsCopy->reValuationStaffs; |
| $subject->currentValuationObj = reset(array_filter($subject->reValuationStaffs ,function($value)use($request){ |
| return $value->count == $request->currentValuationCount; |
| })); |
| if((in_array( $currentUerId,$subject->currentValuationObj->addiitonalExamniners))|| (in_array( $currentUerId,$subject->currentValuationObj->chiefExaminers))){ |
| $subjectDetails[$subject->id]->id = $subject->id; |
| $subjectDetails[$subject->id]->subjectId = $subject->subjectId; |
| $subjectDetails[$subject->id]->academicPaperSubjectId = $subject->academicPaperSubjectId; |
| $subjectDetails[$subject->id]->subjectCode = $subject->subjectCode; |
| $subjectDetails[$subject->id]->subjectName = $subject->subjectName; |
| $subjectDetails[$subject->id]->assessmentId = $subject->assessmentId; |
| $subjectDetails[$subject->id]->isTheory = $subject->isTheory; |
| $subjectDetails[$subject->id]->externalMaxMark = $subject->externalMaxMark; |
| $subjectDetails[$subject->id]->valuationDetails = $subject->valuationDetails; |
| $subjectDetails[$subject->id]->examRegistrationId = $subject->examRegistrationId; |
| $subjectDetails[$subject->id]->qpCode = $subject->qpCode; |
| $subjectDetails[$subject->id]->onlineExamId = $subject->onlineExamId; |
| $subjectDetails[$subject->id]->isValidatedDetails[] = $subject->isValidated; |
| $subjectDetails[$subject->id]->isValidated = $subject->isValidated; |
| $subjectDetails[$subject->id]->valuationRule = $subject->valuationRule; |
| } |
| } |
| $subjectDetails = array_values($subjectDetails); |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getcurrentExamSubjectForCurrentStaffRevaluation($request) |
| { |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $currentUserId = $GLOBALS['userId']; |
| $whereQuery = null; |
| if(!empty($request->paperSubjectId)) |
| { |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id = '$request->paperSubjectId' "; |
| } |
| if(!empty($request->examRegistrationBatchId)) |
| { |
| $whereQuery .= " AND eers.ec_exam_registration_batch_id = '$request->examRegistrationBatchId' "; |
| } |
| if(!empty($request->examRegistrationId)) |
| { |
| $whereQuery .= " AND eer.id = '$request->examRegistrationId' "; |
| } |
| try |
| { |
| $query = "SELECT DISTINCT |
| eers.am_assessment_id as id, |
| aps.id as academicPaperSubjectId, |
| eers.am_assessment_id as assessmentId, |
| g.id as groupId, |
| g.name as groupName, |
| eer.name as examRegistrationName, |
| eer.type as examRegistrationType, |
| s.code as subjectCode, |
| s.name as subjectName, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| aps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| eers.valuation_details as valuationDetails, |
| aa.properties_value as assessmentProperties, |
| oe.id as onlineExamId |
| FROM ec_exam_registration_batch eerb |
| INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration eerp ON |
| eerp.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eerp.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eerp.id AND |
| eerbParent.groups_id = eerb.groups_id |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerbParent.id |
| INNER JOIN `groups` g ON |
| g.id = eerbParent.groups_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = aa.id AND oe.is_deleted = 0 |
| WHERE |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.reValuationStaffs'),JSON_OBJECT('addiitonalExamniners', '$currentUserId')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.reValuationStaffs'),JSON_OBJECT('count', '$request->currentValuationCount')) AND |
| JSON_CONTAINS(JSON_EXTRACT(eers.valuation_details ,'$.reValuationStaffs'),JSON_OBJECT('revaluationType', '$request->currentRevaluationType')) "; |
| $subjectDetails = $this->executeQueryForObject($query,$whereQuery); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function checkAssessmentPresent($request){ |
| $request = $this->realEscapeObject($request); |
| try { |
| $query = "SELECT id |
| FROM am_assessment |
| WHERE |
| identifying_context->>'$.groupId' = '$request->groupId' AND identifying_context->>'$.academicPaperSubjectId' = '$request->academicPaperSubjectId' AND am_instance_id = '$request->instanceId' AND is_active=1"; |
| $assessmentId = $this->executeQueryForObject($query)->id; |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $assessmentId; |
| } |
| |
| |
| |
| |
| |
| public function checkIfAssessmentAlreadyAssigned($assessmentId){ |
| $assessmentId = $this->realEscapeString($assessmentId); |
| try { |
| $query = "SELECT id |
| FROM ec_exam_registration_subject |
| WHERE |
| am_assessment_id = '$assessmentId' "; |
| $examRegistrationSubjectId = $this->executeQueryForObject($query)->id; |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $examRegistrationSubjectId ? true : false; |
| } |
| |
| |
| |
| |
| |
| |
| public function getBatchAssignedSubjectGroupsByRequest($request){ |
| $request = $this->realEscapeObject($request); |
| $whereQuery = ""; |
| if( $request->groupId ){ |
| $whereQuery .= " AND eerb.groups_id = '$request->groupId'"; |
| } |
| if( $request->examRegistrationId ){ |
| $whereQuery .= " AND eer.id = '$request->examRegistrationId'"; |
| } |
| try { |
| $query = "SELECT |
| sg.name AS subjectGroupName, |
| sg.id AS subjectGroupId, |
| eers.cm_academic_paper_subjects_id as paperSubjectId |
| FROM |
| ec_exam_registration_batch eerb |
| 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_subject_group_paper_subject_mapping esgpsm ON |
| esgpsm.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id |
| AND esgpsm.groups_id = eerb.groups_id |
| INNER JOIN subjectGroups sg ON |
| sg.id = esgpsm.subject_groups_id |
| WHERE |
| eer.trashed IS NULL"; |
| $subjectGroups = $this->executeQueryForList($query.$whereQuery, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_BATCH_SUBJECT_GROUPS]); |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectGroups; |
| } |
| |
| |
| |
| |
| public function updateInstitutionalAverageToExamRegSubjects($subjectList){ |
| $subjectList = $this->realEscapeObject($subjectList); |
| try{ |
| $updatedBy = $GLOBALS['userId']; |
| foreach( $subjectList as $subject){ |
| foreach( $subject->assessments as $assessmentId){ |
| $query = "UPDATE ec_exam_registration_subject |
| SET |
| properties = JSON_SET(COALESCE(`properties`,'{}'), '$.institutionalAverage','$subject->institutionalAvg'), |
| updated_by = '$updatedBy' |
| WHERE |
| am_assessment_id = '$assessmentId'"; |
| $this->executeQuery($query); |
| } |
| } |
| $this->logger->info(Events::EC_UPDATE_EXAM_REGISTRATION_SUBJECT_PROPERTIES,[ |
| "staff" => new Staff(["id" => $updatedBy]), |
| "request" => $subjectList, |
| "status" => StatusConstants::SUCCESS |
| ]); |
| } |
| catch (\Exception $e){ |
| $this->logger->error(Events::EC_UPDATE_EXAM_REGISTRATION_SUBJECT_PROPERTIES, [ |
| "staff" => new Staff(["id" => $updatedBy]), |
| "request" => $subjectList, |
| "errorCode" => $e->getCode(), |
| "errorMessage" => $e->getMessage(), |
| "status" => StatusConstants::FAILED |
| ]); |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| |
| } |
| |
| |
| |
| |
| |
| |
| public function getAssessmentExaminerWithPacket($request){ |
| $request = $this->realEscapeObject($request); |
| |
| $whereQuery = ""; |
| $limitQuery = ""; |
| $resultData = []; |
| $joinQuery = ""; |
| $request->assessmentId = is_array($request->assessmentId) ? $request->assessmentId : stripslashes($request->assessmentId); |
| if(!empty($request->assessmentId)) { |
| $assessmentIdString = is_array($request->assessmentId) ? "'" . implode("','",$request->assessmentId) . "'" : "'".$request->assessmentId."'"; |
| $whereQuery .= " AND eers.am_assessment_id IN ( $assessmentIdString )"; |
| } |
| if(!empty($request->groupId)) { |
| $whereQuery .= " AND g.id = '$request->groupId'"; |
| } |
| if(!empty($request->courseTypeId)) { |
| $whereQuery .= " AND p.course_type_id = '$request->courseTypeId'"; |
| } |
| |
| if(!empty($request->academicTermId)) { |
| $whereQuery .= " AND CAST(eerb.properties ->> '$.academicTermId'AS CHAR) = '$request->academicTermId'"; |
| } |
| |
| if(!empty($request->examRegistrationId)) { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId'"; |
| } |
| if($request->examType == ExamRegistrationTypeConstants::REVALUATION){ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration eerp ON |
| eerp.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eerp.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eerp.id AND |
| eerbParent.groups_id = eerb.groups_id |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerbParent.id "; |
| } |
| else{ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerb.id "; |
| } |
| |
| $query = "SELECT |
| eers.id, |
| eers.am_assessment_id, |
| eerb.groups_id, |
| eerb.ec_exam_registration_id, |
| eers.ec_exam_registration_batch_id, |
| eers.cm_academic_paper_subjects_id, |
| oe.id AS onlineExamId, |
| IF( |
| eers.valuation_details IS NULL , |
| JSON_SET(JSON_OBJECT(), '$.staffIds', '', '$.departmentIds', '','$.valuationDates', ''), |
| eers.valuation_details |
| ) AS valuation_details, |
| aa.name AS assessmentName, |
| g.name AS groupName, |
| s.name AS subjectName, |
| s.code AS subjectCode, |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, |
| caps.properties ->> '$.syllabusName' AS syllabusName, |
| caps.properties->>'$.subjectPriority' AS subjectPriority, |
| g.properties->>'$.description' AS groupDescription, |
| act.id as academicTermId, |
| act.name as academicTermName, |
| cclo.name as subjectSlot |
| FROM |
| ec_exam_registration_batch eerb |
| $joinQuery |
| INNER JOIN academic_term act ON |
| act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = aa.id AND oe.is_deleted = 0 |
| INNER JOIN cm_academic_paper_subjects caps ON |
| caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN cm_academic_paper ap ON |
| ap.id = caps.cm_academic_paper_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = caps.ams_subject_id |
| LEFT JOIN cm_common_list_object cclo ON |
| ap.slot_id = cclo.id AND cclo.type = 'SLOT' |
| WHERE |
| g.trashed IS NULL"; |
| |
| |
| try { |
| $assementExaminers = $this->executeQueryForList($query.$whereQuery.$limitQuery, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_ASSESSMENT_EXAMINER]); |
| |
| } catch (\Exception $e) { |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION_FEE,"Cannot fetch Exam Registration Batch details! Please try again."); |
| } |
| $staffSideMarkEntryUItype = CommonService::getInstance()->getSettings(SettingsConstents::EXAM_VALUATION, SettingsConstents::STAFF_SIDE_MARK_ENTRY_UI_FORMAT); |
| $searchRuleRequest = new SearchRuleRequest; |
| $searchRuleRequest->name = "EXAM_VALUATION_PROCEDURE_RULE"; |
| $examValuationProcedureRule = reset(RuleService::getInstance()->searchRule($searchRuleRequest))->rule; |
| $isSortByListAllFaculties = $examValuationProcedureRule->isSortByListAllFaculties ? true : false; |
| $requestForStaff = new \stdClass; |
| $requestForStaff->isResigned = 0; |
| $allStaffs = StaffService::getInstance()->getStaffListByRequest($isResigned); |
| foreach ($assementExaminers as $assementExaminer) { |
| $assementExaminer->valuationDetails->staffIds = empty($assementExaminer->valuationDetails->staffIds) ? [] : $assementExaminer->valuationDetails->staffIds; |
| $assementExaminer->valuationDetails->valuationStaffs = empty($assementExaminer->valuationDetails->valuationStaffs) ? [] : $assementExaminer->valuationDetails->valuationStaffs; |
| $assementExaminer->valuationDetails->valuatedStaffs = empty($assementExaminer->valuationDetails->valuatedStaffs) ? [] : $assementExaminer->valuationDetails->valuatedStaffs; |
| |
| $assementExaminer->valuationDetails->reValuationStaffs = empty($assementExaminer->valuationDetails->reValuationStaffs) ? [] : $assementExaminer->valuationDetails->reValuationStaffs; |
| if (!empty($assementExaminer->valuationDetails->valuationStaffs)) { |
| if(!empty($request->packetNo) && !empty($request->packetNo)){ |
| $assementExaminer->valuationDetails->valuationStaffs = array_filter($assementExaminer->valuationDetails->valuationStaffs ,function($valuationStaff)use($request){ |
| return $valuationStaff->packetNo == $request->packetNo && $valuationStaff->count == $request->valuationCount; |
| }); |
| } |
| foreach ($assementExaminer->valuationDetails->valuationStaffs as $valuationStaff) { |
| $valuatedStaffs = array_filter($assementExaminer->valuationDetails->valuatedStaffs ,function($valuatedStaffs)use($valuationStaff){ |
| return $valuatedStaffs->packetNo == $valuationStaff->packetNo && $valuatedStaffs->count == $valuationStaff->count; |
| }); |
| $cheifValuatedStaffs = array_filter($assementExaminer->valuationDetails->valuatedStaffs ,function($valuatedStaffs)use($valuationStaff){ |
| return $valuatedStaffs->packetNo == $valuationStaff->packetNo && $valuatedStaffs->count == $valuationStaff->count && in_array( $valuatedStaffs->staffId,$valuationStaff->chiefExaminers); |
| }); |
| $addiitonalValuatedStaffs = array_filter($assementExaminer->valuationDetails->valuatedStaffs ,function($valuatedStaffs)use($valuationStaff){ |
| return $valuatedStaffs->packetNo == $valuationStaff->packetNo && $valuatedStaffs->count == $valuationStaff->count && in_array( $valuatedStaffs->staffId,$valuationStaff->addiitonalExamniners); |
| }); |
| $valuationStaff->isDisableEditAdditionalStaff = empty($addiitonalValuatedStaffs) ? 0 : 1; |
| $valuationStaff->isDisableEditCheifValuatedStaffs = empty($cheifValuatedStaffs) ? 0 : 1; |
| $valuationStaff->isDisableEdit = empty($valuatedStaffs) ? 0 : 1; |
| $assementExaminer->assignedStaffIds = array_merge($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->addiitonalExamniners); |
| $assementExaminer->assignedStaffIds = array_merge($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->chiefExaminers); |
| $valuationStaff->staffs = []; |
| $valuationStaff->addiitonalExamninersNames = empty($valuationStaff->addiitonalExamniners) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| $valuationStaff->chiefExamninersNames = empty($valuationStaff->chiefExaminers) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->chiefExaminers); |
| $valuationStaff->addiitonalExamninersName = implode(', ', array_column($valuationStaff->addiitonalExamninersNames, 'name')); |
| $valuationStaff->chiefExaminersName = implode(', ', array_column($valuationStaff->chiefExamninersNames, 'name')); |
| if($valuationStaff->count == '1' && !$request->listAllFaculties){ |
| $requestForStaff = new \stdClass; |
| $requestForStaff->academicPaperSubjectId = $assementExaminer->paperSubjectId; |
| $valuationStaff->listStaffs = $this->getAssignedFacultiesByAcademicPaper($requestForStaff,'STAFF'); |
| } |
| else{ |
| $valuationStaff->listStaffs = $allStaffs; |
| } |
| } |
| foreach ($assementExaminer->valuationDetails->valuationStaffs as $valuationStaff) { |
| $valuationStaff->removedAdditioanlStaffIds = array_diff($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->addiitonalExamniners); |
| $valuationStaff->removedCheifStaffIds = array_diff($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->chiefExaminers); |
| $valuationStaff->removedStaffIds = array_merge($valuationStaff->removedCheifStaffIds,$valuationStaff->removedAdditioanlStaffIds); |
| foreach($valuationStaff->allStaffs as $staff){ |
| if(!in_array($staff->staffId,$valuationStaff->removedStaffIds)){ |
| $valuationStaff->staffs[] = $staff; |
| } |
| } |
| $valuationStaff->allStaffs = []; |
| } |
| } |
| else { |
| $assementExaminer->staffs = []; |
| } |
| if (!empty($assementExaminer->valuationDetails->reValuationStaffs)) { |
| if(!empty($request->packetNo) && !empty($request->packetNo)){ |
| $assementExaminer->valuationDetails->reValuationStaffs = array_filter($assementExaminer->valuationDetails->reValuationStaffs ,function($valuationStaff)use($request){ |
| return $valuationStaff->packetNo == $request->packetNo && $valuationStaff->count == $request->valuationCount; |
| }); |
| } |
| foreach ($assementExaminer->valuationDetails->reValuationStaffs as $valuationStaff) { |
| $valuatedStaffs = array_filter($assementExaminer->valuationDetails->reValuationStaffs ,function($valuatedStaffs)use($valuationStaff){ |
| return $valuatedStaffs->packetNo == $valuationStaff->packetNo && $valuatedStaffs->count == $valuationStaff->count; |
| }); |
| $confirmedCheifValuatedStaffs = array_filter($assementExaminer->valuationDetails->reValuationStaffs ,function($valuatedStaffs)use($valuationStaff){ |
| return $valuatedStaffs->packetNo == $valuationStaff->packetNo && $valuatedStaffs->count == $valuationStaff->count && in_array( $valuatedStaffs->staffId,$valuationStaff->chiefExaminers); |
| }); |
| $confirmedAddiitonalValuatedStaffs = array_filter($assementExaminer->valuationDetails->reValuationStaffs ,function($valuatedStaffs)use($valuationStaff){ |
| return $valuatedStaffs->packetNo == $valuationStaff->packetNo && $valuatedStaffs->count == $valuationStaff->count && in_array( $valuatedStaffs->staffId,$valuationStaff->addiitonalExamniners); |
| }); |
| $valuationStaff->isDisableEditAdditionalStaffRev = empty($confirmedAddiitonalValuatedStaffs) ? 0 : 1; |
| $valuationStaff->isDisableEditCheifValuatedStaffRev = empty($confirmedCheifValuatedStaffs) ? 0 : 1; |
| $valuationStaff->isDisableEditRev = empty($valuatedStaffs) ? 0 : 1; |
| $assementExaminer->assignedStaffIds = array_merge($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->addiitonalExamniners); |
| $assementExaminer->assignedStaffIds = array_merge($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->chiefExaminers); |
| $valuationStaff->staffs = []; |
| $valuationStaff->addiitonalExamninersNames = empty($valuationStaff->addiitonalExamniners) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| $valuationStaff->chiefExamninersNames = empty($valuationStaff->chiefExaminers) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->chiefExaminers); |
| $valuationStaff->addiitonalExamninersName = implode(', ', array_column($valuationStaff->addiitonalExamninersNames, 'name')); |
| $valuationStaff->chiefExaminersName = implode(', ', array_column($valuationStaff->chiefExamninersNames, 'name')); |
| if($valuationStaff->count == '1' && !$request->listAllFaculties){ |
| $requestForStaff = new FilterSubjectClusterRequest(); |
| $requestForStaff->academicPaperSubjectId = $assementExaminer->paperSubjectId; |
| $valuationStaff->listStaffs = SubjectService::getInstance()->getAssignedSubjectsForFilter($requestForStaff,'STAFF'); |
| } |
| else{ |
| $valuationStaff->listStaffs = $allStaffs; |
| } |
| } |
| foreach ($assementExaminer->valuationDetails->reValuationStaffs as $valuationStaff) { |
| $valuationStaff->removedAdditioanlStaffIds = array_diff($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->addiitonalExamniners); |
| $valuationStaff->removedCheifStaffIds = array_diff($assementExaminer->assignedStaffIds ? $assementExaminer->assignedStaffIds : [] ,$valuationStaff->chiefExaminers); |
| $valuationStaff->removedStaffIds = array_merge($valuationStaff->removedCheifStaffIds,$valuationStaff->removedAdditioanlStaffIds); |
| foreach($valuationStaff->allStaffs as $staff){ |
| if(!in_array($staff->staffId,$valuationStaff->removedStaffIds)){ |
| $valuationStaff->staffs[] = $staff; |
| } |
| } |
| $valuationStaff->allStaffs = []; |
| } |
| } |
| else { |
| $assementExaminer->staffs = []; |
| } |
| |
| $assementExaminer->valuationDetails->listStaffs = $allStaffs; |
| |
| $chiefExaminerIds = call_user_func_array('array_merge',array_column($assementExaminer->valuationDetails->valuationStaffs,"chiefExaminers")); |
| $additionalExaminerIds = call_user_func_array('array_merge',array_column($assementExaminer->valuationDetails->valuationStaffs,"additionalExaminer")); |
| $examinerStaffIds = array_unique(array_merge($chiefExaminerIds,$additionalExaminerIds)); |
| $examinerStaffs = empty($examinerStaffIds) ? [] : StaffService::getInstance()->getStaffByIds($examinerStaffIds); |
| switch ($request->listBasedOn) { |
| |
| case 'SUBJECT_WISE': |
| $resultData[$assementExaminer->subjectCode]->code = $assementExaminer->subjectCode; |
| $resultData[$assementExaminer->subjectCode]->ids[] = $assementExaminer->id; |
| $resultData[$assementExaminer->subjectCode]->name = $assementExaminer->subjectName; |
| $resultData[$assementExaminer->subjectCode]->valuationDetails = $assementExaminer->valuationDetails ; |
| $resultData[$assementExaminer->subjectCode]->academicTermName = $assementExaminer->academicTermName; |
| $resultData[$assementExaminer->subjectCode]->assessmentDate = $assementExaminer->assessmentDate ? date("d-m-Y", strtotime($assementExaminer->assessmentDate)) : ''; |
| $resultData[$assementExaminer->subjectCode]->syllabusCode = $assementExaminer->syllabusCode; |
| $resultData[$assementExaminer->subjectCode]->subjectPriority = $assementExaminer->subjectPriority; |
| $resultData[$assementExaminer->subjectCode]->slot = "Slot " .$assementExaminer->subjectSlot; |
| $resultData[$assementExaminer->subjectCode]->valuationDetails = $assementExaminer->valuationDetails; |
| $resultData[$assementExaminer->subjectCode]->exams[] = $assementExaminer; |
| $resultData[$assementExaminer->subjectCode]->staffs[] = $examinerStaffs; |
| $resultData[$assementExaminer->subjectCode]->assessmentId = $assementExaminer->assessmentId; |
| $resultData[$assementExaminer->subjectCode]->examRegistrationId = $assementExaminer->examRegistrationId; |
| break; |
| |
| default: |
| $resultData[$assementExaminer->subjectCode]->code = $assementExaminer->subjectCode; |
| $resultData[$assementExaminer->subjectCode]->name = $assementExaminer->subjectName; |
| $resultData[$assementExaminer->subjectCode]->ids[] = $assementExaminer->id; |
| $resultData[$assementExaminer->subjectCode]->valuationDetails = $assementExaminer->valuationDetails ; |
| $resultData[$assementExaminer->subjectCode]->academicTermName = $assementExaminer->academicTermName; |
| $resultData[$assementExaminer->subjectCode]->assessmentDate = $assementExaminer->assessmentDate ? date("d-m-Y", strtotime($assementExaminer->assessmentDate)) : ''; |
| $resultData[$assementExaminer->subjectCode]->syllabusCode = $assementExaminer->syllabusCode; |
| $resultData[$assementExaminer->subjectCode]->subjectPriority = $assementExaminer->subjectPriority; |
| $resultData[$assementExaminer->subjectCode]->slot = "Slot " .$assementExaminer->subjectSlot; |
| $resultData[$assementExaminer->subjectCode]->valuationDetails = $assementExaminer->valuationDetails; |
| $resultData[$assementExaminer->subjectCode]->exams[] = $assementExaminer; |
| $resultData[$assementExaminer->subjectCode]->staffs[] = $examinerStaffs; |
| $resultData[$assementExaminer->subjectCode]->assessmentId = $assementExaminer->assessmentId; |
| $resultData[$assementExaminer->subjectCode]->examRegistrationId = $assementExaminer->examRegistrationId; |
| break; |
| } |
| } |
| ksort($resultData); |
| return array_values($resultData); |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getAssignedExamRegistrationSubjectsInBatch($searchRequest) { |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try{ |
| $subjectOrderBy = CommonService::getInstance()->getSettings(SettingsConstants::EXAM_CONTROLLER, SettingsConstants::SUBJECT_ORDER_TAKEN_BY); |
| if($subjectOrderBy == "ORDER"){ |
| $orderBy = " ORDER BY CAST(aps.properties ->> '$.orderNo' AS UNSIGNED) ASC"; |
| } |
| else{ |
| $orderBy = " ORDER BY CAST(aps.properties ->> '$.priority' AS UNSIGNED) DESC"; |
| } |
| |
| $whereQuery = ""; |
| if(!empty($searchRequest->courseTypeId)) { |
| $courseTypeIdString = is_array($searchRequest->courseTypeId) ? "'" . implode("','",$searchRequest->courseTypeId) . "'" : "'".$searchRequest->courseTypeId."'"; |
| $whereQuery .= " AND g.properties ->> '$.courseTypeId' IN ( $courseTypeIdString )"; |
| } |
| if(!empty($searchRequest->groupId)) { |
| $groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; |
| $whereQuery .= " AND g.id IN ( $groupIdString )"; |
| } |
| if(!empty($searchRequest->startYear)) { |
| $startYearStrng = is_array($searchRequest->startYear) ? "'" . implode("','",$searchRequest->startYear) . "'" : "'".$searchRequest->startYear."'"; |
| $whereQuery .= " AND g.properties ->> '$.startYear' IN ( $startYearStrng )"; |
| } |
| if(!empty($searchRequest->academicTermId)) { |
| $academicTermIdString = is_array($searchRequest->academicTermId) ? "'" . implode("','",$searchRequest->academicTermId) . "'" : "'".$searchRequest->academicTermId."'"; |
| $whereQuery .= " AND CAST(eerb.properties ->> '$.academicTermId'AS CHAR) IN ( $academicTermIdString )"; |
| } |
| if(!empty($searchRequest->examRegistrationId)) { |
| $examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'"; |
| $whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; |
| } |
| 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 d.deptID IN ( $courseDepartmentIdString )"; |
| } |
| $query = "SELECT DISTINCT |
| aps.id AS id, |
| aps.id AS academicPaperSubjectId, |
| ap.name as academicPaperName, |
| sub.id AS subjectId, |
| sub.code AS subjectCode, |
| sub.name AS subjectName, |
| sub.name AS name, |
| eerb.properties ->> '$.academicTermId' AS academicTermId, |
| g.id AS groupId, |
| g.name AS groupName, |
| aps.properties->>'$.externalMaxMark' as externalMaxMark, |
| aps.properties ->> '$.isInternal' as isInternal, |
| aps.properties ->> '$.isExternal' as isExternal, |
| aps.properties ->> '$.internalMaxMark' as internalMaxMark, |
| aps.properties->>'$.classType' as subjectClassType, |
| aps.properties->>'$.credit' as subjectCredit, |
| aps.properties->>'$.classType' as subjectPropertyType, |
| cst.name as courseType, |
| d.deptName |
| FROM |
| ec_exam_registration_subject eers |
| 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 |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN cm_academic_paper ap ON |
| aps.cm_academic_paper_id = ap.id |
| INNER JOIN v4_ams_subject sub ON |
| sub.id = aps.ams_subject_id |
| INNER JOIN department d ON d.deptID = sub.department_id |
| LEFT JOIN cm_subject_types cst ON cst.id = aps.subject_type_id |
| WHERE |
| 1 = 1"; |
| $subjectDetails = $this->executeQueryForList($query.$whereQuery.$orderBy); |
| |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getAllSubjectDetailsByRegistration($examRegistrationId) |
| { |
| if(is_array($examRegistrationId) ){ |
| $examRegistrationId = $this->realEscapeArray($examRegistrationId); |
| } |
| else{ |
| $examRegistrationId = $this->realEscapeString($examRegistrationId); |
| } |
| $examRegistrationIdString = is_array($examRegistrationId) ? "'" . implode("','",$examRegistrationId) . "'" : "'".$examRegistrationId."'"; |
| $whereQuery = null; |
| try |
| { |
| $query = "SELECT |
| aps.id as id, |
| aps.id as academicPaperSubjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| s.id as amsSubjectId, |
| eers.am_assessment_id as assessmentId, |
| GROUP_CONCAT(eers.am_assessment_id) as assessmentIds, |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, |
| aa.properties_value ->>'$.startTime' AS assessmentStartTime, |
| aa.properties_value ->>'$.endTime' AS assessmentEndTime, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| eerb.ec_exam_registration_id as examRegistrationId, |
| aps.properties ->> '$.subjectTypeId' as subjectTypeId, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| g.id AS groupId, |
| g.name AS groupName |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| WHERE |
| eerb.ec_exam_registration_id IN ( $examRegistrationIdString ) |
| GROUP BY eerb.groups_id, aps.id ORDER BY aa.properties_value ->>'$.assessmentDate' ASC"; |
| $subjectDetails = $this->executeQueryForList($query.$whereQuery); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| public function getSubjectForCurrentVivaValuationStaffs( $request){ |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $currentUerId = $GLOBALS['userId']; |
| $subjectDetails = []; |
| try { |
| if(!empty($request->academicPaperSubjectId)) { |
| $academicPaperSubjectIdsString = is_array($request->academicPaperSubjectId) ? "'" . implode("','",$request->academicPaperSubjectId) . "'" : "'".$request->academicPaperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdsString )"; |
| } |
| $query = "SELECT |
| DISTINCT(aps.id) as id, |
| aps.id as academicPaperSubjectId, |
| s.id as subjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| oe.id as onlineExamId, |
| eers.am_assessment_id as assessmentId, |
| eers.id as examRegistrationSubjectId, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| eers.valuation_details as valuationDetails, |
| eerb.ec_exam_registration_id as examRegistrationId |
| FROM |
| cluster_groups_relations cgr |
| INNER JOIN cluster_members cm ON |
| cm.cluster_id = cgr.cluster_id |
| INNER JOIN `groups` sg ON |
| sg.id = cgr.groups_id |
| INNER JOIN groups_relations gr ON |
| gr.child_groups_id = sg.id |
| INNER JOIN `groups` g ON |
| g.id = gr.parent_groups_id AND g.type = 'BATCH' |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.cm_academic_paper_subjects_id = sg.paperSubjectId |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id AND eerb.groups_id = g.id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = eers.am_assessment_id AND oe.is_deleted = 0 |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| WHERE |
| cm.staff_id = '$currentUerId' AND |
| eerb.ec_exam_registration_id='$request->examRegistrationId' "; |
| $subjects = $this->executeQueryForList($query.$whereQuery); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjects; |
| } |
| |
| |
| |
| |
| public function updateExamSubjectResolutionRule($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| try{ |
| $updatedBy = $GLOBALS['userId']; |
| $query = "UPDATE ec_exam_registration_subject |
| SET |
| properties = JSON_SET(COALESCE(`properties`,'{}'), '$.resolutionSubjectLimit','$searchRequest->resolutionSubjectLimit'), |
| updated_by = '$updatedBy' |
| WHERE |
| id = '$searchRequest->id'"; |
| $this->executeQuery($query); |
| $this->logger->info(Events::EC_UPDATE_EXAM_REGISTRATION_SUBJECT_PROPERTIES,[ |
| "staff" => new Staff(["id" => $updatedBy]), |
| "request" => $searchRequest, |
| "status" => StatusConstants::SUCCESS |
| ]); |
| } |
| catch (\Exception $e){ |
| $this->logger->error(Events::EC_UPDATE_EXAM_REGISTRATION_SUBJECT_PROPERTIES, [ |
| "staff" => new Staff(["id" => $updatedBy]), |
| "request" => $searchRequest, |
| "errorCode" => $e->getCode(), |
| "errorMessage" => $e->getMessage(), |
| "status" => StatusConstants::FAILED |
| ]); |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| |
| } |
| |
| |
| |
| |
| |
| |
| public function getAssignedFacultiesByAcademicPaper( $request){ |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $staffs = []; |
| try { |
| if(!empty($request->academicPaperSubjectId)) { |
| $academicPaperSubjectIdsString = is_array($request->academicPaperSubjectId) ? "'" . implode("','",$request->academicPaperSubjectId) . "'" : "'".$request->academicPaperSubjectId."'"; |
| $whereQuery .= " AND caps.id IN ( $academicPaperSubjectIdsString )"; |
| } |
| $query = "SELECT DISTINCT |
| stf.staffID as id, |
| stf.staffName as name |
| FROM cm_academic_paper_subjects caps |
| INNER JOIN `groups` sg ON sg.paperSubjectId = caps.id |
| INNER JOIN `cluster_groups_relations` cg ON cg.groups_id = sg.id |
| INNER JOIN `cluster_members` cm ON cm.cluster_id = cg.cluster_id |
| INNER JOIN `staffaccounts` stf on stf.staffID = cm.staff_id |
| WHERE 1 = 1 AND isResigned='0'"; |
| $staffs = $this->executeQueryForList($query.$whereQuery); |
| |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $staffs; |
| } |
| |
| |
| |
| |
| |
| |
| public function getSubjectsDetailsForDigitalValuationProcedure($request){ |
| $request = $this->realEscapeObject($request); |
| $assignedSubjects = []; |
| $whereQuery = ""; |
| $limitQuery = ""; |
| $joinQuery = ""; |
| $orderBy = " ORDER BY s.code ASC"; |
| if(!empty($request->assessmentId)) { |
| $whereQuery .= " AND eers.am_assessment_id = '$request->assessmentId'"; |
| } |
| if(!empty($request->academicPaperSubjectId)) { |
| $academicPaperSubjectIdString = is_array($request->academicPaperSubjectId) ? "'" . implode("','",$request->academicPaperSubjectId) . "'" : "'".$request->academicPaperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdString )"; |
| } |
| if(!empty($request->assessmentDate)) { |
| $whereQuery .= " AND aa.properties_value ->>'$.assessmentDate' = '$request->assessmentDate'"; |
| } |
| if(!empty($request->examTime)) { |
| $whereQuery .= " AND CONCAT(TIME_FORMAT(aa.properties_value->>'$.startTime', '%l:%i %p'),' - ',TIME_FORMAT(aa.properties_value->>'$.endTime', '%l:%i %p')) = '$request->examTime'"; |
| } |
| |
| if(!empty($request->groupId)) { |
| $whereQuery .= " AND g.id = '$request->groupId'"; |
| } |
| |
| if(!empty($request->courseTypeId)) { |
| $whereQuery .= " AND p.course_type_id = '$request->courseTypeId'"; |
| } |
| |
| if(!empty($request->academicTermId)) { |
| $whereQuery .= " AND CAST(eerb.properties ->> '$.academicTermId'AS CHAR) = '$request->academicTermId'"; |
| } |
| |
| if(!empty($request->examRegistrationId)) { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId'"; |
| } |
| if($request->examType == ExamRegistrationTypeConstants::REVALUATION){ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration eerp ON |
| eerp.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eerp.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eerp.id AND |
| eerbParent.groups_id = eerb.groups_id |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerbParent.id "; |
| } |
| else{ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerb.id "; |
| } |
| |
| $query = "SELECT |
| eers.id, |
| eers.am_assessment_id, |
| eerb.groups_id, |
| eerb.ec_exam_registration_id, |
| eers.ec_exam_registration_batch_id, |
| eers.cm_academic_paper_subjects_id, |
| eer.name as examRegistrationName, |
| oe.id AS onlineExamId, |
| IF( |
| eers.valuation_details IS NULL , |
| JSON_SET(JSON_OBJECT(), '$.staffIds', '', '$.departmentIds', '','$.valuationDates', ''), |
| eers.valuation_details |
| ) AS valuation_details, |
| aa.name AS assessmentName, |
| g.name AS groupName, |
| s.name AS subjectDesc, |
| s.code AS subjectName, |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, |
| caps.properties ->> '$.syllabusName' AS syllabusName, |
| caps.properties->>'$.subjectPriority' AS subjectPriority, |
| g.properties->>'$.description' AS groupDescription, |
| act.id as academicTermId, |
| act.name as academicTermName, |
| ct.course_Type as courseType |
| FROM |
| ec_exam_registration_batch eerb |
| $joinQuery |
| INNER JOIN academic_term act ON |
| act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) AND act.type = 'SEMESTER' |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN `course_type` ct ON |
| ct.courseTypeID = p.course_type_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.identifying_context ->> '$.assessmentId' = aa.id AND oe.is_deleted = 0 |
| INNER JOIN cm_academic_paper_subjects caps ON |
| caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = caps.ams_subject_id |
| WHERE |
| g.trashed IS NULL"; |
| try { |
| $assementExaminers = $this->executeQueryForList($query.$whereQuery.$limitQuery.$orderBy, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_ASSESSMENT_EXAMINER]); |
| |
| } catch (\Exception $e) { |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION_FEE,"Cannot fetch Exam Registration Batch details! Please try again."); |
| } |
| $assignedSubjects = []; |
| foreach ($assementExaminers as $assementExaminer) { |
| $assementExaminer->valuers = []; |
| $assementExaminer->reviewers = []; |
| $assementExaminer->valuerIds = []; |
| $assementExaminer->reviewerIds = []; |
| $assementExaminer->valuationDetails->staffIds = empty($assementExaminer->valuationDetails->staffIds) ? [] : $assementExaminer->valuationDetails->staffIds; |
| $assementExaminer->valuationDetails->valuationDates = empty($assementExaminer->valuationDetails->valuationDates) ? [] : $assementExaminer->valuationDetails->valuationDates; |
| $assementExaminer->valuationDetails->valuationStaffs = empty($assementExaminer->valuationDetails->valuationStaffs) ? [] : $assementExaminer->valuationDetails->valuationStaffs; |
| $assementExaminer->valuationDetails->reValuationDates = empty($assementExaminer->valuationDetails->reValuationDates) ? [] : $assementExaminer->valuationDetails->reValuationDates; |
| $assementExaminer->valuationDetails->reValuationStaffs = empty($assementExaminer->valuationDetails->reValuationStaffs) ? [] : $assementExaminer->valuationDetails->reValuationStaffs; |
| if (!empty($assementExaminer->valuationDetails->valuationStaffs)) { |
| foreach ($assementExaminer->valuationDetails->valuationStaffs as $valuationStaff) { |
| $assementExaminer->staffIds = []; |
| $valuationStaff->addiitonalExamninersName = empty($valuationStaff->addiitonalExamniners) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| if($valuationStaff->count == '1'){ |
| $assementExaminer->valuers = $valuationStaff->addiitonalExamninersName; |
| $assementExaminer->valuerIds = $valuationStaff->addiitonalExamniners; |
| } |
| else if($valuationStaff->count == '2'){ |
| $assementExaminer->reviewers = $valuationStaff->addiitonalExamninersName; |
| $assementExaminer->reviewerIds = $valuationStaff->addiitonalExamniners; |
| } |
| foreach($valuationStaff->addiitonalExamninersName as $staffName){ |
| $requestForAvailableStudent = new \stdClass; |
| $responseForAvailableStudent = new \stdClass; |
| $requestForAvailableStudent->staffId = $staffName->id; |
| $requestForAvailableStudent->valuationCount = $valuationStaff->count; |
| $requestForAvailableStudent->examRegistrationId = $assementExaminer->examRegistrationId; |
| $requestForAvailableStudent->assessmentId = $assementExaminer->assessmentId; |
| $requestForAvailableStudent->notCheckEmpty = true; |
| $responseForAvailableStudent = ExamValuationService::getInstance()->getAllAvailableStudentDetails($requestForAvailableStudent); |
| $staffName->isStudentAssigned = $responseForAvailableStudent->countOfAssignedStudents > 0 ? true : false; |
| } |
| } |
| } |
| $assignedSubjects[$assementExaminer->subjectCode] = empty($assignedSubjects[$assementExaminer->subjectCode]) ? $assementExaminer : $assignedSubjects[$assementExaminer->subjectCode]; |
| $assignedSubjects[$assementExaminer->subjectCode]->examRegSubIds[] = $assementExaminer->id; |
| $assignedSubjects[$assementExaminer->subjectCode]->paperSubjectIds[$assementExaminer->paperSubjectId] = $assementExaminer->paperSubjectId; |
| } |
| foreach($assignedSubjects as $subject){ |
| $subject->code = $subject->subjectCode ; |
| $subject->name = $subject->subjectName ; |
| $studentCountRequest = new \stdClass; |
| $studentCountRequest->examRegistrationId = $subject->examRegistrationId; |
| $studentCountRequest->paperIdArray = $subject->paperSubjectIds; |
| $subject->paperSubjectIds = array_values($subject->paperSubjectIds); |
| $subject->studentCount = CommonExamService::getInstance()->getStudentCountForPaperSubjects($studentCountRequest); |
| } |
| return array_values($assignedSubjects); |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getSubjectsDateStudentDetailsForDigitalValuationProcedure($request){ |
| $request = $this->realEscapeObject($request); |
| $assignedSubjects = []; |
| $whereQuery = ""; |
| $limitQuery = ""; |
| $joinQuery = ""; |
| $orderBy = " ORDER BY s.code ASC"; |
| if(!empty($request->assessmentId)) { |
| $whereQuery .= " AND eers.am_assessment_id = '$request->assessmentId'"; |
| } |
| if(!empty($request->assessmentDate)) { |
| $whereQuery .= " AND aa.properties_value ->>'$.assessmentDate' = '$request->assessmentDate'"; |
| } |
| if(!empty($request->examTime)) { |
| $whereQuery .= " AND CONCAT(TIME_FORMAT(aa.properties_value->>'$.startTime', '%l:%i %p'),' - ',TIME_FORMAT(aa.properties_value->>'$.endTime', '%l:%i %p')) = '$request->examTime'"; |
| } |
| if(!empty($request->academicPaperSubjectId)) { |
| $academicPaperSubjectIdString = is_array($request->academicPaperSubjectId) ? "'" . implode("','",$request->academicPaperSubjectId) . "'" : "'".$request->academicPaperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdString )"; |
| } |
| |
| if(!empty($request->groupId)) { |
| $whereQuery .= " AND g.id = '$request->groupId'"; |
| } |
| |
| if(!empty($request->courseTypeId)) { |
| $whereQuery .= " AND p.course_type_id = '$request->courseTypeId'"; |
| } |
| |
| if(!empty($request->academicTermId)) { |
| $whereQuery .= " AND CAST(eerb.properties ->> '$.academicTermId'AS CHAR) = '$request->academicTermId'"; |
| } |
| if(!empty($request->examRegistrationId)) { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId'"; |
| } |
| if($request->examType == ExamRegistrationTypeConstants::REVALUATION){ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration eerp ON |
| eerp.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eerp.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eerp.id AND |
| eerbParent.groups_id = eerb.groups_id |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerbParent.id "; |
| } |
| else{ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerb.id "; |
| } |
| $query = "SELECT |
| eers.id, |
| eers.am_assessment_id, |
| eerb.groups_id, |
| eerb.ec_exam_registration_id, |
| eers.ec_exam_registration_batch_id, |
| eers.cm_academic_paper_subjects_id, |
| eer.name as examRegistrationName, |
| oe.id AS onlineExamId, |
| IF( |
| eers.valuation_details IS NULL , |
| JSON_SET(JSON_OBJECT(), '$.staffIds', '', '$.departmentIds', '','$.valuationDates', ''), |
| eers.valuation_details |
| ) AS valuation_details, |
| aa.name AS assessmentName, |
| g.name AS groupName, |
| s.name AS subjectDesc, |
| s.code AS subjectName, |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, |
| caps.properties ->> '$.syllabusName' AS syllabusName, |
| caps.properties->>'$.subjectPriority' AS subjectPriority, |
| g.properties->>'$.description' AS groupDescription, |
| act.id as academicTermId, |
| act.name as academicTermName, |
| ct.course_Type as courseType |
| FROM |
| ec_exam_registration_batch eerb |
| $joinQuery |
| INNER JOIN academic_term act ON |
| act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) AND act.type = 'SEMESTER' |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN `course_type` ct ON |
| ct.courseTypeID = p.course_type_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.identifying_context ->> '$.assessmentId' = aa.id AND oe.is_deleted = 0 |
| INNER JOIN cm_academic_paper_subjects caps ON |
| caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = caps.ams_subject_id |
| WHERE |
| g.trashed IS NULL"; |
| try { |
| $assementExaminers = $this->executeQueryForList($query.$whereQuery.$limitQuery.$orderBy, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_ASSESSMENT_EXAMINER]); |
| |
| } catch (\Exception $e) { |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION_FEE,"Cannot fetch Exam Registration Batch details! Please try again."); |
| } |
| $assignedSubjects = []; |
| $digitalValuationProperties = CommonService::getInstance()->getSettings(SettingsConstents::EXAM_CONTROLLER, SettingsConstents::DIGITAL_VALUATION_PROPERTIES); |
| $digitalValuationProperties = $digitalValuationProperties ? json_decode($digitalValuationProperties) : ""; |
| foreach ($assementExaminers as $assementExaminer) { |
| $assementExaminer->valuers = []; |
| $assementExaminer->reviewers = []; |
| $assementExaminer->valuerIds = []; |
| $assementExaminer->reviewerIds = []; |
| $assementExaminer->valuationDetails->staffIds = empty($assementExaminer->valuationDetails->staffIds) ? [] : $assementExaminer->valuationDetails->staffIds; |
| $assementExaminer->valuationDetails->valuationDates = empty($assementExaminer->valuationDetails->valuationDates) ? [] : $assementExaminer->valuationDetails->valuationDates; |
| $assementExaminer->valuationDetails->valuationStaffs = empty($assementExaminer->valuationDetails->valuationStaffs) ? [] : $assementExaminer->valuationDetails->valuationStaffs; |
| $assementExaminer->valuationDetails->reValuationDates = empty($assementExaminer->valuationDetails->reValuationDates) ? [] : $assementExaminer->valuationDetails->reValuationDates; |
| $assementExaminer->valuationDetails->reValuationStaffs = empty($assementExaminer->valuationDetails->reValuationStaffs) ? [] : $assementExaminer->valuationDetails->reValuationStaffs; |
| if (!empty($assementExaminer->valuationDetails->valuationStaffs)) { |
| foreach ($assementExaminer->valuationDetails->valuationStaffs as $valuationStaff) { |
| if($valuationStaff->count == '1'){ |
| $assementExaminer->addiitonalExamninersNames = empty($valuationStaff->addiitonalExamniners) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| foreach($assementExaminer->addiitonalExamninersNames as $staffName){ |
| $valuationDate = reset(array_filter($assementExaminer->valuationDetails->valuationDates ,function($value)use($valuationStaff,$staffName){ |
| return $value->count == $valuationStaff->count && $value->staffId == $staffName->id; |
| })); |
| if(!empty($valuationDate)){ |
| $staffName->startDate = $valuationDate->startDate; |
| $staffName->endDate = $valuationDate->endDate; |
| $staffName->alreadyUpdated = $valuationDate->startDate ? 1 : 0; |
| $staffName->noOfStudentsAssigned = $valuationDate->noOfStudentsAssigned ? $valuationDate->noOfStudentsAssigned : 0; |
| } |
| else{ |
| $staffName->startDate = ""; |
| $staffName->endDate = ""; |
| $staffName->alreadyUpdated = 0; |
| $staffName->noOfStudentsAssigned = 0; |
| } |
| } |
| } |
| } |
| } |
| if(!empty($assementExaminer->addiitonalExamninersNames)){ |
| $assignedSubjects[$assementExaminer->subjectCode] = empty($assignedSubjects[$assementExaminer->subjectCode]) ? $assementExaminer : $assignedSubjects[$assementExaminer->subjectCode]; |
| $assignedSubjects[$assementExaminer->subjectCode]->examRegSubIds[] = $assementExaminer->id; |
| $assignedSubjects[$assementExaminer->subjectCode]->paperSubjectIds[$assementExaminer->paperSubjectId] = $assementExaminer->paperSubjectId; |
| } |
| } |
| foreach($assignedSubjects as $subject){ |
| $subject->code = $subject->subjectCode ; |
| $subject->name = $subject->subjectName ; |
| $subject->paperSubjectIds = array_values($subject->paperSubjectIds); |
| $studentCountRequest = new \stdClass; |
| $studentCountRequest->examRegistrationId = $subject->examRegistrationId; |
| $studentCountRequest->paperIdArray = $subject->paperSubjectIds; |
| $subject->studentCount = CommonExamService::getInstance()->getStudentCountForPaperSubjects($studentCountRequest); |
| $studentCount = floor($subject->studentCount / count($subject->addiitonalExamninersNames)); |
| $remainingStudentCount = $subject->studentCount - ($studentCount * count($subject->addiitonalExamninersNames)); |
| foreach($subject->addiitonalExamninersNames as $staffName){ |
| if(empty($staffName->noOfStudentsAssigned)){ |
| $staffName->noOfStudentsAssigned = $studentCount + ($remainingStudentCount ? 1:0); |
| $remainingStudentCount = $remainingStudentCount ? $remainingStudentCount - 1 : 0; |
| } |
| $staffName->noOfDays = ceil($staffName->noOfStudentsAssigned / $digitalValuationProperties->noOfValScriptsPerDay) + ($digitalValuationProperties->noOfDaysInBufferForValuer); |
| } |
| } |
| return array_values($assignedSubjects); |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getReviewerDetailsForDigitalValuationProcedure($request){ |
| $request = $this->realEscapeObject($request); |
| $assignedSubjects = []; |
| $whereQuery = ""; |
| $limitQuery = ""; |
| $joinQuery = ""; |
| $orderBy = " ORDER BY s.code ASC"; |
| if(!empty($request->assessmentId)) { |
| $whereQuery .= " AND eers.am_assessment_id = '$request->assessmentId'"; |
| } |
| if(!empty($request->assessmentDate)) { |
| $whereQuery .= " AND aa.properties_value ->>'$.assessmentDate' = '$request->assessmentDate'"; |
| } |
| if(!empty($request->academicPaperSubjectId)) { |
| $academicPaperSubjectIdString = is_array($request->academicPaperSubjectId) ? "'" . implode("','",$request->academicPaperSubjectId) . "'" : "'".$request->academicPaperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdString )"; |
| } |
| if(!empty($request->examTime)) { |
| $whereQuery .= " AND CONCAT(TIME_FORMAT(aa.properties_value->>'$.startTime', '%l:%i %p'),' - ',TIME_FORMAT(aa.properties_value->>'$.endTime', '%l:%i %p')) = '$request->examTime'"; |
| } |
| |
| if(!empty($request->groupId)) { |
| $whereQuery .= " AND g.id = '$request->groupId'"; |
| } |
| |
| if(!empty($request->courseTypeId)) { |
| $whereQuery .= " AND p.course_type_id = '$request->courseTypeId'"; |
| } |
| |
| if(!empty($request->academicTermId)) { |
| $whereQuery .= " AND CAST(eerb.properties ->> '$.academicTermId'AS CHAR) = '$request->academicTermId'"; |
| } |
| if(!empty($request->examRegistrationId)) { |
| $whereQuery .= " AND eerb.ec_exam_registration_id = '$request->examRegistrationId'"; |
| } |
| if($request->examType == ExamRegistrationTypeConstants::REVALUATION){ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration eerp ON |
| eerp.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eerp.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eerp.id AND |
| eerbParent.groups_id = eerb.groups_id |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerbParent.id "; |
| } |
| else{ |
| $joinQuery .= " INNER JOIN ec_exam_registration eer ON |
| eer.id = eerb.ec_exam_registration_id AND |
| eer.trashed IS NULL |
| INNER JOIN ec_exam_registration_subject eers ON |
| eers.ec_exam_registration_batch_id = eerb.id "; |
| } |
| $query = "SELECT |
| eers.id, |
| eers.am_assessment_id, |
| eerb.groups_id, |
| eerb.ec_exam_registration_id, |
| eers.ec_exam_registration_batch_id, |
| eers.cm_academic_paper_subjects_id, |
| eer.name as examRegistrationName, |
| oe.id AS onlineExamId, |
| IF( |
| eers.valuation_details IS NULL , |
| JSON_SET(JSON_OBJECT(), '$.staffIds', '', '$.departmentIds', '','$.valuationDates', ''), |
| eers.valuation_details |
| ) AS valuation_details, |
| aa.name AS assessmentName, |
| g.name AS groupName, |
| s.name AS subjectDesc, |
| s.code AS subjectName, |
| aa.properties_value ->>'$.assessmentDate' AS assessmentDate, |
| caps.properties ->> '$.syllabusName' AS syllabusName, |
| caps.properties->>'$.subjectPriority' AS subjectPriority, |
| g.properties->>'$.description' AS groupDescription, |
| act.id as academicTermId, |
| act.name as academicTermName |
| FROM |
| ec_exam_registration_batch eerb |
| $joinQuery |
| INNER JOIN academic_term act ON |
| act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) AND act.type = 'SEMESTER' |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.identifying_context ->> '$.assessmentId' = aa.id AND oe.is_deleted = 0 |
| INNER JOIN cm_academic_paper_subjects caps ON |
| caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = caps.ams_subject_id |
| WHERE |
| g.trashed IS NULL"; |
| try { |
| $assementExaminers = $this->executeQueryForList($query.$whereQuery.$limitQuery.$orderBy, $this->mapper[ExamRegistrationSubjectServiceMapper::SEARCH_ASSESSMENT_EXAMINER]); |
| |
| } catch (\Exception $e) { |
| throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION_FEE,"Cannot fetch Exam Registration Batch details! Please try again."); |
| } |
| $assignedSubjects = []; |
| foreach ($assementExaminers as $assementExaminer) { |
| $assementExaminer->valuers = []; |
| $assementExaminer->reviewers = []; |
| $assementExaminer->valuerIds = []; |
| $assementExaminer->reviewerIds = []; |
| $assementExaminer->valuationDetails->staffIds = empty($assementExaminer->valuationDetails->staffIds) ? [] : $assementExaminer->valuationDetails->staffIds; |
| $assementExaminer->valuationDetails->valuationDates = empty($assementExaminer->valuationDetails->valuationDates) ? [] : $assementExaminer->valuationDetails->valuationDates; |
| $assementExaminer->valuationDetails->valuationStaffs = empty($assementExaminer->valuationDetails->valuationStaffs) ? [] : $assementExaminer->valuationDetails->valuationStaffs; |
| $assementExaminer->valuationDetails->reValuationDates = empty($assementExaminer->valuationDetails->reValuationDates) ? [] : $assementExaminer->valuationDetails->reValuationDates; |
| $assementExaminer->valuationDetails->reValuationStaffs = empty($assementExaminer->valuationDetails->reValuationStaffs) ? [] : $assementExaminer->valuationDetails->reValuationStaffs; |
| if (!empty($assementExaminer->valuationDetails->valuationStaffs)) { |
| foreach ($assementExaminer->valuationDetails->valuationStaffs as $valuationStaff) { |
| $assementExaminer->staffIds = []; |
| $addiitonalExamninersNames = empty($valuationStaff->addiitonalExamniners) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| if($valuationStaff->count == '1'){ |
| $assementExaminer->valuers = $addiitonalExamninersNames; |
| $assementExaminer->valuerIds = $valuationStaff->addiitonalExamniners; |
| } |
| if($valuationStaff->count == '2'){ |
| $assementExaminer->addiitonalExamninersNames = empty($valuationStaff->addiitonalExamniners) ? [] : StaffService::getInstance()->getStaffByIds($valuationStaff->addiitonalExamniners); |
| foreach($assementExaminer->addiitonalExamninersNames as $staffName){ |
| $valuationDate = reset(array_filter($assementExaminer->valuationDetails->valuationDates ,function($value)use($valuationStaff,$staffName){ |
| return $value->count == $valuationStaff->count && $value->staffId == $staffName->id; |
| })); |
| $otherValuationDates = array_filter($assementExaminer->valuationDetails->valuationDates ,function($value)use($valuationStaff,$staffName){ |
| return $value->count == $valuationStaff->count && $value->staffId != $staffName->id; |
| }); |
| $staffName->viewerIds = $valuationDate->viewerIds ? $valuationDate->viewerIds : []; |
| $staffName->viewerNames = empty($staffName->viewerIds) ? [] : StaffService::getInstance()->getStaffByIds($staffName->viewerIds); |
| $removedViewerIds = []; |
| foreach($otherValuationDates as $valuationDate){ |
| foreach($valuationDate->viewerIds as $viewerId){ |
| $removedViewerIds[] = $viewerId; |
| } |
| } |
| $staffName->availableViewerIds = array_diff ($assementExaminer->valuerIds,$removedViewerIds); |
| $staffName->availableViewers = empty($staffName->availableViewerIds) ? [] : StaffService::getInstance()->getStaffByIds($staffName->availableViewerIds); |
| foreach($staffName->availableViewers as $availableViewer){ |
| $availableViewer->isMapped = (in_array($availableViewer->id,$staffName->viewerIds)) ? 1 : 0; |
| } |
| } |
| } |
| } |
| } |
| if(!empty($assementExaminer->addiitonalExamninersNames)){ |
| $assignedSubjects[$assementExaminer->subjectCode] = empty($assignedSubjects[$assementExaminer->subjectCode]) ? $assementExaminer : $assignedSubjects[$assementExaminer->subjectCode]; |
| $assignedSubjects[$assementExaminer->subjectCode]->examRegSubIds[] = $assementExaminer->id; |
| $assignedSubjects[$assementExaminer->subjectCode]->paperSubjectIds[$assementExaminer->paperSubjectId] = $assementExaminer->paperSubjectId; |
| } |
| } |
| foreach($assignedSubjects as $subject){ |
| $subject->code = $subject->subjectCode ; |
| $subject->name = $subject->subjectName ; |
| $subject->paperSubjectIds = array_values($subject->paperSubjectIds); |
| } |
| return array_values($assignedSubjects); |
| } |
| |
| |
| |
| |
| |
| public function getStudentDetailsForPaperSubjectsRevaluation($request){ |
| try { |
| $paperId = is_array($request->paperIdArray) ? "'" . implode("','",$request->paperIdArray) . "'" : "'".$request->academicPaperSubjectId."'"; |
| $query = "SELECT DISTINCT |
| esar.id as id, |
| esar.student_id as studentId, |
| esar.am_assessment_id as assessmentId, |
| esar.identifying_context ->> '$.revaluationType' revaluationType, |
| esar.valuation_details as valuationDetails, |
| esarp.valuation_details as parentValuationDetails |
| FROM |
| ec_student_assessment_registration esar |
| INNER JOIN ec_exam_registration eer ON |
| eer.`type` = esar.ec_exam_registration_type AND eer.id = CAST(esar.identifying_context->>'$.examRegistrationId' AS CHAR) |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.ec_exam_registration_id = eer.id |
| INNER JOIN ec_exam_registration eer2 ON |
| eer2.id = eer.properties->>'$.parentExamRegistrationId' AND |
| eer2.trashed IS NULL |
| INNER JOIN ec_exam_registration_batch eerbParent ON |
| eerbParent.ec_exam_registration_id = eer2.id AND |
| eerb.groups_id = eerbParent.groups_id |
| INNER JOIN ec_exam_registration_subject eers2 ON |
| eers2.ec_exam_registration_batch_id = eerbParent.id |
| INNER JOIN ec_student_assessment_registration esarp ON |
| esarp.student_id = esar.student_id AND |
| esarp.am_assessment_id = esar.am_assessment_id AND |
| esarp.ec_exam_registration_type = eer2.type AND |
| CAST(esarp.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' |
| WHERE |
| esar.ec_exam_registration_type = eer.type AND |
| eers2.am_assessment_id = esar.am_assessment_id AND |
| CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND |
| CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID' AND |
| CAST(esar.identifying_context ->> '$.revaluationType' AS CHAR) ='$request->revaluationType' AND |
| eerb.ec_exam_registration_id='$request->examRegistrationId' AND |
| eers2.cm_academic_paper_subjects_id IN ($paperId)"; |
| $students = $this->executeQueryForList($query); |
| } |
| catch (\Exception $e){ |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $students; |
| } |
| |
| public function getExamregistrationSubjectListDetails($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| $searchRequest->academicPaperSubjectId = stripslashes($searchRequest->academicPaperSubjectId); |
| $searchRequest->assessmentId = stripslashes($searchRequest->assessmentId); |
| try { |
| $whereQuery = ""; |
| if(!empty($searchRequest->groupId)) { |
| $groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'"; |
| $whereQuery .= " AND eerb.groups_id IN ( $groupIdString )"; |
| } |
| 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->academicPaperSubjectId)) { |
| $academicPaperSubjectIdString = is_array($searchRequest->academicPaperSubjectId) ? "'" . implode("','",$searchRequest->academicPaperSubjectId) . "'" : "'".$searchRequest->academicPaperSubjectId."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdString )"; |
| } |
| if(!empty($searchRequest->academicPaperSubjectIds)) { |
| $academicPaperSubjectIdsString = is_array($searchRequest->academicPaperSubjectIds) ? "'" . implode("','",$searchRequest->academicPaperSubjectIds) . "'" : "'".$searchRequest->academicPaperSubjectIds."'"; |
| $whereQuery .= " AND eers.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdsString )"; |
| } |
| if(!empty($searchRequest->assessmentId)) { |
| $whereQuery .= " AND eers.am_assessment_id IN ( '$searchRequest->assessmentId' )"; |
| } |
| if(!empty($searchRequest->assessmentIds)) { |
| $assessmentIdsString = is_array($searchRequest->assessmentIds) ? "'" . implode("','",$searchRequest->assessmentIds) . "'" : "'".$searchRequest->assessmentIds."'"; |
| $whereQuery .= " AND eers.am_assessment_id IN ( $assessmentIdsString )"; |
| } |
| if(!empty($searchRequest->examRegistrationBatchId)) { |
| $examRegistrationBatchIdString = is_array($searchRequest->examRegistrationBatchId) ? "'" . implode("','",$searchRequest->examRegistrationBatchId) . "'" : "'".$searchRequest->examRegistrationBatchId."'"; |
| $whereQuery .= " AND eerb.id IN ( $examRegistrationBatchIdString )"; |
| } |
| $query = "SELECT DISTINCT |
| eer.id as examRegistrationId, |
| eer.name as examRegistrationName, |
| eer.type as examRegistrationType, |
| eers.am_assessment_id as assessmentId, |
| eer.properties ->> '$.examDate' as examDate, |
| aps.properties ->> '$.externalMaxMark' as maximumSubjectMark, |
| eers.valuation_details as valuationDetails, |
| s.code as subjectCode, |
| s.name as subjectName, |
| IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory, |
| g.name as groupName, |
| g.id as groupId, |
| ct.course_Type as courseType |
| FROM |
| ec_exam_registration_subject eers |
| 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 |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN `course_type` ct ON |
| ct.courseTypeID = p.course_type_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| WHERE |
| 1 = 1 "; |
| |
| $subjectDetails = $this->executeQueryForList($query.$whereQuery); |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| |
| } |
| |
| |
| |
| |
| |
| |
| public function getSubjectForValuationReports($request) |
| { |
| $request = $this->realEscapeObject($request); |
| $query = ""; |
| $subjectDetails = []; |
| $whereQuery = ""; |
| try |
| { |
| if(!empty($request->departmentIds)) { |
| $departmentIds = is_array($request->departmentIds) ? "'" . implode("','",$request->departmentIds) . "'" : "'".$request->departmentIds."'"; |
| $whereQuery .= " AND s.department_id IN ( $departmentIds )"; |
| } |
| $query = "SELECT |
| DISTINCT(aps.id) as id, |
| aps.id as academicPaperSubjectId, |
| s.id as subjectId, |
| s.code as subjectCode, |
| s.name as subjectName, |
| oe.id as onlineExamId, |
| eers.am_assessment_id as assessmentId, |
| oe.settings ->> '$.isValidated' AS isValidated, |
| aps.properties ->> '$.syllabusName' AS syllabusName, |
| IF(aps.properties ->> '$.classType' LIKE '%THEORY%',1,0) AS isTheory, |
| aps.properties ->> '$.externalMaxMark' as externalMaxMark, |
| eers.valuation_details as valuationDetails, |
| eerb.ec_exam_registration_id as examRegistrationId, |
| eqc.qpCode, |
| ct.course_Type as courseType |
| FROM |
| ec_exam_registration_subject eers |
| INNER JOIN ec_exam_registration_batch eerb ON |
| eerb.id = eers.ec_exam_registration_batch_id |
| INNER JOIN cm_academic_paper_subjects aps ON |
| aps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN am_assessment aa ON |
| aa.id = eers.am_assessment_id |
| INNER JOIN oe_exams oe ON |
| oe.assessment_id = eers.am_assessment_id AND oe.is_deleted = 0 |
| INNER JOIN v4_ams_subject s ON |
| s.id = aps.ams_subject_id |
| INNER JOIN `groups` g ON |
| g.id = eerb.groups_id |
| INNER JOIN program p |
| ON p.id = g.properties->>'$.programId' |
| INNER JOIN `course_type` ct ON |
| ct.courseTypeID = p.course_type_id |
| LEFT JOIN examQpCodes eqc ON |
| eqc.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND eqc.ec_exam_registration_id = eerb.ec_exam_registration_id |
| WHERE |
| eerb.ec_exam_registration_id='$request->examRegistrationId' "; |
| |
| $subjects = $this->executeQueryForList($query.$whereQuery); |
| $subjectArray = []; |
| foreach($subjects as $subject){ |
| if( $subjectArray[$subject->subjectId]){ |
| $subjectArray[$subject->subjectId]->subjectIdArr[] = $subject->academicPaperSubjectId; |
| } |
| else{ |
| $subject->subjectIdArr[] = $subject->academicPaperSubjectId; |
| $subjectArray[$subject->subjectId] = $subject; |
| } |
| } |
| $subjectDetails = array_values($subjectArray);; |
| } |
| catch (\Exception $e) |
| { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| return $subjectDetails; |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getSubjectsForRemunerationBill($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| $whereQuery = ""; |
| if(!$searchRequest->staffId){ |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Faculty ID is required"); |
| } |
| if(!$searchRequest->examYear || !$searchRequest->examMonth){ |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Exam month & year is required"); |
| } |
| $orderBy = " ORDER BY vas.code"; |
| $whereQuery .= " AND oe.`type` ='EXAM_CONTROLLER' AND oec.revaluation_id IS NULL AND oe.assessment_id IS NOT NULL AND oec.is_confirmed =1 AND (oe.properties ->> '$.isMockExam' != 'true' OR oe.properties ->> '$.isMockExam' is null)"; |
| $whereQuery .= " AND oec.created_by IN ($searchRequest->staffId) "; |
| $whereQuery .= " AND eer.properties->>'$.examMonth' IN ($searchRequest->examMonth) AND eer.properties->>'$.examYear' IN ($searchRequest->examYear)"; |
| $sql = "SELECT DISTINCT vas.id AS id,vas.code AS subjectCode,vas.name AS subjectName FROM oe_exam_marks_confirm oec |
| INNER JOIN oe_exams oe ON oe.id = oec.oe_exams_id |
| INNER JOIN am_assessment aa ON aa.id = oe.assessment_id |
| INNER JOIN ec_exam_registration_subject eers ON eers.am_assessment_id = aa.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 |
| INNER JOIN cm_academic_paper_subjects caps ON caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject vas ON vas.id = caps.ams_subject_id |
| WHERE 1=1"; |
| try { |
| $subjects = $this->executeQueryForList($sql.$whereQuery.$orderBy); |
| return $subjects; |
| } |
| catch (\Exception $e) { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getStaffConfirmedMarksSubjectDetailsForRemunerationBill($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| $whereQuery = ""; |
| if(!$searchRequest->staffId){ |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Faculty ID is required"); |
| } |
| if(!$searchRequest->examYear || !$searchRequest->examMonth){ |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Exam month & year is required"); |
| } |
| if(!$searchRequest->subjectId){ |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Subject ID is required"); |
| } |
| $orderBy = " ORDER BY eer.id"; |
| $whereQuery .= " AND oe.`type` ='EXAM_CONTROLLER' AND oec.revaluation_id IS NULL AND oe.assessment_id IS NOT NULL AND oec.is_confirmed =1 AND (oe.properties ->> '$.isMockExam' != 'true' OR oe.properties ->> '$.isMockExam' is null)"; |
| $whereQuery .= " AND oec.created_by IN ($searchRequest->staffId) "; |
| $whereQuery .= " AND eer.properties->>'$.examMonth' IN ($searchRequest->examMonth) AND eer.properties->>'$.examYear' IN ($searchRequest->examYear)"; |
| $whereQuery .= " AND vas.id IN ($searchRequest->subjectId)"; |
| |
| $sql = "SELECT DISTINCT eer.id AS examRegistrationId,eer.name AS examRegName,eqc.qpCode,vas.id AS subjectId,vas.code AS subjectCode,vas.name AS subjectName,oec.oe_users_id AS studentId FROM oe_exam_marks_confirm oec |
| INNER JOIN oe_exams oe ON oe.id = oec.oe_exams_id |
| INNER JOIN am_assessment aa ON aa.id = oe.assessment_id |
| INNER JOIN ec_exam_registration_subject eers ON eers.am_assessment_id = aa.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 |
| INNER JOIN cm_academic_paper_subjects caps ON caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject vas ON vas.id = caps.ams_subject_id |
| LEFT JOIN examQpCodes eqc ON eqc.cm_academic_paper_subjects_id = caps.id AND eqc.ec_exam_registration_id = eer.id |
| WHERE 1=1"; |
| try { |
| $subjectDetails = $this->executeQueryForList($sql.$whereQuery.$orderBy); |
| return $subjectDetails; |
| } |
| catch (\Exception $e) { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| } |
| |
| |
| |
| |
| |
| |
| |
| public function getSubjectAssignedStudentDetailsForRemunerationBill($searchRequest){ |
| $searchRequest = $this->realEscapeObject($searchRequest); |
| $whereQuery = ""; |
| if(!$searchRequest->examYear || !$searchRequest->examMonth){ |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Exam month & year is required"); |
| } |
| if(!$searchRequest->subjectId){ |
| throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Subject ID is required"); |
| } |
| $orderBy = " ORDER BY eer.id,esar.student_id"; |
| $whereQuery .= " AND eer.`type`IN ('REGULAR','SUPPLEMENTARY')"; |
| $whereQuery .= " AND eer.properties->>'$.examMonth' IN ($searchRequest->examMonth) AND eer.properties->>'$.examYear' IN ($searchRequest->examYear)"; |
| $whereQuery .= " AND vas.id IN ($searchRequest->subjectId)"; |
| |
| $sql = "SELECT DISTINCT eer.id AS examRegistrationId,vas.id AS subjectId,esar.student_id,esar.valuation_details FROM ec_student_assessment_registration esar |
| INNER JOIN ec_exam_registration_subject eers ON eers.am_assessment_id = esar.am_assessment_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 |
| INNER JOIN cm_academic_paper_subjects caps ON caps.id = eers.cm_academic_paper_subjects_id |
| INNER JOIN v4_ams_subject vas ON vas.id = caps.ams_subject_id |
| WHERE 1=1"; |
| try { |
| $studentDetails = $this->executeQueryForList($sql.$whereQuery.$orderBy); |
| return $studentDetails; |
| } |
| catch (\Exception $e) { |
| throw new ExamControllerException($e->getCode(),$e->getMessage()); |
| } |
| } |
| |
| } |