Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 78
StudentMentorSessionFeedbackService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
240.00
0.00% covered (danger)
0.00%
0 / 78
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 __clone
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 getInstance
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 5
 insertStudentMentorSessionFeedback
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 13
 updateStudentMentorSessionFeedback
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 12
 confirmStudentMentorSessionFeedback
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 14
 getMentorSessionListByStudentId
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 21
 getMentorSessionStudentFeedbackByStudentIdAndSessionNo
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 11
<?php
namespace com\linways\core\ams\professional\service;
use com\linways\core\ams\professional\exception\ProfessionalException;
use com\linways\core\ams\professional\dto\StudentMentorSessionFeedback;
class StudentMentorSessionFeedbackService 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;
    }
    /**
     * to save feedback by the student
     * @param StudentMentorSessionFeedback $feedbackDetails
     * @throws ProfessionalException
     */
    public function insertStudentMentorSessionFeedback($feedbackDetails)
    {
        $feedbackDetails->studentId = $this->realEscapeString($feedbackDetails->studentId);
        $feedbackDetails->sessionId = $this->realEscapeString($feedbackDetails->sessionId);
        $feedbackDetails->sessionNo = $this->realEscapeString($feedbackDetails->sessionNo);
        $feedbackDetails->feedback = $this->realEscapeString($feedbackDetails->feedback);
    
        $sql = "INSERT INTO mentor_session_student_feedback (studentID,session_id,session_no,feedback,created_by,created_date,updated_by,updated_date) VALUES ('$feedbackDetails->studentId','$feedbackDetails->sessionId','$feedbackDetails->sessionNo','$feedbackDetails->feedback','$feedbackDetails->studentId',utc_timestamp(),'$feedbackDetails->studentId',utc_timestamp())";
        try {
            
            $studentFeedbackId = $this->executeQueryForObject($sql);
            return $studentFeedbackId;
        } catch (\Exception $e) {
            
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    /**
     * To update feedback by the student
     * @param StudentMentorSessionFeedback $feedbackDetails
     * @throws ProfessionalException
     */
    
    public function updateStudentMentorSessionFeedback($feedbackDetails)
    {
        $feedbackDetails->studentId = $this->realEscapeString($feedbackDetails->studentId);    
        $feedbackDetails->feedback = $this->realEscapeString($feedbackDetails->feedback);
        $feedbackDetails->sessionId = $this->realEscapeString($feedbackDetails->sessionId);
        $feedbackDetails->sessionNo = $this->realEscapeString($feedbackDetails->sessionNo);
        
        
        $sql = "UPDATE mentor_session_student_feedback SET feedback= '$feedbackDetails->feedback', updated_date = utc_timestamp() WHERE studentID = '$feedbackDetails->studentId' AND session_id = '$feedbackDetails->sessionId' AND session_no = '$feedbackDetails->sessionNo";
        
        try {
            
            $this->executeQuery($sql);
            
        } catch (\Exception $e) {
            
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    
    /**
     * To confirm feedback by the student
     * @param StudentMentorSessionFeedback $feedbackDetails
     * @throws ProfessionalException
     */
    
    public function confirmStudentMentorSessionFeedback($feedbackDetails)
    {
        $feedbackDetails->studentId = $this->realEscapeString($feedbackDetails->studentId);    
        $feedbackDetails->isSubmitted = $this->realEscapeString($feedbackDetails->isSubmitted);
        $feedbackDetails->sessionId = $this->realEscapeString($feedbackDetails->sessionId);
        $feedbackDetails->sessionNo = $this->realEscapeString($feedbackDetails->sessionNo);
        $feedbackDetails->feedback = $this->realEscapeString($feedbackDetails->feedback);
        
        
        
        $sql = "UPDATE mentor_session_student_feedback SET feedback= '$feedbackDetails->feedback',isSubmitted= '$feedbackDetails->isSubmitted', updated_date = utc_timestamp() WHERE session_no='$feedbackDetails->sessionNo' AND studentID = '$feedbackDetails->studentId' AND session_id = '$feedbackDetails->sessionId'";
        
        try {
            
            $this->executeQuery($sql);
            return true;
            
        } catch (\Exception $e) {
            
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    
     /**
     * To list mentor sessions
     * @param StudentMentorSessionFeedback $feedbackDetails
     * @throws ProfessionalException
     */
    
    public function getMentorSessionListByStudentId($request)
    {
        $request->studentId = $this->realEscapeString($request->studentId);    
        $request->sbsId = $this->realEscapeString($request->sbsId);
        $mentorSessionType = CommonService::getInstance()->getSettings("MENTOR_SESSION","MENTOR_SESSION_ATTENDANCE_TYPE");
        if($mentorSessionType == "TIMETABLE"){
            $sql = "SELECT ms.id,ms.session_name,ms.session_no,a.studentID,ms.hour,ms.date,ms.end_time,if(mssf.isSubmitted is null , 0 ,mssf.isSubmitted) as isSubmitted,mssf.feedback, a.isAbsent ,if( ms.end_time is null, concat(ms.date,' ','11:59 PM'), concat(ms.date,' ',ms.end_time)) as lastDate,ms.session_end_date as sessionEndDate from mentor_session ms INNER JOIN pseudosubjects_sbs psbs ON psbs.pseudosubjectID = ms.psid INNER JOIN attendance a ON a.attendanceDate = ms.date AND a.hour = ms.hour AND psbs.sbsID = a.sbsID LEFT JOIN mentor_session_student_feedback mssf ON ms.id = mssf.session_id and mssf.studentID = a.studentID  WHERE psbs.sbsID='$request->sbsId' AND a.studentID='$request->studentId' ORDER BY ms.session_no desc";
        }
        else{
            $sql = "SELECT ms.id,ms.session_name,ms.session_no,s.studentID,ms.hour,ms.date,ms.end_time,if(mssf.isSubmitted is null , 0 ,mssf.isSubmitted) as isSubmitted,mssf.feedback, IF(msstf.is_absent is NULL,1,msstf.is_absent) as isAbsent ,if( ms.end_time is null, concat(ms.date,' ','11:59 PM'), concat(ms.date,' ',ms.end_time)) as lastDate,ms.session_end_date as sessionEndDate from mentor_session ms inner join pseudosubjects_students pss on ms.psid = pss.pseudosubjectID 
            inner join pseudosubjects_sbs psbs on ms.psid = psbs.pseudosubjectID
            inner join studentaccount s  on s.studentID = pss.studentID 
            LEFT JOIN mentor_session_student_feedback mssf ON ms.id = mssf.session_id and mssf.studentID = pss.studentID 
            left join mentor_session_staff_feedback msstf on msstf.session_id=ms.id and msstf.studentID = pss.studentID WHERE psbs.sbsID='$request->sbsId' AND pss.studentID='$request->studentId' ORDER BY ms.session_no desc";
        }
        try {
            
            $sessionList = $this->executeQueryForList($sql);
            return $sessionList;
            
        } catch (\Exception $e) {
            
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
  /**
     *to check session feedback for a student by the staff is already saved or not
     * @param StudentMentorSessionFeedback $feedbackDetails
     * @throws ProfessionalException
     */
    
    public function getMentorSessionStudentFeedbackByStudentIdAndSessionNo($feedbackDetails)
    {
        $feedbackDetails->studentId = $this->realEscapeString($feedbackDetails->studentId);
        $feedbackDetails->sessionNo = $this->realEscapeString($feedbackDetails->sessionNo);
        
        $sql = "SELECT id from  mentor_session_student_feedback WHERE studentId='$feedbackDetails->studentId' AND session_no = '$feedbackDetails->sessionNo";
        
        try {
            
            $feedbackId = $this->executeQueryForObject($sql)->id;
            return $feedbackId;
            
        } catch (\Exception $e) {
            
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
}