Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 27 |
CRAP | |
0.00% |
0 / 587 |
SupplyExamService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 27 |
6006.00 | |
0.00% |
0 / 587 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
__clone | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
getInstance | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 4 |
|||
getSupplyExams | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
insertbatches | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 19 |
|||
getSupplyList | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 12 |
|||
insertNotifications | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 22 |
|||
checkThisExamRegisSpecialExam | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 12 |
|||
checkThisStudentHasSpecialExam | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 14 |
|||
getSupplySemId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 12 |
|||
getFailedStudents | |
0.00% |
0 / 1 |
156.00 | |
0.00% |
0 / 78 |
|||
addSupplyImproveStudentSubjectDetails | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 21 |
|||
getRegisteredSupplyExamSubjectsByStudentIdAndRegId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 30 |
|||
getIssupplyByExamTypeId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 11 |
|||
getCommonFeeTypesForSupplyExamRegisterApplication | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 22 |
|||
getSubjectFeeTypesForSupplyExamRegisterApplication | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 21 |
|||
getSumOfSubjectFeesForSupplyExamRegisterApplication | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 16 |
|||
getFeesWithMaxFeeLimitForSupplyExamRegisterApplication | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 26 |
|||
getSupplyImproveExamFine | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 17 |
|||
verifyStudentSupplyExamPayment | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 25 |
|||
supplyExamMonthAndYearSemesterWise | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 41 |
|||
addRemarksStudentSupplyExamPayment | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 13 |
|||
editStudentSupplyExamPayment | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 30 |
|||
getSupplyImproveRegistrationStatus | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 11 |
|||
subjectSupplyAttemptCountOfStudent | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 30 |
|||
supplyExamMonthAndYearStudentWise | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 43 |
|||
supplyExamMonthAndYearSemesterWiseByStudent | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 45 |
<?php | |
namespace com\linways\core\ams\professional\service; | |
use com\linways\core\ams\professional\service\ExamSupplementaryService; | |
use com\linways\core\ams\professional\service\examcontroller\finalMarkList\ConsolidatedMarkReportService; | |
use com\linways\core\ams\professional\request\examcontroller\ConsolidatedMarkReportRequest; | |
use com\linways\core\ams\professional\exception\ProfessionalException; | |
use com\linways\core\ams\professional\mapper\SupplyExamServiceMapper; | |
use com\linways\core\ams\professional\dto\Department; | |
class SupplyExamService extends BaseService | |
{ | |
private static $_instance = null; | |
// /Condition 2 - Locked down the constructor | |
private function __construct() { | |
$this->mapper = SupplyExamServiceMapper::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; | |
} | |
/** | |
* @author Ranjith | |
* get Supply Exam List | |
* return Supply Exams | |
*/ | |
public function getSupplyExams($sortBy = 'supplyDesc',$sortOrder = 'ASC') { | |
$supplyExams = null; | |
$sql = "SELECT id as Id,supplyDesc as supplyDesc FROM exam_supplementary ORDER BY $sortBy $sortOrder"; | |
try { | |
$supplyExams = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $supplyExams; | |
} | |
/** | |
* Insert batchID to supply_improve_batches | |
* @author Aswin | |
* @param $batchID | |
* @param $supplyID | |
* @throws ProfessionalException | |
* @return string | |
*/ | |
public function insertbatches($batchID,$supplyID) | |
{ | |
$batchID=$this->realEscapeString($batchID); | |
$supplyID=$this->realEscapeString($supplyID); | |
$query="delete from supply_improve_batches where batchID=$batchID and exam_supplementary_id=$supplyID and current_semID=(select semID from batches where batchID=$batchID)"; | |
try{ | |
$response=$this->executeQuery($query); | |
}catch (\Exception $e) | |
{ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
$query="insert into supply_improve_batches(batchID,exam_supplementary_id,current_semID) values ($batchID,$supplyID,(select semID from batches where batchID=$batchID))"; | |
try{ | |
$response=$this->executeQuery($query); | |
}catch(\Exception $e) | |
{ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return "inserted"; | |
} | |
/** | |
* get supplyids from supply_improve_batches of a batch | |
* @author Aswin | |
* @param $batchID | |
* @param $semID | |
* @throws ProfessionalException | |
* @return object|array|\com\linways\base\util\$objectList[] | |
*/ | |
public function getSupplyList($batchID,$semID) | |
{ | |
$batchID=$this->realEscapeString($batchID); | |
$semID=$this->realEscapeString($semID); | |
$query="SELECT exam_supplementary_id from supply_improve_batches where batchID=$batchID and current_semID <= ".$semID.""; | |
try{ | |
$response=$this->executeQueryForList($query); | |
}catch(\Exception $e) | |
{ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $response; | |
} | |
/** | |
* insert studentids into student_message_alerts | |
* @author Aswin | |
* @param unknown $studentIDs | |
* @param unknown $supimp | |
* @param unknown $supplyID | |
* @throws ProfessionalException | |
* @return object|NULL|\com\linways\base\util\$objectList[] | |
*/ | |
public function insertNotifications($studentIDs,$supimp,$supplyID) | |
{ | |
$supimp=$this->realEscapeString($supimp); | |
$supplyID=$this->realEscapeString($supplyID); | |
foreach ($studentIDs as $r) | |
{ | |
$query = "delete from student_message_alerts where studentID=$r->studentID and type=$supimp and typeID=$supplyID"; | |
try{ | |
$response=$this->executeQueryForObject($query); | |
}catch(\Exception $e) | |
{ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
$query = "INSERT INTO student_message_alerts (studentID, type, typeID) VALUES (".$r->studentID.",".$supimp.",".$supplyID.")"; | |
try{ | |
$response=$this->executeQueryForObject($query,true); | |
}catch(\Exception $e) | |
{ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
} | |
return "inserted"; | |
} | |
/** | |
* Method for checking whether this supply examis special exam or not | |
* @param unknown $supplyExamRegId | |
* @throws ProfessionalException | |
* @return unknown | |
* @author Ranjith Balachandran | |
*/ | |
public function checkThisExamRegisSpecialExam($supplyExamRegId) | |
{ | |
$sql = ''; | |
$supplyExamRegId = $this->realEscapeObject($supplyExamRegId); | |
$isSpecialExam = null; | |
try{ | |
$sql = "SELECT isSpecialExam AS isSpecialExam,considerFlag AS considerFlag FROM exam_supplementary WHERE id = $supplyExamRegId"; | |
$isSpecialExam = $this->executeQueryForObject($sql); | |
}catch (\Exception $e){ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $isSpecialExam; | |
} | |
/** | |
* Method for checking whether this student has written this special exam or not | |
* @param unknown $supplyExamRegId | |
* @param unknown $supplyExamId | |
* @param unknown $studentId | |
* @throws ProfessionalException | |
* @return unknown | |
* @author Ranjith Balachandran | |
*/ | |
public function checkThisStudentHasSpecialExam($supplyExamRegId,$supplyExamId,$studentId) | |
{ | |
$supplyExamRegId = $this->realEscapeObject($supplyExamRegId); | |
$supplyExamId = $this->realEscapeObject($supplyExamId); | |
$studentId = $this->realEscapeObject($studentId); | |
$sql = ''; | |
$studentSpecialExamPresent = null; | |
try{ | |
$sql = "SELECT studentaccount_id AS studentId,regularExamId AS regularExamId FROM student_reverted_special_exam_mark_details WHERE special_exam_id = $supplyExamRegId AND supplyExamId = $supplyExamId AND studentaccount_id = $studentId"; | |
$studentSpecialExamPresent = $this->executeQueryForObject($sql); | |
}catch (\Exception $e){ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $studentSpecialExamPresent; | |
} | |
/** | |
* Method for getting semester for a supply exam registration | |
* @param unknown $supplyExamId | |
* @throws ProfessionalException | |
* @return unknown | |
* @author Ranjith Balachandran | |
*/ | |
public function getSupplySemId($supplyExamId) | |
{ | |
$sql = ''; | |
$supplyExamId = $this->realEscapeString($supplyExamId); | |
$supplySemId = null; | |
try{ | |
$sql = "SELECT semID AS supplySemId FROM exam_supplementary WHERE id = $supplyExamId"; | |
$supplySemId = $this->executeQueryForObject($sql)->supplySemId; | |
}catch (\Exception $e){ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $supplySemId; | |
} | |
/** | |
* Method for getting failed studets of batch for supply | |
* @param unknown $supplyExamId | |
* @throws ProfessionalException | |
*/ | |
public function getFailedStudents($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$sql = ""; | |
$conditions = ""; | |
if (!empty($request->supplyRegId)) { | |
$supplyRegIdString = is_array($request->supplyRegId) ? implode(",", $request->supplyRegId) : $request->supplyRegId; | |
$conditions .= "AND es.id IN ($supplyRegIdString) "; | |
} | |
else{ | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, 'Supplimentary Registration is empty'); | |
} | |
if (!empty($request->batchId)) { | |
$batchIdString = is_array($request->batchId) ? implode(",", $request->batchId) : $request->batchId; | |
$conditions .= " AND ex.batchID IN ($batchIdString) "; | |
} | |
try{ | |
$sql = "SELECT | |
DISTINCT ex.subjectID AS subjectId, | |
ex.batchID AS batchId, | |
ex.examregID, | |
es.semID, | |
es.id, | |
ex.examID | |
FROM | |
exam_supplementary es | |
INNER JOIN sbs_relation sbsr ON | |
sbsr.semID = es.semID | |
INNER JOIN exam ex ON | |
ex.batchID = sbsr.batchID | |
AND ex.semID = sbsr.semID | |
AND ex.subjectID = sbsr.subjectID | |
AND ex.semID = es.semID | |
WHERE | |
ex.examregID IS NOT NULL | |
$conditions"; | |
$supplyExamSubjects = $this->executeQueryForList($sql); | |
}catch (\Exception $e){ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
$examSupplementary = ExamSupplementaryService::getInstance()->getExamSupplementaryById ($request->supplyRegId); | |
$failedStudents = []; | |
foreach ($supplyExamSubjects as $subject) { | |
$supplyExamBatches[$subject->batchId]->id = $subject->batchId; | |
$supplyExamBatches[$subject->batchId]->examRegId = $subject->examregID; | |
$supplyExamBatches[$subject->batchId]->semId = $subject->semID; | |
$supplyExamBatches[$subject->batchId]->supplyRegId = $subject->id; | |
$supplyExamBatches[$subject->batchId]->subjects[$subject->subjectId]= $subject->examID; | |
} | |
$markReportRequest = new ConsolidatedMarkReportRequest(); | |
foreach ($supplyExamBatches as $batch) { | |
$markReportRequest->examRegId = $batch->examRegId; | |
$markReportRequest->batchId = $batch->id; | |
$markReportRequest->semId = $batch->semId; | |
// $markReportRequest->subjectIds = $batch->subjects; | |
$examDetails = ConsolidatedMarkReportService::getInstance()->getStudentRegularExamMarkDetails($markReportRequest); | |
if ( !empty ( $examDetails ) ) { | |
$studentDetails = ConsolidatedMarkReportService::getInstance()->getStudentsOverallMarkReport($markReportRequest, $examDetails); | |
// $batch->students = array_search(true,array_column($studentDetails,"isFailed")); | |
$batch->students = array_filter($studentDetails, function($a){ return $a->isFailed == true; }); | |
foreach ($batch->students as $student) { | |
$student->failedSubject = array_values(array_filter | |
($student->semMarks[$batch->semId]->subject, function($a){ return $a->isFailed == true; })); | |
$student->semMarks = null; | |
$student->semId = $batch->semId; | |
$student->supplyRegId = $batch->supplyRegId; | |
$student->examName = $examSupplementary->supplyDesc; | |
$registerdSubjects = ExamSupplementaryService::getInstance()->getSupplyImproveRegisteredStudentSubjectDetails ($request->supplyRegId, $student->studentId); | |
foreach ($student->failedSubject as $failedSub) { | |
if (in_array($failedSub->subjectId,array_column($registerdSubjects,"subjectID"))) { | |
$failedSub->isRegisteredForSupply = true; | |
$failedSub->isChecked = true; | |
} | |
else{ | |
$failedSub->isRegisteredForSupply = false; | |
} | |
} | |
} | |
$failedStudents = array_merge($failedStudents, $batch->students); | |
} | |
} | |
return $failedStudents; | |
} | |
public function addSupplyImproveStudentSubjectDetails ( $supplyImprove ) { | |
$values = []; | |
$supplyImprove = $this->realEscapeObject($supplyImprove); | |
try { | |
$sqlCheck = "SELECT id FROM exam_supplementary_student_details WHERE exam_supplementary_id = $supplyImprove->supplyId AND studentID = $supplyImprove->studentId"; | |
$studentRegDetails = $this->executeQueryForObject($sqlCheck); | |
if (empty($studentRegDetails)) { | |
$sqlDetails = "INSERT IGNORE INTO exam_supplementary_student_details ( exam_supplementary_id, studentID, total_fees, challanNo, isSupply ) VALUES ( $supplyImprove->supplyId, $supplyImprove->studentId,$supplyImprove->totalFees, '$supplyImprove->challanNo', $supplyImprove->isSupply )"; | |
$this->executeQuery($sqlDetails); | |
} | |
$sqlSubjects = "INSERT IGNORE INTO exam_supplementary_student_subjects (exam_supplementary_id, studentID, examID) VALUES "; | |
foreach ( $supplyImprove->supplyImproveExamIds as $examId ) { | |
$values[] = "($supplyImprove->supplyId, $supplyImprove->studentId, $examId)"; | |
} | |
$sqlSubjects .= implode ( ",", $values ); | |
$this->executeQuery($sqlSubjects); | |
} | |
catch(\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return true; | |
} | |
/** | |
* Method for getting semester for a supply exam registration | |
* @param $supplyExamregId,studentId | |
* @throws ProfessionalException | |
* @return $segExamSubjects | |
* @author Sibin | |
*/ | |
public function getRegisteredSupplyExamSubjectsByStudentIdAndRegId($studentId, $examRegId) | |
{ | |
$sql = null; | |
$studentId = $this->realEscapeString($studentId); | |
$examRegId = $this->realEscapeString($examRegId); | |
$regExamSubjects = []; | |
$sql = "SELECT | |
s.subjectID, | |
s.subjectName, | |
s.subjectDesc, | |
s.syllabusName, | |
s.subjectPriority, | |
s.isTheory | |
FROM | |
exam_supplementary_student_subjects ess | |
INNER JOIN | |
exam e ON e.examID = ess.examID | |
INNER JOIN | |
subjects s ON s.subjectID = e.subjectID | |
INNER JOIN studentaccount sa ON sa.studentID = ess.studentID | |
WHERE | |
ess.exam_supplementary_id = '$examRegId' | |
AND | |
ess.studentID = '$studentId'"; | |
try { | |
$regExamSubjects = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $regExamSubjects; | |
} | |
/** | |
* Method for checking isSupply by examType Id | |
* @param unknown $typeID | |
* @throws ProfessionalException | |
* @return unknown | |
* @author Sibin | |
*/ | |
public function getIssupplyByExamTypeId($typeID) | |
{ | |
$typeID = $this->realEscapeObject($typeID); | |
try{ | |
$sql = "SELECT | |
isSupply from exam_type where typeID = '$typeID'"; | |
$isSupply = $this->executeQueryForObject($sql); | |
}catch (\Exception $e){ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $isSupply; | |
} | |
//end checking isSupply by examType Id | |
/** | |
* get exam registration fees types | |
* | |
* @param int $examRegId | |
* @param string $examType | |
* | |
* @throws ProfessionalException | |
* @return list $regFeeTypes | |
*/ | |
public function getCommonFeeTypesForSupplyExamRegisterApplication($examRegId) | |
{ | |
$examRegId = $this->realEscapeString($examRegId); | |
$examCommonFees = ""; | |
$sql = "SELECT eft.examfeesID AS id, | |
eft.examfeesName AS name, | |
erf.supply_feesAmount AS supplyAmount, | |
erf.improve_feesAmount AS improveAmount | |
FROM | |
exam_feestype eft | |
INNER JOIN | |
supply_improve_exam_fees erf ON erf.examfeesID = eft.examfeesID | |
AND erf.exam_supplementary_id = '$examRegId' | |
WHERE | |
eft.examfeesID IS NOT NULL | |
AND eft.everySubject = 0 "; | |
try { | |
$examCommonFees = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $examCommonFees; | |
} | |
/** | |
* get supply exam registration fees types | |
* | |
* @param int $examRegId | |
* @param string $examType | |
* | |
* @throws ProfessionalException | |
* @return list $regFeeTypes | |
*/ | |
public function getSubjectFeeTypesForSupplyExamRegisterApplication($examRegId, $studentId) | |
{ | |
$examRegId = $this->realEscapeString($examRegId); | |
$studentId = $this->realEscapeString($studentId); | |
$examFees = ""; | |
$sql = "SELECT distinct (ersf.examfeesID) as id, | |
eft.examfeesName as name | |
from supply_improve_exam_fees ersf | |
INNER JOIN exam_feestype eft ON ersf.examfeesID=eft.examfeesID | |
INNER JOIN supply_improve_subject_fees sisf | |
ON sisf.examfeesID = ersf.examfeesID AND sisf.exam_supplementary_id = ersf.exam_supplementary_id | |
INNER JOIN exam_supplementary_student_subjects esss | |
ON esss.exam_supplementary_id = sisf.exam_supplementary_id AND esss.examID = sisf.examID | |
WHERE ersf.exam_supplementary_id='$examRegId' | |
AND esss.studentID='$studentId'"; | |
try { | |
$examFees = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $examFees; | |
} | |
/** | |
* get sum of supply exam registration fees | |
* @param $examRegId,studentId | |
* | |
* @throws ProfessionalException | |
* @return list $regFeeTypes | |
*/ | |
public function getSumOfSubjectFeesForSupplyExamRegisterApplication($examRegId, $studentId) | |
{ | |
$examRegId = $this->realEscapeString($examRegId); | |
$studentId = $this->realEscapeString($studentId); | |
$examFees = ""; | |
$sql = "SELECT sum(supply_subject_amount) as supplyFees , sum(improve_subject_amount) as improveFees from supply_improve_subject_fees sief | |
INNER JOIN exam_supplementary_student_subjects esss | |
ON esss.exam_supplementary_id=sief.exam_supplementary_id AND esss.examID=sief.examID | |
WHERE esss.exam_supplementary_id='$examRegId' | |
AND esss.studentID='$studentId'"; | |
try { | |
$examFees = $this->executeQueryForObject($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $examFees; | |
} | |
/** | |
* get supply exam registration fees WithMaxFeeLimit | |
* @param $examRegId,studentId | |
* | |
* @throws ProfessionalException | |
* @return list $regFeeTypes | |
*/ | |
public function getFeesWithMaxFeeLimitForSupplyExamRegisterApplication($examRegId) | |
{ | |
$examRegId = $this->realEscapeString($examRegId); | |
$examFees = ""; | |
$sql = "SELECT | |
eft.examfeesID AS id, | |
eft.examfeesName AS name, | |
erf.supply_feesAmount AS supplyAmount, | |
erf.improve_feesAmount AS improveAmount, | |
erf.supply_maxFees as supplyMaxFees, | |
erf.improve_maxFees as improveMaxFees | |
FROM | |
exam_feestype eft | |
INNER JOIN | |
supply_improve_exam_fees erf ON erf.examfeesID = eft.examfeesID | |
AND erf.exam_supplementary_id = '$examRegId' | |
WHERE | |
eft.examfeesID IS NOT NULL | |
AND eft.everySubject = 1 | |
and eft.isSubject_fee_limit = 1"; | |
try { | |
$examFees = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $examFees; | |
} | |
/**to get dupply improve examfine | |
* @author Sibin | |
*/ | |
public function getSupplyImproveExamFine($isSupply,$examSupplementaryId,$regAppliedDate) | |
{ | |
$examSupplementaryId = $this->realEscapeString($examSupplementaryId); | |
$isSupply = $this->realEscapeString($isSupply); | |
$regAppliedDate= $this->realEscapeString($regAppliedDate); | |
$fineAmount = 0; | |
if ($isSupply) { | |
$sql = "SELECT supply_fineAmount as fineAmount FROM supply_improve_exam_fine WHERE supply_startDate <= '$regAppliedDate' AND supply_endDate >= '$regAppliedDate' AND exam_supplementary_id = '$examSupplementaryId' "; | |
} else { | |
$sql = "SELECT improve_fineAmount as fineAmount FROM supply_improve_exam_fine WHERE improve_startDate <= '$regAppliedDate' AND improve_endDate >= '$regAppliedDate' AND exam_supplementary_id = '$examSupplementaryId' "; | |
} | |
try { | |
$fineAmount = $this->executeQueryForObject($sql)->fineAmount; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $fineAmount; | |
} | |
/**to verify student supply exam payment | |
* @param $studentID, $examregID,$isPaid, $updated_by, $updated_date | |
* @throws ProfessionalException | |
* @author Sibin | |
*/ | |
public function verifyStudentSupplyExamPayment($studentID, $examregID, $isPaid, $approve, $updated_by, $updated_date) | |
{ | |
$studentId = $this->realEscapeString($studentID); | |
$examRegId = $this->realEscapeString($examregID); | |
$isPaid = $this->realEscapeString($isPaid); | |
$approve = $this->realEscapeString($approve); | |
$updated_by = $this->realEscapeString($updated_by); | |
$updated_date = $this->realEscapeString($updated_date); | |
$sql = null; | |
$status = 0; | |
try { | |
$sql = "UPDATE exam_supplementary_student_details | |
set paid='$isPaid', | |
approved ='$approve', | |
updated_by='$updated_by', | |
updated_date='$updated_date' , | |
fee_paidDate ='$updated_date' , | |
payment_method = 'BACK_END' | |
where studentID='$studentId' and exam_supplementary_id='$examRegId'"; | |
$this->executeQuery($sql); | |
$status = 1; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $status; | |
} | |
/** list of supplementary exam's month and year semsterwise | |
* @param $studentID, $examregID,$isPaid, $updated_by, $updated_date | |
* @throws ProfessionalException | |
*/ | |
public function supplyExamMonthAndYearSemesterWise($batchId) | |
{ | |
$batchId = $this->realEscapeString($batchId); | |
if(empty($batchId)){ | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, 'Batch id is empty'); | |
} | |
$sql = null; | |
try { | |
$sql = "SELECT DISTINCT | |
e.semID AS semId, | |
es.id, | |
es.examMonth, | |
es.examYear | |
FROM | |
exam e | |
INNER JOIN exam_supplementary es ON | |
es.id = e.supply_examreg_id | |
INNER JOIN exam_supplementary_student_details essd ON | |
essd.exam_supplementary_id = e.supply_examreg_id | |
AND essd.exam_supplementary_id = es.id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = essd.studentID | |
AND sa.batchID = e.batchID | |
WHERE | |
e.batchID = $batchId | |
GROUP BY | |
e.supply_examreg_id | |
HAVING | |
SUM(essd.isSupply) > 0 | |
ORDER BY | |
es.examYear, | |
CAST(es.examMonth AS UNSIGNED ) ASC"; | |
$examDetails = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
$semesterWiseDetails = []; | |
foreach ($examDetails as $examDetail) { | |
$semesterWiseDetails[$examDetail->semId]->exams[] = $examDetail; | |
} | |
return $semesterWiseDetails; | |
} | |
/**to add remarks to student supply exam payment | |
* @param $request | |
* @throws ProfessionalException | |
* @author Sibin | |
*/ | |
public function addRemarksStudentSupplyExamPayment($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$sql = null; | |
try { | |
$sql = "UPDATE exam_supplementary_student_details | |
set remarks='$request->remarks' ,updated_by='$request->updatedBy',updated_date = '$request->updatedDate' | |
where studentID='$request->studentId' and exam_supplementary_id='$request->examRegId'"; | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return true; | |
} | |
/**Edit student supply exam payment | |
* @param $request | |
* @throws ProfessionalException | |
*/ | |
public function editStudentSupplyExamPayment($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$remarks = new \stdClass(); | |
$remarks->oldMark = $request->oldMark; | |
$remarks->remarks = $request->remarks; | |
$remarks->updatedBy = $request->updatedBy; | |
$remarks->updatedDate = $request->updatedDate; | |
$json = json_encode($remarks); | |
$sql = null; | |
try { | |
$sql = "UPDATE exam_supplementary_student_details | |
set total_fees='$request->examFee' , | |
payment_remarks = IF( | |
`payment_remarks` IS NULL OR | |
JSON_TYPE(`payment_remarks`) != 'ARRAY', | |
JSON_ARRAY(), | |
`payment_remarks` | |
), | |
`payment_remarks` = JSON_ARRAY_APPEND( | |
`payment_remarks`, | |
'$', | |
CAST('$json' AS JSON) | |
) | |
where studentID='$request->studentId' and exam_supplementary_id='$request->examRegId'"; | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return true; | |
} | |
/** | |
* for getting supply or improve reg status | |
* @param $supplyExamRegId | |
* @throws ProfessionalException | |
*/ | |
public function getSupplyImproveRegistrationStatus($supplyExamRegId, $studentId) | |
{ | |
$supplyExamRegId = $this->realEscapeObject($supplyExamRegId); | |
$studentId = $this->realEscapeObject($studentId); | |
try{ | |
$sql = "SELECT isSupply FROM exam_supplementary_student_details WHERE studentID = $studentId AND exam_supplementary_id = $supplyExamRegId"; | |
$supplyStatus = $this->executeQueryForObject($sql); | |
}catch (\Exception $e){ | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
return $supplyStatus; | |
} | |
/** | |
* @param $studentId | |
* @param $subjectId | |
* @param $semId | |
* @return mixed | |
* @throws ProfessionalException | |
*/ | |
public function subjectSupplyAttemptCountOfStudent($studentId, $subjectId, $semId) | |
{ | |
$studentId = $this->realEscapeString($studentId); | |
$subjectId = $this->realEscapeString($subjectId); | |
$semId = $this->realEscapeString($semId); | |
if (empty($studentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid student"); | |
} | |
if (empty($subjectId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid subject"); | |
} | |
$sql = "SELECT | |
COUNT(esss.exam_supplementary_id) AS supplyAttemptCount | |
FROM | |
exam_supplementary_student_subjects esss | |
INNER JOIN exam e ON | |
e.examID = esss.examID | |
INNER JOIN exam_supplementary_student_details essd ON | |
essd.studentID = esss.studentID | |
AND essd.exam_supplementary_id = esss.exam_supplementary_id | |
WHERE | |
essd.isSupply = 1 | |
AND esss.studentID = $studentId | |
AND e.semID = $semId | |
AND e.subjectID = $subjectId"; | |
try { | |
return $this->executeQueryForObject($sql)->supplyAttemptCount; | |
} catch (Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** list of supplementary exam's month and year studentWise | |
* @param $studentIds, $bachId | |
* @throws ProfessionalException | |
*/ | |
public function supplyExamMonthAndYearStudentWise($batchId,$studentIds) | |
{ | |
$batchId = $this->realEscapeString($batchId); | |
$studentIds = $this->realEscapeString($studentIds); | |
if(empty($batchId)){ | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, 'Batch id is empty'); | |
} | |
$sql = null; | |
try { | |
$sql = "SELECT DISTINCT | |
e.semID AS semId, | |
es.id, | |
es.examMonth, | |
es.examYear | |
FROM | |
exam e | |
INNER JOIN exam_supplementary es ON | |
es.id = e.supply_examreg_id | |
INNER JOIN exam_supplementary_student_details essd ON | |
essd.exam_supplementary_id = e.supply_examreg_id | |
AND essd.exam_supplementary_id = es.id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = essd.studentID | |
AND sa.batchID = e.batchID | |
WHERE | |
e.batchID = $batchId | |
AND sa.studentID IN ('$studentIds') | |
GROUP BY | |
e.supply_examreg_id | |
HAVING | |
SUM(essd.isSupply) > 0 | |
ORDER BY | |
es.examYear, | |
CAST(es.examMonth AS UNSIGNED ) ASC"; | |
$examDetails = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
$semesterWiseDetails = []; | |
foreach ($examDetails as $examDetail) { | |
$semesterWiseDetails[$examDetail->semId]->exams[] = $examDetail; | |
} | |
return $semesterWiseDetails; | |
} | |
/** list of supplementary exam's month and year semsterwise by student | |
* @param $studentID, $examregID,$isPaid, $updated_by, $updated_date | |
* @throws ProfessionalException | |
*/ | |
public function supplyExamMonthAndYearSemesterWiseByStudent($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$batchId = $request->batchId; | |
$condition =""; | |
if (empty($batchId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, 'Batch id is empty'); | |
} | |
if($request->studentId){ | |
$condition .=" AND sa.studentID IN ($request->studentId) "; | |
} | |
$sql = null; | |
try { | |
$sql = "SELECT DISTINCT | |
e.semID AS semId, | |
es.id, | |
es.examMonth, | |
es.examYear | |
FROM | |
exam e | |
INNER JOIN exam_supplementary es ON | |
es.id = e.supply_examreg_id | |
INNER JOIN exam_supplementary_student_details essd ON | |
essd.exam_supplementary_id = e.supply_examreg_id | |
AND essd.exam_supplementary_id = es.id | |
INNER JOIN studentaccount sa ON | |
sa.studentID = essd.studentID | |
WHERE | |
1=1 $condition | |
GROUP BY | |
e.supply_examreg_id | |
HAVING | |
SUM(essd.isSupply) > 0 | |
ORDER BY | |
es.examYear, | |
CAST(es.examMonth AS UNSIGNED ) ASC"; | |
$examDetails = $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
$semesterWiseDetails = []; | |
foreach ($examDetails as $examDetail) { | |
$semesterWiseDetails[$examDetail->semId]->exams[] = $examDetail; | |
} | |
return $semesterWiseDetails; | |
} | |
} |