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 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 167
ProgramResultService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
72.00
0.00% covered (danger)
0.00%
0 / 167
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 2
 getOverAllStudentMarkDetails
0.00% covered (danger)
0.00%
0 / 1
56.00
0.00% covered (danger)
0.00%
0 / 165
<?php
namespace com\linways\ec\core\service;
use com\linways\ec\core\dto\ExamRegistrationBatch;
use com\linways\ec\core\request\SearchRuleRequest;
use com\linways\ec\core\service\RuleService;
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\mapper\ProgramResultServiceMapper;
use com\linways\core\ams\professional\service\CommonService;
use com\linways\core\ams\professional\constant\SettingsConstants;
use com\linways\ec\core\service\CommonExamService;
class ProgramResultService extends BaseService
{
    use MakeSingletonTrait;
    private function __construct() {
        $this->mapper = ProgramResultServiceMapper::getInstance()->getMapper();
    }
     /**
     * get All Registered Students Details
     * @param $searchRequest 
     */
    public function getOverAllStudentMarkDetails($searchRequest) {
        $searchRequest = $this->realEscapeObject($searchRequest);
        try
        {
            $joinQuery = "";
            $subjectOrderBy = CommonService::getInstance()->getSettings(SettingsConstants::EXAM_CONTROLLER, SettingsConstants::SUBJECT_ORDER_TAKEN_BY);
            if($subjectOrderBy == "ORDER"){
                $orderBy = " ORDER BY spa.properties->>'$.registerNumber' ASC , CAST(aps.properties ->> '$.orderNo' AS UNSIGNED) ASC , CAST(act.properties ->> '$.orderNo' AS UNSIGNED) ASC";
            }
            else{
                $orderBy = " ORDER BY spa.properties->>'$.registerNumber' ASC , CAST(aps.properties ->> '$.priority' AS UNSIGNED) DESC , CAST(act.properties ->> '$.orderNo' AS UNSIGNED) ASC";
            }
            $whereQuery = "";
            if(!empty($searchRequest->studentId)) {
                $studentIdString = is_array($searchRequest->studentId) ? "'" . implode("','",$searchRequest->studentId) . "'" : "'".$searchRequest->studentId."'";
                $whereQuery .= " AND sa.studentID IN ( $studentIdString )";
            }
            if(!empty($searchRequest->groupId)) {
                $groupIdString = is_array($searchRequest->groupId) ? "'" . implode("','",$searchRequest->groupId) . "'" : "'".$searchRequest->groupId."'";
                $whereQuery .= " AND g.id IN ( $groupIdString )";
            }
            $query = "SELECT DISTINCT
                        sa.studentID AS id,
                        sa.studentID AS studentId,
                        sa.studentName,
                        spa.properties->>'$.registerNumber' AS regNo,
                        spa.properties->>'$.rollNumber' AS rollNo,
                        sa.admissionNo,
                        sa.myImage,
                        sa.studentGender,
                        g.id AS groupId,
                        g.name AS groupName,
                        act.id AS academicTermId,
                        act.name AS academicTermName,
                        act.properties ->> '$.orderNo' AS academicTermOrderNo,
                        dept.deptID,
                        deg.name AS degreeName,
                        deg.id AS degreeId,
                        dept.deptName,
                        ct.courseTypeID,
                        ct.typeName AS courseTypeName,
                        g.properties ->> '$.startYear' AS academicYear,
                        g.properties ->> '$.finalTermId' AS finalTermId,
                        
                        esmdsem.mark_details ->>'$.sgpa' AS semesterSgpa,
                        esmdsem.mark_details ->>'$.percentage' AS semesterPercentage,
                        esmdsem.mark_details ->>'$.grade' AS semesterGrade,
                        esmdsem.mark_details ->>'$.markObtained' AS semesterMarkObtained,
                        esmdsem.mark_details ->>'$.class' AS semesterClass,
                        esmdsem.mark_details ->>'$.totalMarks' AS semesterTotalMarks,
                        esmdsem.mark_details ->>'$.credit' AS semesterCredit,
                        esmdsem.mark_details ->>'$.gradePoint' AS semesterGradePoint,
                        esmdsem.mark_details ->>'$.creditGradePoint' AS semesterCreditGradePoint,
                        esmdsem.mark_history AS semesterMarkHistory,
                        esmdsem.mark_details AS semesterMarkDetails,
                        esmdsem.failed_status AS semesterFailedStatus,
                        s.code AS subjectCode,
                        aps.properties ->> '$.syllabusName' AS syllabusName,
                        aps.properties ->> '$.categoryId' AS subCategoryId,
                        ap.properties ->> '$.order' AS subjectOrder,
                        s.name AS subjectName,
                        aps.id AS academicPaperSubjectId,
                        esmdsubcon.mark_details ->>'$.markObtained' AS subjectMarkObtained,
                        esmdsubcon.mark_details ->>'$.isExternalFailed' AS isExternalFailed,
                        esmdsubcon.mark_details ->>'$.externalGrade' AS subjectExtrenalGrade,
                        esmdsubcon.mark_details ->>'$.externalGradePoint' AS subjectExternalGradePoint,
                        esmdsubcon.mark_details ->>'$.wgpa' AS subjectWgpa,
                        esmdsubcon.mark_details->>'$.attendanceStatus' AS subjectAttendanceStatus,
                        esmdsubcon.mark_details->>'$.internalAttendanceStatus' AS internalAttendanceStatus,
                        esmdsubcon.mark_details ->>'$.internalMark' AS internalMark,
                        
                        esmdsubcon.class AS subjectClass,
                        esmdsubcon.percentage AS subjectPercentage,
                        esmdsubcon.grade AS subjectGrade,
                        esmdsubcon.failed_status AS subjectFailedStatus,
                        CAST(esmdsubcon.mark_details ->>'$.externalMark' AS DECIMAL(8,2)) AS externalMark,
                        esmdsubcon.mark_details ->>'$.gradePoint' AS subGradePoint,
                        esmdsubcon.mark_details ->>'$.gradePoint' AS subjectGradePoint,
                        esmdsubcon.mark_details ->>'$.creditGradePoint' AS subCreditGradePoint,
                        esmdsubcon.mark_details ->>'$.creditGradePoint' AS subjectCreditGradePoint,
                        esmdsubcon.mark_details ->>'$.internalResultStatus' AS subjectInternalResultStatus,
                        esmdsubcon.mark_details ->>'$.internalAttendance' AS subjectInternalAttendance,
                        esmdsubcon.mark_details ->>'$.internalGrade' AS subjectInternalGrade,
                        esmdsubcon.mark_details ->>'$.internalGradePoint' AS subjectInternalGradePoint,
                        esmdsubcon.mark_details ->>'$.credit' AS subjectCredit,
                        esmdsubcon.mark_details ->>'$.externalMaxMark' AS externalMaxMark,
                        esmdsubcon.mark_details ->>'$.internalMaxMark' AS internalMaxMark,
                        esmdsubcon.mark_details ->>'$.totalMarks' AS subjectTotalMarks,
                        esmdsubcon.mark_details ->>'$.isExternal' AS isExternal,
                        esmdsubcon.mark_details ->>'$.isInternal' AS isInternal,
                        esmdsubcon.mark_details ->>'$.isInternalFailed' AS isInternalFailed,
                        esmdsubcon.mark_details ->>'$.categoryId' AS subjectCategoryId,
                        IF(esmdsubcon.mark_details ->>'$.categoryName',esmdsubcon.mark_details ->>'$.categoryName','-') AS subjectCategoryName,
                        esmdsubcon.mark_details ->>'$.categoryCode' AS subjectCategoryCode,
                        esmdsubcon.mark_details ->>'$.internalPassPercentage' AS subjectInternalPassPercentage,
                        esmdsubcon.mark_details ->>'$.externalPassPercentage' AS subjectExternalPassPercentage,
                        esmdsubcon.mark_details ->>'$.aggregatePassPercentage' AS subjectAggregatePassPercentage,
                        esmdsubcon.mark_details ->>'$.latestExamYear' AS latestExamYear,
                        esmdsubcon.mark_details ->>'$.latestExamMonth' AS latestExamMonth,
                        esmdsubcon.mark_details ->>'$.latestExamType' AS latestExamType,
                        esmdsubcon.mark_history AS subjectMarkHistory,
                        esmdsubcon.mark_details AS subjectMarkDetails,
                       
                        ecmdcourse.mark_details ->>'$.cgpa' AS cgpa,
                        ecmdcourse.percentage AS overallPercentage,
                        ecmdcourse.mark_details ->>'$.grade' AS overallGrade,
                        ecmdcourse.mark_details ->>'$.class' AS overallClass,
                        ecmdcourse.mark_details ->>'$.markObtained' AS courseObtainedMark,
                        ecmdcourse.mark_details ->>'$.totalMarks' AS courseTotalMark,
                        ecmdcourse.mark_details ->>'$.creditxMark' AS courseCreditxMark,
                        ecmdcourse.mark_details ->>'$.creditGradePoint' AS courseCreditGradePoint,
                        ecmdcourse.mark_details ->>'$.credit' AS courseTotalCredit,
                        ecmdcourse.mark_details ->>'$.wgp' AS courseWgp,
                        ecmdcourse.mark_details ->>'$.wgpa' AS courseWgpa,
                        ecmdcourse.mark_details ->>'$.gradePoint' AS courseGradePoint,
                        ecmdcourse.failed_status AS courseFailedStatus
                        
                    FROM
                        `groups` g
                    INNER JOIN ec_exam_registration_batch eerb ON
                        eerb.groups_id = g.id
                    INNER JOIN ec_exam_registration_subject eers ON
                        eers.ec_exam_registration_batch_id = eerb.id
                    INNER JOIN cm_academic_paper_subjects aps ON 
                        eers.cm_academic_paper_subjects_id = aps.id
                    INNER JOIN cm_academic_paper ap ON 
                        ap.id = aps.cm_academic_paper_id
                    INNER JOIN v4_ams_subject s ON 
                        aps.ams_subject_id = s.id
                    INNER JOIN ec_exam_registration eer ON
                        eer.id = eerb.ec_exam_registration_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
                        CAST(esar.properties ->> '$.registrationStatus' AS CHAR) = 'REGISTERED' AND 
                        CAST(esar.properties ->> '$.feeStatus' AS CHAR) = 'PAID'
                    INNER JOIN department dept ON
                        dept.deptID = g.properties ->> '$.departmentId'
                    INNER JOIN program p ON
                        p.id = g.properties ->> '$.programId'
                    INNER JOIN student_program_account spa ON 
                        spa.current_program_id = p.id AND 
                        spa.student_id = esar.student_id AND
                        spa.properties->>'$.academicStatus' IN ('ACTIVE','COMPLETED')
                    INNER JOIN studentaccount sa ON 
                        sa.studentID = esar.student_id
                    INNER JOIN degree deg ON
                        deg.id = p.degree_id
                    INNER JOIN `course_type` ct ON
                        ct.courseTypeID = p.course_type_id
                    INNER JOIN  academic_term act ON 
                        act.id = CAST(eerb.properties ->> '$.academicTermId'AS CHAR) AND 
                        act.type = 'SEMESTER'
                    INNER JOIN ec_consolidated_subject_mark_details esmdsubcon ON
                        esmdsubcon.groups_id = eerb.groups_id AND esmdsubcon.cm_academic_paper_subjects_id = eers.cm_academic_paper_subjects_id AND esmdsubcon.student_id = sa.studentID 
                    INNER JOIN ec_semester_mark_details esmdsem ON
                        esmdsem.groups_id = eerb.groups_id AND 
                        esmdsem.academic_term_id = act.id AND 
                        esmdsem.student_id = sa.studentID 
                    INNER JOIN  ec_course_mark_details ecmdcourse ON
                        ecmdcourse.groups_id = eerb.groups_id AND ecmdcourse.student_id = sa.studentID 
                    WHERE 1=1 ";
            $studentMarkDetails = $this->executeQueryForList($query.$whereQuery.$orderBy, $this->mapper[ProgramResultServiceMapper::OVER_ALL_MARK_DETAILS]);
        }
        catch (\Exception $e)
        {
            throw new ExamControllerException($e->getCode(),$e->getMessage());
        }
        return $studentMarkDetails;
    }
   
}