Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 125 |
| ImporterService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
600.00 | |
0.00% |
0 / 125 |
| __construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
| __clone | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
| getInstance | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 5 |
|||
| importStudentExamRegistrationDataFromExcel | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 20 |
|||
| excludeStudentsNotAttendingExams | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 42 |
|||
| changeProcessedDataStatus | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 18 |
|||
| getAllCreatedExams | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 27 |
|||
| deleteAllExpiredImportedRegistrationData | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
| <?php | |
| /** | |
| * User: jithinvijayan | |
| * Date: 13/11/19 | |
| * Time: 4:47 PM | |
| */ | |
| namespace com\linways\core\ams\professional\service; | |
| use com\linways\core\ams\professional\exception\ProfessionalException; | |
| use com\linways\core\ams\professional\request\DeleteExcludedStudentRequest; | |
| use com\linways\core\ams\professional\request\ExcludeStudentsNotAttendingExamsRequest; | |
| use com\linways\core\ams\professional\request\ImportExamRegisteredStudentRequest; | |
| class ImporterService extends BaseService | |
| { | |
| /** | |
| * Presence of a static member variable | |
| * | |
| * @var null | |
| */ | |
| private static $_instance = null; | |
| /** | |
| * Mapper variable | |
| * @var array | |
| */ | |
| private $mapper = []; | |
| /** | |
| * Initialise mapper, logger, hooks here | |
| * | |
| * ReportGenderService constructor. | |
| */ | |
| private function __construct() | |
| { | |
| } | |
| /** | |
| * Prevent any object or instance of that class to be cloned | |
| */ | |
| private function __clone() | |
| { | |
| } | |
| /** | |
| * Have a single globally accessible static method | |
| * | |
| * @return ImporterService|null | |
| */ | |
| public static function getInstance() | |
| { | |
| if (!is_object(self::$_instance)) | |
| self::$_instance = new self (); | |
| return self::$_instance; | |
| } | |
| /** | |
| * @param ImportExamRegisteredStudentRequest[] $requests | |
| * @throws ProfessionalException | |
| * @author jithinvijayan | |
| */ | |
| public function importStudentExamRegistrationDataFromExcel($requests) | |
| { | |
| $requests = $this->realEscapeArray($requests); | |
| $sql = "INSERT INTO importer_exam_registered_students (register_number, admission_number, subject_code, department_id, | |
| batch_id, semester_id, exam_type_id, show_hidden_exams, created_by, created_date, updated_by, updated_date) | |
| VALUES "; | |
| foreach ($requests as $request) { | |
| if (empty($request->examTypeId)) { | |
| $request->examTypeId = "NULL"; | |
| } | |
| $sql .= " ('$request->registerNumber','$request->admissionNumber','$request->subjectCode',$request->departmentId, | |
| $request->batchId,$request->semesterId,$request->examTypeId,$request->showHiddenExams, | |
| $request->createdBy,UTC_TIMESTAMP(),$request->updatedBy,UTC_TIMESTAMP()),"; | |
| } | |
| $sql = rtrim($sql, ','); | |
| try { | |
| $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * @param ExcludeStudentsNotAttendingExamsRequest $request | |
| * @return void | |
| * @throws ProfessionalException | |
| * @author jithinvijayan | |
| */ | |
| public function excludeStudentsNotAttendingExams(ExcludeStudentsNotAttendingExamsRequest $request) | |
| { | |
| $request = $this->realEscapeObject($request); | |
| $conditions = ""; | |
| $joinCondition = ""; | |
| if (!empty($request->examTypeId)) { | |
| $conditions .= " AND iers.exam_type_id =$request->examTypeId "; | |
| $joinCondition .= " AND e.examTypeID = iers.exam_type_id "; | |
| } | |
| if (empty($request->showHiddenExams)) { | |
| $conditions .= " AND iers.show_hidden_exams = 0 "; | |
| $joinCondition .= " AND e.canShow=1 "; | |
| } | |
| $sql = "INSERT INTO exam_excluded_students (studentID, examID, batchID) | |
| SELECT DISTINCT sa.studentID,e.examID, iers.batch_id | |
| FROM importer_exam_registered_students iers | |
| INNER JOIN subjects s ON s.subjectName = iers.subject_code | |
| INNER JOIN exam e ON e.subjectID = s.subjectID | |
| AND e.batchID = iers.batch_id | |
| AND e.semID = iers.semester_id | |
| $joinCondition | |
| INNER JOIN studentaccount sa ON sa.batchID = e.batchID | |
| LEFT JOIN importer_exam_registered_students iers1 ON iers1.register_number = sa.regNo | |
| AND iers.batch_id =iers1.batch_id AND iers1.subject_code = iers.subject_code | |
| AND iers.semester_id = iers1.semester_id AND iers1.is_active=1 | |
| WHERE iers.department_id =$request->departmentId AND iers.batch_id = $request->batchId | |
| AND iers.semester_id=$request->semesterId AND iers.is_active=1 AND iers1.id IS NULL $conditions"; | |
| try { | |
| /** | |
| * Fetching all created exam ids | |
| */ | |
| $exams = $this->getAllCreatedExams($request); | |
| /** | |
| * Deleting if students already excluded from this subject | |
| */ | |
| foreach ($exams as $exam) { | |
| $deleteRequest = new DeleteExcludedStudentRequest(); | |
| $deleteRequest->examId = $exam->examId; | |
| $deleteRequest->batchId = $request->batchId; | |
| ExamService::getInstance()->deleteExcludedStudentsFromExam($deleteRequest); | |
| } | |
| if (count($exams) > 0) { | |
| $this->executeQuery($sql); | |
| /** | |
| * Changing processed data status | |
| */ | |
| $this->changeProcessedDataStatus($request); | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * @param $request | |
| * @throws ProfessionalException | |
| * @author jithinvijayan | |
| */ | |
| private function changeProcessedDataStatus($request) | |
| { | |
| $request = $this->realEscapeObject($request); | |
| $conditions = ""; | |
| if (!empty($request->examTypeId)) { | |
| $conditions .= " AND exam_type_id =$request->examTypeId "; | |
| } | |
| if (empty($request->showHiddenExams)) { | |
| $conditions .= " AND show_hidden_exams = 0"; | |
| } | |
| $sql = "UPDATE importer_exam_registered_students SET is_active =0 | |
| WHERE department_id =$request->departmentId AND batch_id = $request->batchId | |
| AND semester_id=$request->semesterId AND is_active=1 $conditions"; | |
| try { | |
| $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * @param $request | |
| * @return Object|array | |
| * @throws ProfessionalException | |
| * @author jithinvijayan | |
| */ | |
| private function getAllCreatedExams($request) | |
| { | |
| $request = $this->realEscapeObject($request); | |
| $conditions = ""; | |
| $joinCondition = ""; | |
| if (!empty($request->examTypeId)) { | |
| $conditions .= " AND iers.exam_type_id =$request->examTypeId "; | |
| $joinCondition .= " AND e.examTypeID = iers.exam_type_id "; | |
| } | |
| if (empty($request->showHiddenExams)) { | |
| $conditions .= " AND iers.show_hidden_exams =0"; | |
| $joinCondition .= " AND e.canShow=1 "; | |
| } | |
| $sql = "SELECT DISTINCT e.examID as examId | |
| FROM importer_exam_registered_students iers | |
| INNER JOIN subjects s ON s.subjectName = iers.subject_code | |
| INNER JOIN exam e ON e.subjectID = s.subjectID | |
| AND e.batchID = iers.batch_id | |
| AND e.semID = iers.semester_id | |
| $joinCondition | |
| WHERE iers.department_id =$request->departmentId AND iers.batch_id = $request->batchId | |
| AND iers.semester_id=$request->semesterId AND iers.is_active=1 $conditions"; | |
| try { | |
| return $this->executeQueryForList($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * Deleting expired imported registration from temp table. default expiration time is 60 days | |
| * | |
| * @throws ProfessionalException | |
| * @author jithinvijayan | |
| */ | |
| public function deleteAllExpiredImportedRegistrationData() | |
| { | |
| $sql = "DELETE FROM importer_exam_registered_students | |
| WHERE UNIX_TIMESTAMP(created_date) < UNIX_TIMESTAMP(DATE_SUB(UTC_TIMESTAMP(), INTERVAL 60 DAY))"; | |
| try { | |
| $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| } |