Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
CRAP | |
0.00% |
0 / 437 |
BlockStudentMappingService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
6972.00 | |
0.00% |
0 / 437 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 3 |
|||
saveBlockStudentMapping | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 30 |
|||
validateSaveBlockStudentMapping | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 4 |
|||
insertBlockStudentMapping | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 13 |
|||
deleteBlockStudentMapping | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 23 |
|||
getBlockStudentMappings | |
0.00% |
0 / 1 |
240.00 | |
0.00% |
0 / 50 |
|||
getStudentsForBlockRegistration | |
0.00% |
0 / 1 |
132.00 | |
0.00% |
0 / 42 |
|||
getExamRegistrationStudentDetails | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 68 |
|||
getRegisteredStudentDetails | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 65 |
|||
getRegisteredStudentSubjectDetails | |
0.00% |
0 / 1 |
90.00 | |
0.00% |
0 / 89 |
|||
getStudentBlockReasonsDetails | |
0.00% |
0 / 1 |
182.00 | |
0.00% |
0 / 50 |
<?php | |
namespace com\linways\ec\core\service; | |
use com\linways\base\util\MakeSingletonTrait; | |
use com\linways\base\util\SecurityUtils; | |
use com\linways\ec\core\constant\StatusConstants; | |
use com\linways\ec\core\exception\ExamControllerException; | |
use com\linways\ec\core\dto\BlockStudentMapping; | |
use com\linways\ec\core\logging\Events; | |
use com\linways\ec\core\logging\entities\Staff; | |
use com\linways\core\ams\professional\logging\AMSLogger; | |
use com\linways\core\ams\professional\service\StaffService; | |
use com\linways\ec\core\service\BlockStudentReasonService; | |
class BlockStudentMappingService extends BaseService | |
{ | |
use MakeSingletonTrait; | |
private function __construct() | |
{ | |
$this->logger = AMSLogger::getLogger('exam-controller-log'); | |
} | |
/** | |
* Save Block Student Reason | |
* @param BlockStudentMapping $blockStudentMapping | |
* @return $id | |
*/ | |
public function saveBlockStudentMapping(BlockStudentMapping $blockStudentMapping){ | |
$blockStudentMapping = $this->realEscapeObject($blockStudentMapping); | |
$blockStudentMapping->createdBy = $GLOBALS['userId']; | |
$blockStudentMapping->updatedBy = $GLOBALS['userId']; | |
$staffId = $GLOBALS['userId']; | |
try { | |
$this->validateSaveBlockStudentMapping($blockStudentMapping); | |
$blockStudentMapping->id = $this->insertBlockStudentMapping($blockStudentMapping); | |
AMSLogger::log_info($this->logger,Events::EC_SAVE_STUDENT_BLOCK_STATUS, [ | |
"staff" => new Staff(["id" => $staffId]), | |
"request" => $blockStudentMapping, | |
"status" => StatusConstants::SUCCESS | |
]); | |
} catch (\Exception $e) { | |
AMSLogger::log_error($this->logger,Events::EC_SAVE_STUDENT_BLOCK_STATUS, [ | |
"staff" => new Staff(["id" => $staffId]), | |
"request" => $blockStudentMapping, | |
"errorCode" => $e->getCode(), | |
"errorMessage" => $e->getMessage(), | |
"status" => StatusConstants::FAILED | |
]); | |
if ($e->getCode() !== ExamControllerException::INVALID_PARAMETERS && $e->getCode() !== ExamControllerException::EMPTY_PARAMETERS && $e->getCode() !== "DUPLICATE_ENTRY") { | |
throw new ExamControllerException($e->getCode(), "Failed to save student block status Type! Please try again"); | |
} else if ($e->getCode() === ExamControllerException::DUPLICATE_ENTRY) { | |
throw new ExamControllerException(ExamControllerException::DUPLICATE_ENTRY, "Cannot create block status.This block status already created"); | |
} else { | |
throw new ExamControllerException($e->getCode(), $e->getMessage()); | |
} | |
} | |
return $blockStudentMapping->id; | |
} | |
/** | |
* Validate Block Student Reason Request Before Saving | |
* @param BlockStudentMapping $blockStudentMapping | |
* @return NULL | |
*/ | |
private function validateSaveBlockStudentMapping(BlockStudentMapping $blockStudentMapping){ | |
if (empty($blockStudentMapping->studentId) || empty($blockStudentMapping->examRegistrationId) || empty($blockStudentMapping->blockStudentReasonId) || empty($blockStudentMapping->blockingType)){ | |
throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS, "Empty Parameter!"); | |
} | |
} | |
/** | |
* Insert Block Student Reason | |
* @param BlockStudentMapping $blockStudentMapping | |
* @return $id | |
*/ | |
private function insertBlockStudentMapping(BlockStudentMapping $blockStudentMapping){ | |
$properties = !empty($blockStudentMapping->properties) ? "'" . json_encode($blockStudentMapping->properties) . "'" : "'{}'"; | |
$blockStudentMapping->academicPaperSubjectId = $blockStudentMapping->academicPaperSubjectId ? "'".$blockStudentMapping->academicPaperSubjectId ."'" : "NULL"; | |
$query = "INSERT INTO ec_student_block_reason_mapping | |
(student_id,exam_registration_id,cm_academic_paper_subjects_id,ec_block_student_reason_id,blocking_type,properties,created_by,updated_by) | |
VALUES | |
('$blockStudentMapping->studentId','$blockStudentMapping->examRegistrationId',$blockStudentMapping->academicPaperSubjectId,'$blockStudentMapping->blockStudentReasonId','$blockStudentMapping->blockingType',$properties,'$blockStudentMapping->createdBy','$blockStudentMapping->updatedBy') ON DUPLICATE KEY UPDATE `updated_by` = VALUES(updated_by)"; | |
try { | |
$blockStudentMapping->id = $this->executeQuery($query,true)->id; | |
return $blockStudentMapping->id; | |
} catch (\Exception $e) { | |
throw new ExamControllerException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Delete Block Student Reason | |
* @param String $id | |
* @return NULL | |
*/ | |
public function deleteBlockStudentMapping($id){ | |
$id = $this->realEscapeString($id); | |
$staffId = $GLOBALS['userId']; | |
$blockStudentMapping = new \stdClass(); | |
$blockStudentMapping->id = $id; | |
$currentBlockStudentMappingDetails = reset($this->getBlockStudentMappings($blockStudentMapping)); | |
if(empty($currentBlockStudentMappingDetails)){ | |
throw new ExamControllerException(ExamControllerException::EMPTY_PARAMETERS,"Can't delete ! Block reason missing."); | |
} | |
$query = "DELETE FROM | |
ec_student_block_reason_mapping | |
WHERE | |
id = '$id'"; | |
try { | |
$this->executeQuery($query); | |
// LOGGING | |
AMSLogger::log_info($this->logger,Events::EC_DELETE_STUDENT_BLOCK_STATUS, [ | |
"staff" => new Staff(["id" => $staffId]), | |
"request" => $currentBlockStudentMappingDetails, | |
"status" => StatusConstants::SUCCESS | |
]); | |
}catch (\Exception $e) { | |
throw new ExamControllerException(ExamControllerException::HAVE_RELATION,"Error deleting Block reason! Please try again"); | |
} | |
} | |
/** | |
* get Block Student Reason | |
* @param $searchRequest | |
* @return $blockStudentMappings | |
*/ | |
public function getBlockStudentMappings($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try { | |
$whereQuery = null; | |
$whereQuery = ""; | |
if (!empty($searchRequest->id)) { | |
$blockStudentMappingIdString = is_array($searchRequest->id) ? "'" . implode("','", $searchRequest->id) . "'" : "'" . $searchRequest->id . "'"; | |
$whereQuery .= " AND esbrm.id IN ( $blockStudentMappingIdString )"; | |
} | |
if (!empty($searchRequest->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','", $searchRequest->studentId) . "'" : "'" . $searchRequest->studentId . "'"; | |
$whereQuery .= " AND esbrm.student_id IN ( $studentIdString )"; | |
} | |
if (!empty($searchRequest->examRegistrationId)) { | |
$examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','", $searchRequest->examRegistrationId) . "'" : "'" . $searchRequest->examRegistrationId . "'"; | |
$whereQuery .= " AND esbrm.exam_registration_id IN ( $examRegistrationIdString )"; | |
} | |
if (!empty($searchRequest->blockStudentReasonId)) { | |
$blockStudentReasonIdString = is_array($searchRequest->blockStudentReasonId) ? "'" . implode("','", $searchRequest->blockStudentReasonId) . "'" : "'" . $searchRequest->blockStudentReasonId . "'"; | |
$whereQuery .= " AND esbrm.ec_block_student_reason_id IN ( $blockStudentReasonIdString )"; | |
} | |
if (!empty($searchRequest->blockingType)) { | |
$blockingTypeString = is_array($searchRequest->blockingType) ? "'" . implode("','", $searchRequest->blockingType) . "'" : "'" . $searchRequest->blockingType . "'"; | |
$whereQuery .= " AND esbrm.blocking_type IN ( $blockingTypeString )"; | |
} | |
if (!empty($searchRequest->academicPaperSubjectId)) { | |
$academicPaperSubjectIdString = is_array($searchRequest->academicPaperSubjectId) ? "'" . implode("','", $searchRequest->academicPaperSubjectId) . "'" : "'" . $searchRequest->academicPaperSubjectId . "'"; | |
$whereQuery .= " AND esbrm.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdString )"; | |
} | |
$query = "SELECT | |
DISTINCT | |
esbrm.id as id, | |
esbrm.student_id as studentId, | |
esbrm.exam_registration_id as examRegistrationId, | |
esbrm.ec_block_student_reason_id as blockStudentReasonId, | |
esbrm.blocking_type as blockingType, | |
esbrm.cm_academic_paper_subjects_id as academicPaperSubjectId, | |
esbrm.properties | |
FROM | |
ec_student_block_reason_mapping esbrm | |
WHERE | |
1 = 1 "; | |
$blockStudentMappings = $this->executeQueryForList($query . $whereQuery); | |
} catch (\Exception $e) { | |
throw new ExamControllerException($e->getCode(), $e->getMessage()); | |
} | |
foreach($blockStudentMappings as $blockStudentMapping){ | |
$blockStudentMapping->properties = json_decode($blockStudentMapping->properties); | |
} | |
return $blockStudentMappings; | |
} | |
/** | |
* Get Student For Block Student Registration | |
* @param $searchRequest | |
* @return $id | |
*/ | |
public function getStudentsForBlockRegistration($searchRequest){ | |
// $searchRequest = $this->realEscapeObject($searchRequest); | |
try { | |
$students = []; | |
$assignedStudents = []; | |
$assignedStudentsSubjects = []; | |
switch ($searchRequest->blockingType) { | |
case 'REGISTRATION_BLOCKING': | |
$assignedStudents = $this->getExamRegistrationStudentDetails($searchRequest); | |
break; | |
case 'HALL_TICKET_BLOCKING': | |
$assignedStudentsSubjects = $this->getRegisteredStudentSubjectDetails($searchRequest); | |
break; | |
case 'RESULT_BLOCKING': | |
$assignedStudents = $this->getRegisteredStudentDetails($searchRequest); | |
break; | |
default: | |
$students = []; | |
break; | |
} | |
foreach($assignedStudents as $student){ | |
$students[$student->id] = $student; | |
foreach($student->blockingReasons as $reason){ | |
$students[$student->id]->reasons[$reason->id]->id = $reason->id; | |
$students[$student->id]->reasons[$reason->id]->name = $reason->name; | |
$students[$student->id]->reasons[$reason->id]->isAssigned = in_array($reason->id,$students[$student->id]->blockReasonIds) ? 1 : 0; | |
} | |
} | |
foreach($assignedStudentsSubjects as $student){ | |
$students[$student->id] = $student; | |
foreach($student->blockingReasons as $reason){ | |
$students[$student->id]->reasons[$reason->id]->id = $reason->id; | |
$students[$student->id]->reasons[$reason->id]->name = $reason->name; | |
$students[$student->id]->reasons[$reason->id]->isAssigned = in_array($reason->id,$students[$student->id]->blockReasonIds) ? 1 : 0; | |
} | |
} | |
$students = array_values($students); | |
array_walk($students, function($student){ | |
$students->reasons = array_values($students->reasons); | |
}); | |
} catch (\Exception $e) { | |
throw new ExamControllerException($e->getCode(), $e->getMessage()); | |
} | |
return $students; | |
} | |
/** | |
* get Availabe Students For Exam Registration | |
* @param $request | |
* @return $students | |
*/ | |
public function getExamRegistrationStudentDetails($request){ | |
$request = $this->realEscapeObject($request); | |
$whereQuery = ""; | |
$students = []; | |
$sortBy = " ORDER BY spa.properties->>'$.registerNumber' ASC"; | |
if(!empty($request->examRegistrationId)){ | |
$examRegistrationIdString = is_array($request->examRegistrationId) ? "'" . implode("','",$request->examRegistrationId) . "'" : "'".$request->examRegistrationId."'"; | |
$whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; | |
} | |
if(!empty($request->groupId)){ | |
$groupIdString = is_array($request->groupId) ? "'" . implode("','",$request->groupId) . "'" : "'".$request->groupId."'"; | |
$whereQuery .= " AND g.id IN ( $groupIdString )"; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID as id, | |
sa.studentName as name, | |
spa.properties->>'$.registerNumber' as registerNumber, | |
eer.id as examRegistrationId, | |
eer.name as examRegistrationName, | |
g.name AS groupName, | |
esbrm.ec_block_student_reason_id as blockReasonId | |
FROM | |
ec_exam_registration eer | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.ec_exam_registration_id = eer.id | |
INNER JOIN academic_term act ON | |
act.id = eerb.academicTermId | |
INNER JOIN `groups` g ON | |
g.id = eerb.groups_id | |
AND g.`type` = 'BATCH' | |
INNER JOIN group_members gm ON | |
gm.groups_id = g.id | |
INNER JOIN student_program_account spa ON | |
spa.id = gm.members->>'$.studentId' | |
INNER JOIN student_program_batch_log spbl ON | |
spbl.batch_group_id = g.id AND | |
spbl.term_id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) AND | |
spbl.program_student_id = spa.id AND | |
spbl.properties->>'$.academicStatus' IN ('ACTIVE','COMPLETED') | |
INNER JOIN studentaccount sa ON | |
sa.studentID = spa.student_id | |
LEFT JOIN ec_student_block_reason_mapping esbrm ON | |
esbrm.student_id = sa.studentID AND esbrm.exam_registration_id = eer.id AND | |
esbrm.blocking_type = 'REGISTRATION_BLOCKING' | |
WHERE | |
eer.trashed IS NULL "; | |
try { | |
$studentsDetails = $this->executeQueryForList($query.$whereQuery.$sortBy); | |
} catch (\Exception $e) { | |
throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION,"Cannot fetch Studentd."); | |
} | |
$searchRequest = new \stdClass(); | |
$searchRequest->type = 'SEMESTER_WISE'; | |
$reasons = BlockStudentReasonService::getInstance()->getBlockStudentReasons($searchRequest); | |
foreach($studentsDetails as $student){ | |
$students[$student->id]->id = $student->id; | |
$students[$student->id]->name = $student->name; | |
$students[$student->id]->registerNumber = $student->registerNumber; | |
$students[$student->id]->examRegistrationId = $student->examRegistrationId; | |
$students[$student->id]->examRegistrationName = $student->examRegistrationName; | |
$students[$student->id]->groupName = $student->groupName; | |
if($student->blockReasonId){ | |
$students[$student->id]->blockReasonIds[$student->blockReasonId] = $student->blockReasonId; | |
} | |
$students[$student->id]->blockingReasons = $reasons; | |
} | |
$students = array_values($students); | |
return $students; | |
} | |
/** | |
* get Registered Students For Exam result Blocking | |
* @param $request | |
* @return $students | |
*/ | |
public function getRegisteredStudentDetails($request){ | |
$request = $this->realEscapeObject($request); | |
$whereQuery = ""; | |
$students = []; | |
$sortBy = " ORDER BY spa.properties->>'$.registerNumber' ASC"; | |
if(!empty($request->examRegistrationId)){ | |
$examRegistrationIdString = is_array($request->examRegistrationId) ? "'" . implode("','",$request->examRegistrationId) . "'" : "'".$request->examRegistrationId."'"; | |
$whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; | |
} | |
if(!empty($request->groupId)){ | |
$groupIdString = is_array($request->groupId) ? "'" . implode("','",$request->groupId) . "'" : "'".$request->groupId."'"; | |
$whereQuery .= " AND g.id IN ( $groupIdString )"; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID as id, | |
sa.studentName as name, | |
spa.properties->>'$.registerNumber' as registerNumber, | |
eer.id as examRegistrationId, | |
eer.name as examRegistrationName, | |
g.name AS groupName, | |
esbrm.ec_block_student_reason_id as blockReasonId | |
FROM | |
ec_exam_registration eer | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.ec_exam_registration_id = eer.id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.ec_exam_registration_batch_id = eerb.id | |
INNER JOIN `groups` g ON | |
g.id = eerb.groups_id | |
AND g.`type` = 'BATCH' | |
INNER JOIN ec_student_assessment_registration esar ON | |
esar.am_assessment_id = eers.am_assessment_id AND | |
esar.ec_exam_registration_type = eer.type AND | |
esar.properties ->> '$.registrationStatus' IN ('REGISTERED') | |
INNER JOIN student_program_account spa ON | |
spa.student_id = esar.student_id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esar.student_id | |
LEFT JOIN ec_student_block_reason_mapping esbrm ON | |
esbrm.student_id = sa.studentID AND esbrm.exam_registration_id = eer.id AND | |
esbrm.blocking_type = 'RESULT_BLOCKING' | |
WHERE | |
eer.trashed IS NULL "; | |
try { | |
$studentsDetails = $this->executeQueryForList($query.$whereQuery.$sortBy); | |
} catch (\Exception $e) { | |
throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION,"Cannot fetch Studentd."); | |
} | |
$searchRequest = new \stdClass(); | |
$searchRequest->type = 'SEMESTER_WISE'; | |
$reasons = BlockStudentReasonService::getInstance()->getBlockStudentReasons($searchRequest); | |
foreach($studentsDetails as $student){ | |
$students[$student->id]->id = $student->id; | |
$students[$student->id]->name = $student->name; | |
$students[$student->id]->registerNumber = $student->registerNumber; | |
$students[$student->id]->examRegistrationId = $student->examRegistrationId; | |
$students[$student->id]->examRegistrationName = $student->examRegistrationName; | |
$students[$student->id]->groupName = $student->groupName; | |
if($student->blockReasonId){ | |
$students[$student->id]->blockReasonIds[$student->blockReasonId] = $student->blockReasonId; | |
} | |
$students[$student->id]->blockingReasons = $reasons; | |
} | |
$students = array_values($students); | |
return $students; | |
} | |
/** | |
* get Registered Students Subject For Exam hall ticket Blocking | |
* @param $request | |
* @return $students | |
*/ | |
public function getRegisteredStudentSubjectDetails($request){ | |
$request = $this->realEscapeObject($request); | |
$whereQuery = ""; | |
$students = []; | |
$sortBy = " ORDER BY spa.properties->>'$.registerNumber' ASC"; | |
if(!empty($request->examRegistrationId)){ | |
$examRegistrationIdString = is_array($request->examRegistrationId) ? "'" . implode("','",$request->examRegistrationId) . "'" : "'".$request->examRegistrationId."'"; | |
$whereQuery .= " AND eer.id IN ( $examRegistrationIdString )"; | |
} | |
if(!empty($request->groupId)){ | |
$groupIdString = is_array($request->groupId) ? "'" . implode("','",$request->groupId) . "'" : "'".$request->groupId."'"; | |
$whereQuery .= " AND g.id IN ( $groupIdString )"; | |
} | |
$query = "SELECT DISTINCT | |
sa.studentID as id, | |
sa.studentName as name, | |
spa.properties->>'$.registerNumber' as registerNumber, | |
eer.id as examRegistrationId, | |
eer.name as examRegistrationName, | |
g.name AS groupName, | |
esbrmSem.ec_block_student_reason_id as blockReasonId, | |
aps.id AS academicPaperSubjectId, | |
s.code AS subjectCode, | |
s.name AS subjectName, | |
esbrmSub.ec_block_student_reason_id as subjectBlockReasonId | |
FROM | |
ec_exam_registration eer | |
INNER JOIN ec_exam_registration_batch eerb ON | |
eerb.ec_exam_registration_id = eer.id | |
INNER JOIN ec_exam_registration_subject eers ON | |
eers.ec_exam_registration_batch_id = eerb.id | |
INNER JOIN `groups` g ON | |
g.id = eerb.groups_id | |
AND g.`type` = 'BATCH' | |
INNER JOIN cm_academic_paper_subjects aps ON | |
eers.cm_academic_paper_subjects_id = aps.id | |
INNER JOIN v4_ams_subject s ON | |
aps.ams_subject_id = s.id | |
INNER JOIN ec_student_assessment_registration esar ON | |
esar.am_assessment_id = eers.am_assessment_id AND | |
esar.ec_exam_registration_type = eer.type AND | |
esar.properties ->> '$.registrationStatus' IN ('REGISTERED') | |
INNER JOIN student_program_account spa ON | |
spa.student_id = esar.student_id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = esar.student_id | |
LEFT JOIN ec_student_block_reason_mapping esbrmSem ON | |
esbrmSem.student_id = sa.studentID AND esbrmSem.exam_registration_id = eer.id AND | |
esbrmSem.cm_academic_paper_subjects_id IS NULL AND | |
esbrmSem.blocking_type = 'HALL_TICKET_BLOCKING' | |
LEFT JOIN ec_student_block_reason_mapping esbrmSub ON | |
esbrmSub.student_id = sa.studentID AND esbrmSub.exam_registration_id = eer.id AND | |
esbrmSub.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND | |
esbrmSub.blocking_type = 'HALL_TICKET_BLOCKING' | |
WHERE | |
eer.trashed IS NULL "; | |
try { | |
$studentsDetails = $this->executeQueryForList($query.$whereQuery.$sortBy); | |
} catch (\Exception $e) { | |
throw new ExamControllerException(ExamControllerException::ERROR_FETCHING_EXAM_REGISTRATION,"Cannot fetch Studentd."); | |
} | |
$searchRequest = new \stdClass(); | |
$searchRequest->type = 'SEMESTER_WISE'; | |
$reasons = BlockStudentReasonService::getInstance()->getBlockStudentReasons($searchRequest); | |
foreach($studentsDetails as $student){ | |
$students[$student->id]->id = $student->id; | |
$students[$student->id]->name = $student->name; | |
$students[$student->id]->registerNumber = $student->registerNumber; | |
$students[$student->id]->examRegistrationId = $student->examRegistrationId; | |
$students[$student->id]->examRegistrationName = $student->examRegistrationName; | |
$students[$student->id]->groupName = $student->groupName; | |
if($student->blockReasonId){ | |
$students[$student->id]->blockReasonIds[$student->blockReasonId] = $student->blockReasonId; | |
} | |
$students[$student->id]->blockingReasons = $reasons; | |
$students[$student->id]->subjects[$student->academicPaperSubjectId]->id = $student->academicPaperSubjectId; | |
$students[$student->id]->subjects[$student->academicPaperSubjectId]->academicPaperSubjectId = $student->academicPaperSubjectId; | |
$students[$student->id]->subjects[$student->academicPaperSubjectId]->code = $student->subjectCode; | |
$students[$student->id]->subjects[$student->academicPaperSubjectId]->name = $student->subjectName; | |
if($student->subjectBlockReasonId){ | |
$students[$student->id]->subjects[$student->academicPaperSubjectId]->blockReasonIds[$student->subjectBlockReasonId] = $student->subjectBlockReasonId; | |
} | |
} | |
$students = array_values($students); | |
array_walk($students, function($student){ | |
array_walk($student->subjects, function($subject){ | |
$subject->blockReasonIds = array_values($subject->blockReasonIds); | |
}); | |
$student->subjects = array_values($student->subjects); | |
}); | |
return $students; | |
} | |
/** | |
* get Student Block reason details | |
* @param $searchRequest | |
* @return $blockStudentMappings | |
*/ | |
public function getStudentBlockReasonsDetails($searchRequest){ | |
$searchRequest = $this->realEscapeObject($searchRequest); | |
try { | |
$whereQuery = null; | |
$whereQuery = ""; | |
if (!empty($searchRequest->studentId)) { | |
$studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','", $searchRequest->studentId) . "'" : "'" . $searchRequest->studentId . "'"; | |
$whereQuery .= " AND esbrm.student_id IN ( $studentIdString )"; | |
} | |
if (!empty($searchRequest->examRegistrationId)) { | |
$examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','", $searchRequest->examRegistrationId) . "'" : "'" . $searchRequest->examRegistrationId . "'"; | |
$whereQuery .= " AND esbrm.exam_registration_id IN ( $examRegistrationIdString )"; | |
} | |
if (!empty($searchRequest->blockingType)) { | |
$blockingTypeString = is_array($searchRequest->blockingType) ? "'" . implode("','", $searchRequest->blockingType) . "'" : "'" . $searchRequest->blockingType . "'"; | |
$whereQuery .= " AND esbrm.blocking_type IN ( $blockingTypeString )"; | |
} | |
if (!empty($searchRequest->blockReasonType)) { | |
$blockReasonTypeString = is_array($searchRequest->blockReasonType) ? "'" . implode("','", $searchRequest->blockReasonType) . "'" : "'" . $searchRequest->blockReasonType . "'"; | |
$whereQuery .= " AND ebsr.type IN ( $blockReasonTypeString )"; | |
} | |
if (!empty($searchRequest->academicPaperSubjectId)) { | |
$academicPaperSubjectIdString = is_array($searchRequest->academicPaperSubjectId) ? "'" . implode("','", $searchRequest->academicPaperSubjectId) . "'" : "'" . $searchRequest->academicPaperSubjectId . "'"; | |
$whereQuery .= " AND esbrm.cm_academic_paper_subjects_id IN ( $academicPaperSubjectIdString )"; | |
} | |
$query = "SELECT | |
DISTINCT | |
esbrm.id as id, | |
esbrm.student_id as studentId, | |
esbrm.exam_registration_id as examRegistrationId, | |
esbrm.ec_block_student_reason_id as blockStudentReasonId, | |
esbrm.blocking_type as blockingType, | |
esbrm.cm_academic_paper_subjects_id as academicPaperSubjectId, | |
esbrm.properties, | |
ebsr.id as blockReasonId, | |
ebsr.name as blockReasonName | |
FROM | |
ec_student_block_reason_mapping esbrm | |
INNER JOIN ec_block_student_reason ebsr ON | |
ebsr.id = esbrm.ec_block_student_reason_id | |
WHERE | |
1 = 1 "; | |
$blockStudentMappings = $this->executeQueryForList($query . $whereQuery); | |
} catch (\Exception $e) { | |
throw new ExamControllerException($e->getCode(), $e->getMessage()); | |
} | |
foreach($blockStudentMappings as $blockStudentMapping){ | |
$blockStudentMapping->properties = json_decode($blockStudentMapping->properties); | |
} | |
return $blockStudentMappings; | |
} | |
} |