Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 124
BarcodeGenerationService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
272.00
0.00% covered (danger)
0.00%
0 / 124
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 2
 generateBarcodeBatchWise
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 13
 getAllBarcodeStudentData
0.00% covered (danger)
0.00%
0 / 1
20.00
0.00% covered (danger)
0.00%
0 / 20
 getRegisteredStudentDetailsWithFalseNumber
0.00% covered (danger)
0.00%
0 / 1
90.00
0.00% covered (danger)
0.00%
0 / 89
<?php
namespace com\linways\ec\core\service;
use com\linways\base\util\MakeSingletonTrait;
use com\linways\ec\core\exception\ExamControllerException;
use com\linways\core\ams\professional\service\CommonService;
use com\linways\ec\core\service\BarcodeGenerator\BarcodeGenerator;
use com\linways\ec\core\service\CommonExamService;
use com\linways\ec\core\mapper\BarcodeGenerationServiceMapper;
use com\linways\core\ams\professional\service\StudentService;
class BarcodeGenerationService extends BaseService
{
    use MakeSingletonTrait;
    private function __construct() {
        $this->mapper = BarcodeGenerationServiceMapper::getInstance()->getMapper();
    }
      /**
     * get barCode
     * @param $searchRequest 
     * @return $programResult 
     * @author Krishnajith
     */
    public function generateBarcodeBatchWise($searchRequest) {
        $searchRequest = $this->realEscapeObject($searchRequest);
        try{
            $request = new \stdClass;
            $request->groupId = $searchRequest->groupId;
            $request->examRegistrationId = $searchRequest->examRegistrationId;
            $request->academicPaperSubjectId = $searchRequest->academicPaperSubjectId;
            $programResult = BarcodeGenerator::getInstance()->getBarcodeResultData($request);
            return $programResult;
        }
        catch (\Exception $e){
            throw new ExamControllerException($e->getCode(),$e->getMessage());
        }
    }
    
