Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 14 |
CRAP | |
0.00% |
0 / 194 |
GradeService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 14 |
1482.00 | |
0.00% |
0 / 194 |
__construct | n/a |
0 / 0 |
1 | n/a |
0 / 0 |
|||||
__clone | n/a |
0 / 0 |
1 | n/a |
0 / 0 |
|||||
getInstance | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 4 |
|||
getExamGradingSchemeByCourseType | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
addSubjectGradeSchemeMapping | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 15 |
|||
getExamGradeSchemeBySubjectBatch | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 11 |
|||
getExamSemesterGradeBySchemeId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
getExamGradePointsBySchemeId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
addSubjectGradeSchemeMappingBySubject | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 15 |
|||
getExamGradingSchemeByCoursePattern | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 20 |
|||
getExamSemesterGradeByBatch | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 19 |
|||
updateSubjectGrades | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 19 |
|||
updateSemGrades | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 14 |
|||
getCgpaGrade | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 19 |
|||
getCgpaGradeDetails | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 13 |
|||
getExamGradeByScheme | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 15 |
<?php | |
namespace com\linways\core\ams\professional\service\examcontroller; | |
use com\linways\core\ams\professional\service\BaseService; | |
use com\linways\core\ams\professional\exception\ProfessionalException; | |
use stdClass; | |
class GradeService 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() { } | |
// 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; | |
} | |
/** | |
* @author Vishnu M | |
*/ | |
public function getExamGradingSchemeByCourseType ( $courseTypeId ) { | |
$courseTypeId = (int) $this->realEscapeString($courseTypeId); | |
$gradingScheme = []; | |
$sql = "SELECT schemeID, schemeName FROM exam_gradingscheme WHERE courseTypeID = '$courseTypeId' ORDER BY schemeName ASC "; | |
try { | |
$gradingScheme = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $gradingScheme; | |
} | |
/** | |
* Save Subject Grade scheme | |
* @author Vishnu M | |
*/ | |
public function addSubjectGradeSchemeMapping ( $courseTypeId, $batchStartYear, $semId, $gradingScheme, $subjectIdArray ) { | |
$courseTypeId = (int) $this->realEscapeString($courseTypeId); | |
$gradingScheme = (int) $this->realEscapeString($gradingScheme); | |
$batchStartYear = (int) $this->realEscapeString($batchStartYear); | |
$semId = (int) $this->realEscapeString($semId); | |
$subjectIdArray = $this->realEscapeArray($subjectIdArray); | |
$subjectIdString = implode(",", $subjectIdArray); | |
$sql = "INSERT INTO exam_subject_grading_scheme (batch_id, subject_id, grade_scheme_id) | |
SELECT DISTINCT sbs.batchID, sbs.subjectID, '$gradingScheme' AS gradeSchemeId FROM batches b INNER JOIN sbs_relation sbs ON (b.batchID = sbs.batchID) WHERE b.courseTypeID = '$courseTypeId' AND batchStartYear = '$batchStartYear' AND sbs.semID = '$semId' AND sbs.subjectID IN ($subjectIdString)"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return true; | |
} | |
public function getExamGradeSchemeBySubjectBatch ( $subjectId, $batchId ) { | |
$subjectId = (int) $this->realEscapeString($subjectId); | |
$batchId = (int) $this->realEscapeString($batchId); | |
$gradingScheme = null; | |
$sql = "SELECT egs.schemeID, egs.schemeName, egs.courseTypeID FROM exam_gradingscheme egs INNER JOIN exam_subject_grading_scheme esgs ON (egs.schemeID = esgs.grade_scheme_id) WHERE esgs.batch_id = '$batchId' AND esgs.subject_id = '$subjectId' "; | |
try { | |
$gradingScheme = $this->executeQueryForObject($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $gradingScheme; | |
} | |
public function getExamSemesterGradeBySchemeId ( $schemeId ) { | |
$schemeId = (int) $this->realEscapeString($schemeId); | |
$semesterGrades = null; | |
$sql = "SELECT schemeID, gradePointFrom, gradePointTo, letterGrade, className FROM exam_semestergrade WHERE schemeID = '$schemeId' ORDER BY gradePointTo DESC "; | |
try { | |
$semesterGrades = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $semesterGrades; | |
} | |
/** | |
* Get all the grade points according to the schemeid | |
* @param Integer $schemeId | |
* @return Array $examGrades | |
* @throws ProfessionalException | |
* @author Vishnu M | |
*/ | |
public function getExamGradePointsBySchemeId ( $schemeId ) { | |
$schemeId = (int) $this->realEscapeString($schemeId); | |
$examGrades = null; | |
$sql = "SELECT percentFrom, percentTo, letterGrade, gradePoint, failStatus FROM exam_gradepoints WHERE schemeID = '$schemeId' ORDER BY percentTo DESC "; | |
try { | |
$examGrades = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $examGrades; | |
} | |
public function addSubjectGradeSchemeMappingBySubject ( $subjectGradeScheme ) { | |
$subjectGradeScheme = $this->realEscapeArray($subjectGradeScheme); | |
try { | |
$sql = "INSERT INTO exam_subject_grading_scheme (subject_id, batch_id, grade_scheme_id) VALUES "; | |
if ( count ( $subjectGradeScheme ) ) { | |
foreach ( $subjectGradeScheme as $gradeScheme ) { | |
$values[] = "( ".$gradeScheme["subject"].", ".$gradeScheme["batch"].", ".$gradeScheme["gradeScheme"]." )"; | |
} | |
$sql .= implode ( ",", $values ); | |
$sql .= " ON DUPLICATE KEY UPDATE grade_scheme_id = VALUES(grade_scheme_id) "; | |
$this->executeQuery($sql); | |
} | |
} catch ( \Exception $e ) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/** | |
* @author Vishnu M | |
*/ | |
public function getExamGradingSchemeByCoursePattern ( $coursePatternId ) { | |
$coursePatternId = (int) $this->realEscapeString($coursePatternId); | |
$gradingScheme = []; | |
$sql = "SELECT | |
esg.semGradeID AS id, | |
esg.className AS name | |
FROM | |
course_pattern cp | |
INNER JOIN exam_gradingscheme egs ON | |
cp.courseTypeID = egs.courseTypeID | |
INNER JOIN exam_semestergrade esg ON | |
esg.schemeID = egs.schemeID | |
WHERE | |
cp.patternID = $coursePatternId"; | |
try { | |
$gradingScheme = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $gradingScheme; | |
} | |
/** | |
* Get exam semester grades corresponds to a batch | |
* @param $batchId | |
* @return $examGrades | |
* @author Vishnu M | |
*/ | |
public function getExamSemesterGradeByBatch ( $batchId ) { | |
$batchId = $this->realEscapeArray($batchId); | |
$batchId = is_array($batchId) ? implode(",",$batchId) : $batchId; | |
$examGrades = []; | |
$sql = "SELECT DISTINCT | |
esg.semGradeID AS id, | |
esg.className AS name | |
FROM | |
exam_semestergrade esg | |
INNER JOIN | |
assignedSemesterGradeBatches asgb ON (esg.schemeID = asgb.exam_gradingscheme_id) | |
WHERE | |
asgb.batches_id IN ($batchId)"; | |
try { | |
$examGrades = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $examGrades; | |
} | |
/* | |
Method for updating subject grades | |
@author Ranjith Balachandran | |
*/ | |
public function updateSubjectGrades($gradePointId,$percentFrom,$percentTo,$letterGrade,$failStatus,$gradePoint,$className=null) | |
{ | |
$sql = ''; | |
$gradePointId = $this->realEscapeString($gradePointId); | |
$percentFrom = $this->realEscapeString($percentFrom); | |
$percentTo = $this->realEscapeString($percentTo); | |
$letterGrade = $this->realEscapeString($letterGrade); | |
$failStatus = $this->realEscapeString($failStatus); | |
$gradePoint = $this->realEscapeString($gradePoint); | |
$className = $className !== null ? $this->realEscapeString($className) : null; | |
if ($className !== null) { | |
$updateColumns = " , className = '$className' "; | |
} | |
try{ | |
$sql = "UPDATE exam_gradepoints SET percentFrom = '$percentFrom', percentTo = '$percentTo' , letterGrade = '$letterGrade' , gradePoint = '$gradePoint' , failStatus = '$failStatus' $updateColumns WHERE gradePointID = $gradePointId"; | |
$this->executeQuery($sql); | |
}catch( \Exception $e){ | |
throw new AutonomousException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/* | |
Method for updating semester grades | |
@author Ranjith Balachandran | |
*/ | |
public function updateSemGrades($semGradeId,$gradePointFrom,$gradePointTo,$letterGrade,$className) | |
{ | |
$sql = ''; | |
$semGradeId = $this->realEscapeString($semGradeId); | |
$gradePointFrom = $this->realEscapeString($gradePointFrom); | |
$gradePointTo = $this->realEscapeString($gradePointTo); | |
$letterGrade = $this->realEscapeString($letterGrade); | |
$className = $this->realEscapeString($className); | |
try{ | |
$sql = "UPDATE exam_semestergrade SET gradePointFrom = '$gradePointFrom', gradePointTo = '$gradePointTo' , letterGrade = '$letterGrade' , className = '$className' WHERE semGradeID = $semGradeId"; | |
$this->executeQuery($sql); | |
}catch( \Exception $e){ | |
throw new AutonomousException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/** | |
* Get cgpa grade by cgpa,batchId | |
* @param Integer $cgpa,$batchId | |
* @return Array $grade | |
* @author Sibin | |
*/ | |
public function getCgpaGrade($cgpa,$batchId) | |
{ | |
$batchId = (int)$this->realEscapeString($batchId); | |
$cgpa = $this->realEscapeString($cgpa); | |
$cgpaGradeDetails = []; | |
$sql = "SELECT ecg.schemeID,ecg.percentFrom,ecg.percentTo,ecg.letterGrade,ecg.classname,ecg.failstatus from assignedCGPAGradeBatches acb | |
INNER JOIN exam_cgpa_gradepoints ecg ON ecg.schemeID = acb.exam_cgpa_gradingscheme_id | |
WHERE acb.batches_id ='$batchId' ORDER BY ecg.percentTo DESC"; | |
try { | |
$cgpaGradeDetails = $this->executeQueryForList($sql); | |
foreach ($cgpaGradeDetails as $grade) { | |
if ($grade->percentFrom <= $cgpa && $grade->percentTo >= $cgpa) { | |
return $grade; | |
} | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return null; | |
} | |
/** | |
* Get cgpa grade details by chpa,batchId | |
* @param Integer $cgpa,$batchId | |
* @return Array $grade | |
* @author Sibin | |
*/ | |
public function getCgpaGradeDetails($batchId) | |
{ | |
$batchId = (int)$this->realEscapeString($batchId); | |
$cgpaGradeDetails = []; | |
$sql = "SELECT ecg.schemeID,ecg.percentFrom,ecg.percentTo,ecg.letterGrade,ecg.classname,ecg.failstatus from assignedCGPAGradeBatches acb | |
INNER JOIN exam_cgpa_gradepoints ecg ON ecg.schemeID = acb.exam_cgpa_gradingscheme_id | |
WHERE acb.batches_id ='$batchId' ORDER BY ecg.percentTo DESC"; | |
try { | |
$cgpaGradeDetails = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $cgpaGradeDetails; | |
} | |
/** | |
* Get cgpa grade details by scheme,courseType,percent | |
* @param $request | |
* @return $grade | |
* @author Sibin | |
*/ | |
public function getExamGradeByScheme($schemeId,$courseTypeId,$percent) | |
{ | |
$schemeId = $this->realEscapeString($schemeId); | |
$courseTypeId = $this->realEscapeString($courseTypeId); | |
$percent = $this->realEscapeString($percent); | |
$garde = new stdClass; | |
$sql = "SELECT t1.letterGrade | |
FROM exam_gradepoints t1, exam_gradingscheme t2 | |
WHERE t2.courseTypeID = '$courseTypeId' AND t2.schemeID = '$schemeId' AND t2.schemeID = t1.schemeID AND t1.percentFrom <= '$percent' AND t1.percentTo >= '$percent'"; | |
try { | |
$garde = $this->executeQueryForObject($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $garde; | |
} | |
} |