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 / 10
CRAP
0.00% covered (danger)
0.00%
0 / 170
PseudoBatchService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 10
420.00
0.00% covered (danger)
0.00%
0 / 170
 getInstance
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 7
 getPseudoBatchStudentDetailsByPseudoBatchId
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 19
 getPseudoBatchStudentAssignmentMarks
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 30
 getPseudoBatchAssignmentSubjects
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 16
 getPseudoBatchExamSubjects
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 16
 getPseudoBatchStudentMarks
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 15
 getAttendanceDays
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 19
 getIsAbsentValue
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 17
 getTotalWorkingHours
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 17
 getPseudoBatchDetailsByPseudoBatchId
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 14
<?php
namespace com\linways\core\ams\professional\service;
use com\linways\core\ams\professional\request\IsAbsentValueRequest;
use com\linways\core\ams\professional\request\AttendanceDaysRequest;
use com\linways\core\ams\professional\request\AttendanceHoursRequest;
use com\linways\core\ams\professional\request\AttendanceRulesRequest;
use com\linways\core\ams\professional\exception\ProfessionalException;
use com\linways\core\ams\professional\request\PseudoBatchAssignmentListRequest;
use com\linways\core\ams\professional\request\PseudoBatchStudentMarkListRequest;
use com\linways\core\ams\professional\request\PseudoBatchExamSubjectsListRequest;
class PseudoBatchService extends BaseService
{
    // /Condition 1 - Presence of a static member variable
    private static $_instance = null;
    //  private $mapper = [];
    // /Condition 4 - Have a single globally accessible static method
    public static function getInstance()
    {
        if (!is_object(self::$_instance)) // or if( is_null(self::$_instance) ) or if( self::$_instance == null )
        {
            self::$_instance = new self();
        }
        return self::$_instance;
    }
    public function getPseudoBatchStudentDetailsByPseudoBatchId($id)
    {
        $id = $this->realEscapeString($id);
        $studentList = [];
        $sql = "SELECT sa.studentID, sa.rollNo, sa.studentName, 
                sa.studentEmail, sa.studentPhone, d.deptName, b.batchName,sa.batchID,sa.studentJoindate
                FROM pseudobatches pb
                INNER JOIN ps_relation pr ON pr.pseudobatchID = pb.pseudobatchID
                INNER JOIN studentaccount sa ON sa.studentID = pr.studentID
                INNER JOIN batches b ON b.batchID = sa.batchID
                INNER JOIN department d ON d.deptID = pb.deptID
                where pr.pseudobatchID=$id
                ORDER BY sa.batchID ASC , sa.studentName ASC";
        try {
            $studentList = $this->executeQueryForList($sql);
            return $studentList;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getPseudoBatchStudentAssignmentMarks(PseudoBatchAssignmentListRequest $request)
    {
        $request = $this->realEscapeObject($request);
        $assignmentMarkList = [];
        $sql = "SELECT 
        st.studentID,
        st.studentName,
        b.batchID,
        b.batchName,
        GROUP_CONCAT('{\"assignmentID\":', am.assignmentID,
                     ',\"assignmentMark\":', am.marksObtained,
                     ',\"subjectID\":', bm.subjectID,
                     ',\"maxMark\":',bm.max_mark,
            '}') AS assignments
    FROM
        ps_relation ps 
    INNER JOIN studentaccount st ON st.studentID = ps.studentID
    INNER JOIN batches b ON b.batchID = st.batchID
    LEFT JOIN batch_assignment bm ON st.batchID = bm.batchID AND bm.semID = $request->semesterId AND bm.assiNu = $request->assignmentNumber
    LEFT JOIN assignment_marks am on am.studentID = st.studentID and bm.assignmentID = am.assignmentID 
    WHERE
        am.csID IS NULL AND ps.pseudobatchID = $request->pseudoBatchId
    GROUP BY st.studentID
    ORDER BY st.studentID";
        try {
            $assignmentMarkList = $this->executeQueryForList($sql);
            return $assignmentMarkList;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getPseudoBatchAssignmentSubjects(PseudoBatchAssignmentListRequest $request)
    {
        $request = $this->realEscapeObject($request);
        $subjectBatchList = [];
        $sql = "SELECT s.subjectName,b.batchName,bm.max_mark FROM ps_relation ps 
        INNER JOIN studentaccount st ON st.studentID = ps.studentID
        INNER JOIN batches b ON b.batchID = st.batchID
        INNER JOIN batch_assignment bm ON bm.batchID = st.batchID
        INNER JOIN subjects s ON s.subjectID = bm.subjectID
        where ps.pseudobatchID = $request->pseudoBatchId AND bm.semID = $request->semesterId and bm.assiNu = $request->assignmentNumber GROUP BY st.batchID,bm.subjectID ORDER BY s.subjectName";
        try {
            $subjectBatchList = $this->executeQueryForList($sql);
            return $subjectBatchList;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getPseudoBatchExamSubjects(PseudoBatchExamSubjectsListRequest $request)
    {
        $request = $this->realEscapeObject($request);
        $subjectBatchList = [];
        $sql = "SELECT  exam.examID,exam.examTotalMarks,subj.subjectID,subj.subjectName FROM exam
        INNER JOIN subjects subj ON subj.subjectID=exam.subjectID
        INNER JOIN studentaccount sa ON sa.batchID=exam.batchID
        INNER JOIN ps_relation pr ON pr.studentID=sa.studentID 
        where exam.examTypeID=$request->examTypeId AND pr.pseudobatchID= $request->pseudoBatchId
        group by subj.subjectID";
        try {
            $subjectBatchList = $this->executeQueryForList($sql);
            return $subjectBatchList;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getPseudoBatchStudentMarks(PseudoBatchStudentMarkListRequest $request)
    {
        $request = $this->realEscapeObject($request);
        $studentMarkList = [];
        $sql = "SELECT sm.marksObtained, sm.percentage  FROM subjects subj
        INNER JOIN exam ON subj.subjectID = exam.subjectID 
        INNER JOIN student_marks sm ON exam.examID=sm.examID
        INNER JOIN studentaccount sa ON sa.studentID=sm.studentID
        where exam.examTypeID=$request->examTypeId AND sa.studentID=$request->studentId AND subj.subjectID=$request->subjectId";
        try {
            $studentMarkList = $this->executeQueryForList($sql);
            return $studentMarkList;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    
    public function getAttendanceDays(AttendanceDaysRequest $request)
    {
        //daywise
        $request = $this->realEscapeObject($request);
        $days = [];
        $sql = "SELECT 
                attendanceDate
            FROM
                attendance
            WHERE
                semID = $request->semId AND batchID = $request->batchId
                    AND attendanceDate BETWEEN '$request->startDate' AND '$request->endDate'
            GROUP BY attendanceDate
            ORDER BY attendanceDate";
        try {
            $days = $this->executeQueryForList($sql);
            return $days;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getIsAbsentValue(IsAbsentValueRequest $request)
    {
        //check
        //daywise
        $request = $this->realEscapeObject($request);
        $value = "";
        $sql = "SELECT t1.isAbsent 
            FROM attendance t1 
            WHERE  t1.attendanceDate=$request->date
            AND t1.batchID=$request->batchId
            AND t1.hour=$request->->hour
            AND t1.semID=$request->semId
            AND t1.studentID=$request->->studentId";
        try {
            $value = $this->executeQueryForList($sql);
            return $value;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getTotalWorkingHours(AttendanceHoursRequest $request)
    {
        //hourwise
        $request = $this->realEscapeObject($request);
        $count = "";
        $sql = "SELECT 
                COUNT(semID)
            FROM
                attendance
            WHERE
                semID = $request->semId AND studentID = $request->studentId
                    AND attendanceDate BETWEEN '$request->startDate' AND '$request->endDate'";
        try {
            $count = $this->executeQueryForList($sql);
            return $count;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getPseudoBatchDetailsByPseudoBatchId($pseudosubjectID)
    {
        $id = $this->realEscapeString($pseudosubjectID);
        $studentList = [];
        $sql = "SELECT subjectName as `name`,
                        pseudo_subject_type_id,
                        pseudo_subject_group_id 
                    FROM pseudosubjects 
                    WHERE pseudosubjectID=".$pseudosubjectID;
        try {
                return $this->executeQueryForObject($sql);
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
}
//getAttendanceMarkedDates
//getAttendanceRule