Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 15 |
CRAP | |
0.00% |
0 / 225 |
SubBatchService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 15 |
2862.00 | |
0.00% |
0 / 225 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
__clone | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
getInstance | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 5 |
|||
updateSubBatchPseudoSubjectId | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 12 |
|||
getSubbatchOfAStudentForASubject | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 15 |
|||
getSubbatchesOfAStudentForASubject | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 24 |
|||
getSubBatch | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 20 |
|||
createSubBatch | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 20 |
|||
assignStudentsToSubBatch | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 14 |
|||
getSubbatchDetailsByRequest | |
0.00% |
0 / 1 |
110.00 | |
0.00% |
0 / 29 |
|||
getSubBatchBySBS | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
getSubBatchesBySBS | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 18 |
|||
deleteSubbatch | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 22 |
|||
getStudentsFromSubBatch | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
getSubBatchByBatchExam | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 23 |
<?php | |
namespace com\linways\core\ams\professional\service; | |
use com\linways\core\ams\professional\exception\ProfessionalException; | |
use com\linways\core\ams\professional\request\CreateSubBatchRequest; | |
use com\linways\core\ams\professional\request\GetSubBatchRequest; | |
class SubBatchService extends BaseService | |
{ | |
// /Condition 1 - Presence of a static member variable | |
private static $_instance = null; | |
// /Condition 2 - Locked down the constructor | |
private function __construct() | |
{ | |
} | |
// 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; | |
} | |
/** | |
* @param $id | |
* @throws ProfessionalException | |
*/ | |
public function updateSubBatchPseudoSubjectId($id) | |
{ | |
$id = (int)$this->realEscapeString($id); | |
if (empty($id)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
$sql = "UPDATE subbatches SET psID = 0 WHERE psID =$id"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $request | |
* @return int | |
* @throws ProfessionalException | |
* @author jithinvijayan | |
*/ | |
public function getSubbatchOfAStudentForASubject($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$query = "SELECT DISTINCT ss.subbatchID | |
FROM sbs_relation sbsr | |
INNER JOIN subbatch_sbs ssbs ON sbsr.sbsID=ssbs.sbsID | |
INNER JOIN subbatch_student ss ON ssbs.subbatchID=ss.subbatchID | |
WHERE sbsr.batchID='$request->batchId' AND sbsr.semID='$request->semesterId' | |
AND sbsr.subjectID='$request->subjectId' AND ss.studentID='$request->studentId';"; | |
try { | |
$subbatchId = $this->executeQueryForObject($query); | |
return $subbatchId ? $subbatchId->subbatchID : 0; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* To get the subbatch Ids of a student for a subject return array of Ids. | |
* Slight varition of getSubbatchOfAStudentForASubject. | |
* it also check staffId in query condition if present in $request. | |
* | |
* @param $request | |
* @return array | |
* @throws ProfessionalException | |
* @author Sooraj S | |
*/ | |
public function getSubbatchesOfAStudentForASubject($request) | |
{ | |
$emptySubbatchId = array(0); | |
$request = $this->realEscapeObject($request); | |
$query = "SELECT DISTINCT JSON_ARRAYAGG(ss.subbatchID) as subbatches | |
FROM sbs_relation sbsr | |
INNER JOIN subbatch_sbs ssbs ON sbsr.sbsID=ssbs.sbsID | |
INNER JOIN subbatch_student ss ON ssbs.subbatchID=ss.subbatchID | |
WHERE sbsr.batchID='$request->batchId' AND sbsr.semID='$request->semesterId' | |
AND sbsr.subjectID='$request->subjectId' AND ss.studentID='$request->studentId'"; | |
if($request->staffId) | |
{ | |
$query .=" AND sbsr.staffID='$request->staffId'"; | |
} | |
try { | |
$subbatchId = json_decode( $this->executeQueryForObject($query)->subbatches ); | |
if (empty($subbatchId)){ | |
return $emptySubbatchId; | |
} else { | |
return $subbatchId; | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param GetSubBatchRequest $request | |
* @return Object | |
* @throws ProfessionalException | |
* @author jithinvijayan | |
*/ | |
public function getSubBatch(GetSubBatchRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->pseudoSubjectId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_PSEUDO_SUBJECT_ID, "Pseudo subject details not found"); | |
} | |
if (empty($request->batchId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_BATCH_ID, "Invalid batch details given"); | |
} | |
if (empty($request->semesterId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_SEMESTER_ID, "Invalid semester details given"); | |
} | |
$sql = "SELECT subbatchID as id,batchID as batchId | |
FROM subbatches | |
WHERE psID = $request->pseudoSubjectId AND batchID = $request->batchId AND semID = $request->semesterId"; | |
try { | |
return $this->executeQueryForObject($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Creating sub batch | |
* | |
* @param CreateSubBatchRequest $request | |
* @return Object | |
* @throws ProfessionalException | |
* @author jithinvijayan | |
*/ | |
public function createSubBatch(CreateSubBatchRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->name)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_SUB_BATCH_NAME, "Invalid sub-batch name given"); | |
} | |
if (empty($request->batchId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_BATCH_ID, "No batches assigned to the sub-batch"); | |
} | |
if (empty($request->semesterId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_SEMESTER_ID, "No semesters assigned to the sub-batch"); | |
} | |
$sql = "INSERT INTO subbatches(subbatchName,description,batchID,semID,psID) | |
VALUES ('" . $request->name . "','" . $request->description . "',$request->batchId, $request->semesterId, | |
$request->pseudoSubjectId)"; | |
try { | |
return $this->executeQueryForObject($sql, true); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $subBatchId | |
* @param $studentIds | |
* @return Object | |
* @throws ProfessionalException | |
* @author jithinvijayan | |
*/ | |
public function assignStudentsToSubBatch($subBatchId, $studentIds) | |
{ | |
$sqlValues = ""; | |
foreach ($studentIds as $studentId) { | |
$sqlValues .= "(" . $subBatchId . ", " . $studentId . ",1,utc_timestamp(),1,utc_timestamp),"; | |
} | |
$sqlValues = rtrim($sqlValues, ","); | |
$sql = "INSERT INTO subbatch_student(subbatchID, studentID,created_by,created_date,updated_by,updated_date) | |
VALUES " . $sqlValues; | |
try { | |
return $this->executeQueryForObject($sql, true); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
public function getSubbatchDetailsByRequest($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$condition = ""; | |
$condition .= $request->staffId?" AND sbs.staffID = $request->staffId ":""; | |
$condition .= $request->batchId?" AND sbs.batchID = $request->batchId ":""; | |
$condition .= $request->subjectId?" AND sbs.subjectID = $request->subjectId ":""; | |
$condition .= $request->semId?" AND sbs.semID = $request->semId ":""; | |
$condition .= $request->sbsId?" AND sbs.sbsId = $request->sbsId ":""; | |
$condition .= $request->subbatchId?" AND ssbs.subbatchID = $request->subbatchId ":""; | |
$condition .= (int)$request->pseudosubjectId?" AND psbs.pseudosubjectID = $request->pseudosubjectId ":""; | |
if($condition) | |
{ | |
try { | |
$sql = "SELECT sbs.sbsID,group_concat(sub.subbatchID) as subbatchID,psbs.pseudosubjectID,pst.code FROM sbs_relation sbs | |
LEFT JOIN subbatch_sbs ssbs ON ssbs.sbsID = sbs.sbsID | |
LEFT JOIN subbatches sub ON sub.subbatchID = ssbs.subbatchID AND sub.batchID = sbs.batchID AND sub.semID = sbs.semID | |
LEFT JOIN pseudosubjects_sbs psbs ON psbs.sbsID = sbs.sbsID | |
LEFT JOIN pseudosubjects ps ON ps.pseudosubjectID = psbs.pseudosubjectID AND ps.isFinalized = 1 | |
INNER JOIN pseudo_subject_type pst on pst.id = ps.pseudo_subject_type_id | |
WHERE 1=1 $condition group by sbs.sbsID;"; | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
else { | |
return false; | |
} | |
} | |
/** | |
* @param $sbsId | |
* @return Object | |
* @throws ProfessionalException | |
* @author sibin | |
*/ | |
public function getSubBatchBySBS($sbsId) | |
{ | |
$sbsId = $this->realEscapeString($sbsId); | |
$sql = "SELECT ssbs.subbatchID from subbatch_sbs ssbs | |
where ssbs.sbsID='$sbsId'"; | |
try { | |
return $this->executeQueryForObject($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $sbsIds | |
* @return Object | |
* @throws ProfessionalException | |
* @author sibin | |
*/ | |
public function getSubBatchesBySBS($staffDetails) | |
{ | |
$sbsIdString=""; | |
$staffDetails = $this->realEscapeArray($staffDetails); | |
foreach($staffDetails as $staff){ | |
if($sbsIdString){ | |
$sbsIdString= $sbsIdString. ", $staff->sbsID"; | |
}else{ | |
$sbsIdString ="$staff->sbsID"; | |
} | |
} | |
$sql = "SELECT distinct ssbs.subbatchID from subbatch_sbs ssbs | |
where ssbs.sbsID in ($sbsIdString)"; | |
try { | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $sbsId | |
* @return Object | |
* @throws ProfessionalException | |
* @author sibin | |
*/ | |
public function deleteSubbatch($id) | |
{ | |
$id = $this->realEscapeString($id); | |
if(!$id){ | |
throw new ProfessionalException(ProfessionalException::INVALID_PSEUDO_SUBJECT_ID,'Invalid Sub-Batch'); | |
} | |
$deleteStudentsExamMarks = "DELETE sm FROM student_marks sm | |
INNER JOIN exam e ON e.examID = sm.examID | |
WHERE e.subbatchID = '$id';"; | |
$deleteStudentsExams = "DELETE FROM exam WHERE subbatchID = '$id'"; | |
$deleteStudents = "DELETE FROM subbatch_student WHERE subbatchID = '$id'"; | |
$deleteSubBatchSbs = "DELETE FROM subbatch_sbs WHERE subbatchID = '$id'"; | |
$deleteSubBatch = "DELETE FROM subbatches WHERE subbatchID = '$id'"; | |
try { | |
$this->executeQuery($deleteStudentsExamMarks); | |
$this->executeQuery($deleteStudentsExams); | |
$this->executeQuery($deleteStudents); | |
$this->executeQuery($deleteSubBatchSbs); | |
$this->executeQuery($deleteSubBatch); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $subBatchId | |
* @return Array | |
* @throws ProfessionalException | |
* @author Ajay | |
*/ | |
public function getStudentsFromSubBatch($subBatchId) | |
{ | |
$staffDetails = $this->realEscapeString($subBatchId); | |
$sql = "SELECT s.studentID,s.studentName FROM subbatch_student ss INNER JOIN studentaccount s ON ss.studentID = s.studentID WHERE ss.subbatchID =$subBatchId"; | |
try { | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $request | |
* @return Object | |
* @throws ProfessionalException | |
* @author Sibin | |
*/ | |
public function getSubBatchByBatchExam($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$condition = ""; | |
$joinSubBatch = "LEFT"; | |
if($request->subBatchId){ | |
$condition = " AND e.subbatchID IN ($request->subBatchId)"; | |
} | |
if($request->getSubBatchOnly){ | |
$joinSubBatch = "INNER"; | |
} | |
$sql = "SELECT e.created_by,e.subbatchID,e.examID,s.subbatchName from exam e | |
$joinSubBatch JOIN subbatches s ON s.subbatchID = e.subbatchID | |
where e.batchID='$request->batchId' and e.semID='$request->semId' and e.examTypeID='$request->examTypeId' and e.subjectID = '$request->subjectId' $condition"; | |
try { | |
if($request->getList){ | |
return $this->executeQueryForList($sql); | |
}else{ | |
return $this->executeQueryForObject($sql); | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
} |