Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 212 |
| AttendanceReportService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
156.00 | |
0.00% |
0 / 212 |
| __construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 3 |
|||
| __clone | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
| getInstance | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 7 |
|||
| getDayWiseAttendanceReport | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 95 |
|||
| StudentLeaveBetweenTwoDates | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 15 |
|||
| getConsolidatedHourWiseAttendanceReport | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 90 |
|||
| <?php | |
| namespace com\linways\core\ams\professional\service; | |
| use com\linways\core\ams\professional\request\AttendanceDaywiseReportRequest; | |
| use com\linways\core\ams\professional\exception\ProfessionalException; | |
| use com\linways\core\ams\professional\service\BatchService; | |
| use com\linways\core\ams\professional\service\SemesterService; | |
| use com\linways\core\ams\professional\mapper\AttendanceReportServiceMapper; | |
| class AttendanceReportService extends BaseService | |
| { | |
| // /Condition 1 - Presence of a static member variable | |
| private static $_instance = null; | |
| private $mapper = []; | |
| // /Condition 2 - Locked down the constructor | |
| private function __construct() | |
| { | |
| $this->mapper = AttendanceReportServiceMapper::getInstance()->getMapper(); | |
| } | |
| // Prevent any oustide instantiation of this class | |
| // /Condition 3 - Prevent any object or instance of that class to be cloned | |
| private function __clone() | |
| { | |
| } | |
| // Prevent any copy of this object | |
| // /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; | |
| } | |
| /** | |
| * Get day-wise attendance report of batch | |
| * @param AttendanceDaywiseReportRequest | $request | |
| * @throws ProfessionalException | |
| * @return studentDetails | |
| */ | |
| public function getDayWiseAttendanceReport(AttendanceDaywiseReportRequest $request){ | |
| $request = $this->realEscapeObject($request); | |
| $isCurrentSem = SemesterService::getInstance ()->isCurrentSemester ( $request->batchID, $request->semID ); | |
| if($isCurrentSem){ | |
| $sql = "SELECT | |
| sa.studentID, | |
| sa.studentName, | |
| UPPER(sa.studentGender) as gender , | |
| sa.rollNo, | |
| sa.regNo, | |
| studentJoindate as studentJoinDate, | |
| studentAccount, | |
| a.isAbsent, | |
| st.staffName, | |
| a.isBlocked, | |
| a.hour | |
| FROM | |
| studentaccount sa | |
| INNER JOIN | |
| batches ba ON ba.batchID = sa.batchID | |
| INNER JOIN | |
| semesters sem ON sem.semID = ba.semID | |
| INNER JOIN | |
| semesters joinedSem ON sa.joiningSemId = joinedSem.semID | |
| LEFT JOIN | |
| attendance a ON sa.studentID = a.studentID AND a.attendanceDate = '$request->attendanceDate' | |
| LEFT JOIN | |
| staffaccounts st ON a.staffID = st.staffID | |
| WHERE | |
| sa.batchID = $request->batchID | |
| AND joinedSem.orderNo <= sem.orderNo | |
| ORDER BY sa.".$request->sortByColumn.", a.hour"; | |
| }else{ | |
| $semDetails = SemesterService::getInstance()->getSemDetailsBySemId($request->semID); | |
| $sql = "SELECT | |
| sa.studentID, | |
| sa.studentName, | |
| UPPER(sa.studentGender) as gender , | |
| sa.rollNo, | |
| sa.studentJoindate, | |
| sa.studentAccount, | |
| sa.regNo, | |
| a.isAbsent, | |
| st.staffName, | |
| a.isBlocked, | |
| a.hour | |
| FROM | |
| studentaccount sa | |
| INNER JOIN | |
| batches ba ON sa.batchID = ba.batchID | |
| INNER JOIN | |
| semesters joinedSem ON sa.joiningSemId = joinedSem.semID | |
| LEFT JOIN | |
| attendance a ON sa.studentID = a.studentID AND a.attendanceDate = '$request->attendanceDate' | |
| LEFT JOIN | |
| staffaccounts st ON a.staffID = st.staffID | |
| WHERE | |
| ba.batchID = $request->batchID | |
| AND joinedSem.orderNo <= $semDetails->orderNo | |
| UNION SELECT | |
| sa.studentID, | |
| sa.studentName, | |
| UPPER(sa.studentGender) as gender , | |
| sa.rollNo, | |
| sa.studentJoindate, | |
| sa.studentAccount, | |
| sa.regNo, | |
| a.isAbsent, | |
| st.staffName, | |
| a.isBlocked, | |
| a.hour | |
| FROM | |
| failed_students fs | |
| LEFT JOIN | |
| studentaccount sa ON fs.studentID = sa.studentID | |
| INNER JOIN | |
| semesters fsem ON fsem.semID = fs.failedInSemester | |
| INNER JOIN | |
| semesters joinedSem ON sa.joiningSemId = joinedSem.semID | |
| LEFT JOIN | |
| attendance a ON sa.studentID = a.studentID AND a.attendanceDate = '$request->attendanceDate' | |
| LEFT JOIN | |
| staffaccounts st ON a.staffID = st.staffID | |
| WHERE | |
| previousBatch = $request->batchID AND fsem.orderNo > $semDetails->orderNo | |
| AND joinedSem.orderNo <= $semDetails->orderNo | |
| ORDER BY $request->sortByColumn,hour"; | |
| } | |
| try{ | |
| $studentDetails = $this->executeQueryForList($sql,$this->mapper[AttendanceReportServiceMapper::GET_BATCH_ATTENDANCE_DETAILS]); | |
| return $studentDetails; | |
| } | |
| catch(\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * Get student leave report between 2 dates | |
| * @param $semId,$studentId,$fromDate,$toDate | |
| * @throws ProfessionalException | |
| * @return leaveDetails | |
| */ | |
| public function StudentLeaveBetweenTwoDates($semId,$studentId,$fromDate,$toDate){ | |
| $semId = $this->realEscapeString($semId); | |
| $studentId = $this->realEscapeString($studentId); | |
| $fromDate = $this->realEscapeString($fromDate); | |
| $toDate = $this->realEscapeString($toDate); | |
| $sql = "SELECT DISTINCT studentID,(select count(semID) from attendance where semID= $semId and studentID=$studentId and attendanceDate BETWEEN '$fromDate' AND '$toDate')as totalHours,(SELECT COUNT(isAbsent) FROM attendance WHERE semID = $semId AND studentID = $studentId AND isAbsent = 1 AND attendanceDate BETWEEN '$fromDate' AND '$toDate') AS absent,(SELECT COUNT(isAbsent) FROM attendance | |
| WHERE semID = $semId AND studentID = $studentId AND isAbsent = 0 AND attendanceDate BETWEEN '$fromDate' AND '$toDate') AS present,(SELECT COUNT(isAbsent) FROM attendance WHERE semID = $semId AND studentID = $studentId | |
| AND isAbsent = 2 AND attendanceDate BETWEEN '$fromDate' AND '$toDate') AS dutyleave,(SELECT COUNT(asla.id) FROM student_leave_application asla INNER JOIN student_leave_type aslt ON asla.leave_type_id = aslt.id AND aslt.isActive = 1 WHERE asla.student_id = $studentId AND aslt.code = 'DL' AND asla.start_date >= '$fromDate' AND CASE WHEN (asla.end_date = '0000-00-00' || asla.end_date IS NULL) THEN (asla.end_date = '0000-00-00' || asla.end_date IS NULL) ELSE asla.end_date <= '$toDate' END) AS appliedDutyleave FROM attendance WHERE studentID = $studentId AND attendanceDate BETWEEN '$fromDate' AND '$toDate'"; | |
| try{ | |
| $leaveDetails = $this->executeQueryForObject($sql); | |
| return $leaveDetails; | |
| } | |
| catch(\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * Get consolidated attendance report hour-wise | |
| * @param AttendanceDaywiseReportRequest | $request | |
| * @throws ProfessionalException | |
| * @return studentDetails | |
| */ | |
| public function getConsolidatedHourWiseAttendanceReport(AttendanceDaywiseReportRequest $request){ | |
| $request = $this->realEscapeObject($request); | |
| $isCurrentSem = SemesterService::getInstance ()->isCurrentSemester ( $request->batchID, $request->semID ); | |
| if($isCurrentSem){ | |
| $sql = "SELECT | |
| sa.studentID, | |
| sa.studentName, | |
| UPPER(sa.studentGender) as gender , | |
| sa.rollNo, | |
| sa.regNo, | |
| studentJoindate, | |
| studentAccount, | |
| a.isAbsent, | |
| a.isBlocked, | |
| a.hour, | |
| a.attendanceDate | |
| FROM | |
| batches ba | |
| INNER JOIN | |
| studentaccount sa ON ba.batchID = sa.batchID | |
| INNER JOIN | |
| semesters sem ON sem.semID = ba.semID | |
| INNER JOIN | |
| semesters joinedSem ON sa.joiningSemId = joinedSem.semID | |
| LEFT JOIN | |
| attendance a ON sa.studentID = a.studentID AND a.attendanceDate BETWEEN '$request->fromDate' AND '$request->toDate' | |
| WHERE | |
| ba.batchID = $request->batchID | |
| AND joinedSem.orderNo <= sem.orderNo | |
| ORDER BY sa.".$request->sortByColumn." ,a.attendanceDate, a.hour "; | |
| }else{ | |
| $semDetails = SemesterService::getInstance()->getSemDetailsBySemId($request->semID); | |
| $sql = "SELECT | |
| sa.studentID, | |
| sa.studentName, | |
| UPPER(sa.studentGender) as gender , | |
| sa.rollNo, | |
| sa.regNo, | |
| sa.studentJoindate, | |
| sa.studentAccount, | |
| sa.regNo, | |
| a.isAbsent, | |
| a.isBlocked, | |
| a.hour | |
| FROM | |
| studentaccount sa | |
| INNER JOIN | |
| batches ba ON sa.batchID = ba.batchID | |
| INNER JOIN | |
| semesters joinedSem ON sa.joiningSemId = joinedSem.semID | |
| LEFT JOIN | |
| attendance a ON sa.studentID = a.studentID AND a.attendanceDate = '$request->attendanceDate' | |
| WHERE | |
| ba.batchID = $request->batchID | |
| AND joinedSem.orderNo <= $semDetails->orderNo | |
| UNION SELECT | |
| sa.studentID, | |
| sa.studentName, | |
| UPPER(sa.studentGender) as gender , | |
| sa.rollNo, | |
| sa.regNo, | |
| sa.studentJoindate, | |
| sa.studentAccount, | |
| sa.regNo, | |
| a.isAbsent, | |
| st.staffName, | |
| a.isBlocked, | |
| a.hour | |
| FROM | |
| failed_students fs | |
| LEFT JOIN | |
| studentaccount sa ON fs.studentID = sa.studentID | |
| INNER JOIN | |
| semesters fsem ON fsem.semID = fs.failedInSemester | |
| INNER JOIN | |
| semesters joinedSem ON sa.joiningSemId = joinedSem.semID | |
| LEFT JOIN | |
| attendance a ON sa.studentID = a.studentID AND a.attendanceDate = '$request->attendanceDate' | |
| WHERE | |
| previousBatch = $request->batchID AND fsem.orderNo > $semDetails->orderNo | |
| AND joinedSem.orderNo <= $semDetails->orderNo | |
| ORDER BY $request->sortByColumn,hour"; | |
| } | |
| try{ | |
| $studentDetails = $this->executeQueryForList($sql,$this->mapper[AttendanceReportServiceMapper::GET_BATCH_ATTENDANCE_DETAILS]); | |
| return $studentDetails; | |
| } | |
| catch(\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| } |