     /**
     * get All Hall Tickets Student Data
     * @param $searchRequest 
     * @return $studentDetails 
     * @author Krishnajith
     */
    public function getAllBarcodeStudentData($searchRequest) {
        $searchRequest = $this->realEscapeObject($searchRequest);
        try{
            $request = new \stdClass;
            $request->groupId = $searchRequest->groupId;
            $request->academicPaperSubjectId = $searchRequest->academicPaperSubjectId;
            $request->examRegistrationId = $searchRequest->examRegistrationId;
            $request->groupId = $searchRequest->groupId;
            $studentDetails = $this->getRegisteredStudentDetailsWithFalseNumber($request);
            if(empty($studentDetails)){
                throw new ExamControllerException(ExamControllerException::NO_STUDENTS_IN_THIS_EXAM_REGISTRATION,"No Students Found");
            }
            foreach($studentDetails as $student){
                $student->studentImage  = StudentService::getInstance()->getStudentProfilePic($student->id)->docpath;
            }
        }
        catch (\Exception $e){
            throw new ExamControllerException($e->getCode(),$e->getMessage());
        }
        return $studentDetails;
    }
     /**
     * get False Number Generated Student Details
     * @author Krishnajith
     * @param  $searchRequest
     * @throws ExamControllerException
     */
    public function getRegisteredStudentDetailsWithFalseNumber($searchRequest){
        $searchRequest = $this->realEscapeObject($searchRequest);
        try{
            $orderBy = " ORDER BY spa.properties->>'$.registerNumber' ASC , s.name ASC";
            $whereQuery = "";
            if(!empty($searchRequest->groupId)) {
                $groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'";
                $whereQuery .= " AND g.id IN ( $groupIdString )";
            }
            if(!empty($searchRequest->academicPaperSubjectId)) {
                $academicPaperSubjectIdString = is_array($searchRequest->academicPaperSubjectId) ? "'" . implode("','",$searchRequest->academicPaperSubjectId) . "'" : "'".$searchRequest->academicPaperSubjectId."'";
                $whereQuery .= " AND aps.id IN ( $academicPaperSubjectIdString )";
            }
            if(!empty($searchRequest->examRegistrationId)) {
                $examRegistrationIdString = is_array($searchRequest->examRegistrationId) ? "'" . implode("','",$searchRequest->examRegistrationId) . "'" : "'".$searchRequest->examRegistrationId."'";
                $whereQuery .= " AND eerb.ec_exam_registration_id IN ( $examRegistrationIdString )";
            }
            if($searchRequest->isAvoidPracticalSubFromFalseNumber) {
                $whereQuery .= " AND aps.properties ->> '$.classType' = 'THEORY'";
            }
            $query = "SELECT
                        sa.studentID AS id,
                        esar.properties ->> '$.falseNo' AS falseNo,
                        esar.properties ->> '$.alphaNumericCode' AS alphaNumericCode,
                        IF(esar.properties ->> '$.falseNo' IS NOT NULL,1,0) AS isFalseNoGenerated,
                        aa.id AS assessmentId,
                        sa.studentID AS studentId,
                        sa.studentName,
                        spa.properties->>'$.registerNumber' as regNo,
                        spa.properties->>'$.rollNumber' as rollNo,
                        sa.admissionNo,
                        act.id AS academicTermId,
                        act.name AS academicTermName,
                        dept.deptID AS deptId,
                        dept.deptName AS deptName,
                        dept.departmentSpecialization AS departmentCode,
                        ct.courseTypeID AS courseTypeId,
                        ct.typeName AS courseTypeName,
                        ct.course_Type AS courseType,
                        eer.type AS examType,
                        g.id AS groupId,
                        g.name AS groupName,
                        aps.id AS academicPaperSubjectId,
                        s.code AS subjectCode,
                        aps.properties ->> '$.syllabusName' AS syllabusName,
                        s.name AS subjectName,
                        IF(aps.properties ->> '$.classType' = 'THEORY',1,0) AS isTheory,
                        esar.properties AS assessmentProperties,
                        aa.properties_value ->>'$.startTime' AS assessmentStartTime,
                        aa.properties_value ->>'$.endTime' AS assessmentEndTime,
                        DATE_FORMAT(aa.properties_value ->>'$.assessmentDate','%d-%m-%Y') AS assessmentDate
                    FROM
                        `groups` g
                    INNER JOIN ec_exam_registration_batch eerb ON
                        eerb.groups_id = g.id
                    INNER JOIN ec_exam_registration_subject eers ON
                        eers.ec_exam_registration_batch_id = eerb.id
                    INNER JOIN ec_exam_registration eer ON
                        eer.id = eerb.ec_exam_registration_id
                    INNER JOIN am_assessment aa ON
                        aa.id = eers.am_assessment_id
                    INNER JOIN  cm_academic_paper_subjects aps ON 
                        eers.cm_academic_paper_subjects_id = aps.id
                    INNER JOIN  v4_ams_subject s ON 
                        aps.ams_subject_id = s.id
                    INNER JOIN ec_student_assessment_registration esar ON
                        esar.am_assessment_id = eers.am_assessment_id AND  CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID' AND esar.ec_exam_registration_type = eer.type
                    INNER JOIN studentaccount sa ON 
                        sa.studentID = esar.student_id
                    INNER JOIN department dept ON
                        dept.deptID = g.properties ->> '$.departmentId'
                    INNER JOIN  academic_term act ON 
                        act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR)
                    INNER JOIN program p ON
                        p.id = g.properties ->> '$.programId'
                    INNER JOIN student_program_account spa ON 
                        spa.student_id  = esar.student_id  AND
                        spa.current_program_id = p.id 
                    INNER JOIN `course_type` ct ON
                        ct.courseTypeID = p.course_type_id
                    WHERE 
                        aa.properties_value ->>'$.assessmentDate' IS NOT NULL AND (CAST(esar.properties ->> '$.syllabusSubType' AS CHAR) != 'MOOC' OR esar.properties ->> '$.syllabusSubType' IS NULL)";
            $falseNumberGeneratedStudents =  $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[BarcodeGenerationServiceMapper::GET_STUDENT_DETAILS]);
        }
        catch(\Exception $e)
        {
            throw new ExamControllerException($e->getCode(),$e->getMessage());
        }
        return($falseNumberGeneratedStudents);
    }
   
    
    
 
    
    
}