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()); | |
} | |
} | |
} |