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 / 16
CRAP
0.00% covered (danger)
0.00%
0 / 355
FeedbackService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 16
4032.00
0.00% covered (danger)
0.00%
0 / 355
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 3
 __clone
n/a
0 / 0
1
n/a
0 / 0
 getInstance
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 5
 insertFeedbackToBulkOfStudents
0.00% covered (danger)
0.00%
0 / 1
42.00
0.00% covered (danger)
0.00%
0 / 26
 getAllFeedbackTypes
0.00% covered (danger)
0.00%
0 / 1
20.00
0.00% covered (danger)
0.00%
0 / 16
 getAllBulkFeedbacks
0.00% covered (danger)
0.00%
0 / 1
20.00
0.00% covered (danger)
0.00%
0 / 35
 getBulkFeedbackDetails
0.00% covered (danger)
0.00%
0 / 1
20.00
0.00% covered (danger)
0.00%
0 / 31
 deleteBulkFeedback
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 14
 updateBulkFeedback
0.00% covered (danger)
0.00%
0 / 1
132.00
0.00% covered (danger)
0.00%
0 / 49
 getSelectedStudentListOfBulkFeedback
0.00% covered (danger)
0.00%
0 / 1
30.00
0.00% covered (danger)
0.00%
0 / 36
 addFeedbackAboutStudent
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 9
 removeFeedbackAboutStudent
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 9
 getFeedbackAboutStudent
0.00% covered (danger)
0.00%
0 / 1
30.00
0.00% covered (danger)
0.00%
0 / 22
 addFeedbackAboutStudentForMentorMentee
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 26
 getFeedbackAboutStudentForMentorMentee
0.00% covered (danger)
0.00%
0 / 1
42.00
0.00% covered (danger)
0.00%
0 / 35
 removeFeedbackAboutStudentForMentorMentee
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 9
 getFeedbackAboutStudentBatch
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 30
<?php
namespace com\linways\core\ams\professional\service;
use com\linways\core\ams\professional\service\BaseService;
use com\linways\core\ams\professional\dto\SettingsConstents;
use com\linways\core\ams\professional\service\CommonService;
use com\linways\core\ams\professional\service\PermissionService;
use com\linways\core\ams\professional\mapper\FeedbackServiceMapper;
use com\linways\core\ams\professional\exception\ProfessionalException;
use com\linways\core\ams\professional\request\SearchBulkFeedbacksRequest;
use com\linways\core\ams\professional\service\nba\ExtraActivitiesService;
use com\linways\core\ams\professional\dto\nba\FeedbackToStudentBulkInsert;
use com\linways\core\ams\professional\request\nba\GetExtraActivityRequest;
use com\linways\core\ams\professional\dto\FeedbackAboutStudent;
class FeedbackService 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 = FeedbackServiceMapper::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;
    }
    /**
     * @param FeedbackToStudentBulkInsert $feedback
     * @return void
     */
    public function insertFeedbackToBulkOfStudents($feedback) {
        $feedback = $this->realEscapeObject($feedback);
        $ignoreNotAttendedStudents = CommonService::getInstance()->getSettings(SettingsConstents::STUDENT_EXTRA_ACTITITY, SettingsConstents::IGNORE_NOT_ATTENDED_STUDENTS);
        $sqlForWrapperTable = "";
        $sqlForWrapperTable = "INSERT INTO bulk_add_feedback_about_student (name, description, student_feedback_type_id, batchID, semID, subjectID, created_by, created_date, updated_by, updated_date) VALUES ('$feedback->feedbackName', '$feedback->feedbackDescription', '$feedback->feedbackTypeId', '$feedback->batchId', '$feedback->semId', '$feedback->subjectId', '$feedback->createdBy', UTC_TIMESTAMP(), '$feedback->updatedBy', UTC_TIMESTAMP())";
        try {
            $bulkInsertId = $this->executeQueryForObject($sqlForWrapperTable, true);
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        $sql = "";
        $sql = "INSERT INTO feedback_about_student (studentID, staffID, feedback, feedback_name, createdDate, student_feedback_type_id, created_by, created_date, updated_by, updated_date, bulk_add_feedback_about_student_id, isAttended) VALUES ";
        $values = [];
        foreach ($feedback->studentIdList as $student) {
            if ( $ignoreNotAttendedStudents == 1 && $student['isAttended'] == 0 ) {
                continue;
            }
            $values[] = "(".$student['studentId'].", ".$feedback->staffId.", '".$feedback->feedbackDescription."', '".$feedback->feedbackName."', UTC_TIMESTAMP(),".$feedback->feedbackTypeId.", ".$feedback->createdBy.", UTC_TIMESTAMP(), ".$feedback->updatedBy.", UTC_TIMESTAMP(), ".$bulkInsertId.", ".$student['isAttended'].")";
        }
        $sql .= implode(',', $values);
        try {
            $this->executeQuery($sql);
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return true;
    }
    /**
     * get all feedback/activity types
     *
     * @return void
     */
    public function getAllFeedbackTypes()
    {
        $sql = "";
        $sql = "SELECT id, name, description, is_activity as isActivity, activity_points as activityPoints, use_in_co as useInCo, use_in_po as useInPo FROM student_feedback_type";
        try {
            $responseList = $this->executeQueryForList($sql);
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        foreach($responseList as $response){
            if(!PermissionService::isNBAEnabled()){
                $response->useInCo = 0;
                $response->useInPo = 0;
            }
        }
        return $responseList;
    }
    /**
     * @param GetAllBulkFeedbacksRequest $request
     * @return void
     */
    public function getAllBulkFeedbacks($request)
    {
        $request = $this->realEscapeObject($request);
        $responseList = null;
        $sql = "";
        $sql = "SELECT 
                    bafs.id AS bulk_add_feedback_about_student_id,
                    bafs.name AS bulk_add_feedback_about_student_name,
                    bafs.description AS bulk_add_feedback_about_student_description,
                    bafs.student_feedback_type_id AS bulk_add_feedback_about_student_student_feedback_type_id,
                    IF(fas.isAttended, 1, 0) as feedback_about_student_studentAlreadySelected,
                    sta.studentID AS studentaccount_studentId,
                    sta.studentName AS studentaccount_studentName,
                    sta.admissionNo AS studentaccount_admissionNumber,
                    if(bafs.created_by = $request->staffId, 'ME', sa.staffName) AS created_by
                FROM
                    bulk_add_feedback_about_student bafs
                        INNER JOIN
                    staffaccounts sa ON (bafs.created_by = sa.staffID)
                        INNER JOIN
                    feedback_about_student fas ON fas.bulk_add_feedback_about_student_id = bafs.id
                        INNER JOIN
                    studentaccount sta ON sta.studentID = fas.studentID WHERE 1=1 ";
        // if ($request->staffId) {
        //     $sql .= "AND fas.staffID ='$request->staffId'";
        // }
        if ($request->batchId) {
            $sql .= "AND sta.batchID ='$request->batchId'";
        }
        // if($request->bulkFeedbackId){
        //     $sql .= "AND bafs.id = '$request->bulkFeedbackId'";
        // }
        if($request->sortBy){
            $sql .= " ORDER BY sta.$request->sortBy";
        }
        try {
            $responseList = $this->executeQueryForList($sql, $this->mapper[FeedbackServiceMapper::GET_ALL_BULK_FEEDBACK]);
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return $responseList;
    }
    public function getBulkFeedbackDetails($request)
    {
        $request = $this->realEscapeObject($request);
        $response = null;
        $sql = "";
        $sql = "SELECT 
                    bafs.id AS bulk_add_feedback_about_student_id,
                    bafs.name AS bulk_add_feedback_about_student_name,
                    bafs.description AS bulk_add_feedback_about_student_description,
                    bafs.student_feedback_type_id AS bulk_add_feedback_about_student_student_feedback_type_id,
                    sta.studentID AS studentaccount_studentId,
                    sta.studentName AS studentaccount_studentName,
                    sta.admissionNo AS studentaccount_admissionNumber
                FROM
                    bulk_add_feedback_about_student bafs
                        INNER JOIN
                    feedback_about_student fas ON fas.bulk_add_feedback_about_student_id = bafs.id 
                        INNER JOIN
                    studentaccount sta ON sta.studentID = fas.studentID WHERE 1=1 ";
        if ($request->staffId) {
            $sql .= "AND fas.staffID ='$request->staffId'";
        }
        if ($request->bulkFeedbackId) {
            $sql .= "AND bafs.id = '$request->bulkFeedbackId'";
        }
        try {
            $response = $this->executeQueryForObject($sql, false, $this->mapper[FeedbackServiceMapper::GET_ALL_BULK_FEEDBACK]);
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return $response;
    }
    /**
     * @param [type] $bulkFeedbackId
     * @return void
     */
    public function deleteBulkFeedback($bulkFeedbackId)
    {
        $bulkFeedbackId = $this->realEscapeString($bulkFeedbackId);
        $sqlForDeletingFromCoMap = "DELETE mapco.* FROM nba_map_extra_activities_to_course_outcome mapco INNER JOIN feedback_about_student fas ON (mapco.feedback_about_student_feedbackID = fas.feedbackID) WHERE fas.bulk_add_feedback_about_student_id = $bulkFeedbackId";
        
        $sqlForDeletingFromFas = "DELETE FROM feedback_about_student WHERE bulk_add_feedback_about_student_id = $bulkFeedbackId";
        
        $sqlForDeletingFromBulk = "DELETE FROM bulk_add_feedback_about_student WHERE id = $bulkFeedbackId";
        
        try {
            $this->executeQuery($sqlForDeletingFromCoMap);
            $this->executeQuery($sqlForDeletingFromFas);
            $this->executeQuery($sqlForDeletingFromBulk);
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return true;
    }
    /**
     *
     * @param [type] $bulkFeedback
     * @return void
     */
    public function updateBulkFeedback($bulkFeedback)
    {
        $ignoreNotAttendedStudents = CommonService::getInstance()->getSettings(SettingsConstents::STUDENT_EXTRA_ACTITITY, SettingsConstents::IGNORE_NOT_ATTENDED_STUDENTS);
        $bulkFeedback = $this->realEscapeObject($bulkFeedback);
        if (empty($bulkFeedback->studentIdList)) {
            throw new ProfessionalException(ProfessionalException::INSUFFICIENT_PARAMETERS, 'Please Provide Atleast One Student...');
        }
        $studentIds = [];
        foreach ($bulkFeedback->studentIdList as $student) {
            if ( $ignoreNotAttendedStudents == 1 && $student['isAttended'] == 0 ) {
                continue;
            }
            $studentIds[] = $student['studentId'];
        }
        $request = new GetExtraActivityRequest();
        $request->semId = $bulkFeedback->semId;
        $request->batchId = $bulkFeedback->batchId;
        $request->subjectId = $bulkFeedback->subjectId;
        $request->activityId = $bulkFeedback->id;
        $coDetails = ExtraActivitiesService::getInstance()->getCoPercentageOfActivity ( $request, $bulkFeedback->id);
        ExtraActivitiesService::getInstance()->deleteExtraActivitiesCoMappingByActivityId($request);
        $sqlForDeletingStudents = "DELETE FROM feedback_about_student WHERE studentID NOT IN (" . implode(',', $studentIds) . ") AND bulk_add_feedback_about_student_id = '$bulkFeedback->id'";
        $sqlForupdatingToBulkFeedback = "UPDATE bulk_add_feedback_about_student SET name = '$bulkFeedback->name', description = '$bulkFeedback->description', student_feedback_type_id = $bulkFeedback->feedbackTypeId, batchID = $bulkFeedback->batchId, semID = $bulkFeedback->semId, subjectID = $bulkFeedback->subjectId, updated_by = $bulkFeedback->updatedBy, updated_date = UTC_TIMESTAMP() WHERE id = $bulkFeedback->id";
        $sqlForupdatingToFeedbackAboutStudent = "INSERT INTO feedback_about_student
        (studentID, staffID, feedback, feedback_name, createdDate, student_feedback_type_id, created_by, created_date, updated_by, updated_date, bulk_add_feedback_about_student_id, isAttended) VALUES ";
            $values = [];
        foreach($bulkFeedback->studentIdList as $student) {
            if ( $ignoreNotAttendedStudents == 1 && $student['isAttended'] == 0 ) {
                continue;
            }
            $values[] = "(".$student['studentId'].", '$bulkFeedback->staffId', '$bulkFeedback->description', '$bulkFeedback->name', UTC_TIMESTAMP(),'$bulkFeedback->feedbackTypeId', '$bulkFeedback->createdBy', UTC_TIMESTAMP(), '$bulkFeedback->updatedBy', UTC_TIMESTAMP(), '$bulkFeedback->id', ".$student['isAttended'].")";
        }
        $sqlForupdatingToFeedbackAboutStudent .= implode(',',$values);
        $sqlForupdatingToFeedbackAboutStudent .= "ON DUPLICATE KEY UPDATE
        feedback='$bulkFeedback->description', student_feedback_type_id = '$bulkFeedback->feedbackTypeId',feedback_name='$bulkFeedback->name', updated_by= $bulkFeedback->updatedBy, updated_date= UTC_TIMESTAMP(), isAttended = VALUES(isAttended)";
        try {
            $this->executeQuery($sqlForDeletingStudents);
            $this->executeQuery($sqlForupdatingToBulkFeedback);
            $this->executeQuery($sqlForupdatingToFeedbackAboutStudent);
            if ( !empty ( $coDetails ) ) {
                $co_ids = [];
                foreach ($coDetails as $co) {
                    $co_ids[] = $co->co_id;
                }
                ExtraActivitiesService::getInstance()->upsertExtraActivities($request, $co_ids);
            }
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getSelectedStudentListOfBulkFeedback($bulkFeedbackId, $batchId, $semId, $subjectId, $staffId = NULL)
    {
        $bulkFeedbackId = $this->realEscapeString($bulkFeedbackId);
        $batchId = $this->realEscapeString($batchId);
        $semId = $this->realEscapeString($semId);
        $subjectId = $this->realEscapeString($subjectId);
        
        $studentList = null;
        
        $isCurrentSem = SemesterService::getInstance()->isCurrentSemester($batchId, $semId);
        
        $subbatches = BatchService::getInstance()->getSubbatchBySubject($subjectId, $semId, $batchId, $staffId);
        
        if (empty($subbatches))
        {
            if ($isCurrentSem) {
                $sql = "SELECT  sa.studentID AS id, studentName AS name, sa.admissionNo AS admissionNumber, sa.rollNo, IF(fas.isAttended, 1, 0) as studentAlreadySelected from  studentaccount sa left join feedback_about_student fas ON sa.studentID = fas.studentID AND fas.bulk_add_feedback_about_student_id = '$bulkFeedbackId' where sa.batchID=\"" . $batchId . "\" order by sa.admissionNo ASC";//Here we use "IF" because fas.isAttended can be null due to left join
            } else {
                $sql = "
                SELECT sa.studentID AS id, studentName AS name, admissionNo AS admissionNumber, rollNo, IF(fas.isAttended, 1, 0) as studentAlreadySelected from studentaccount sa inner join batches ba on sa.batchID =  ba.batchID left join feedback_about_student fas ON sa.studentID = fas.studentID AND fas.bulk_add_feedback_about_student_id = '$bulkFeedbackId' where ba.batchID = $batchId  
                UNION SELECT sa.studentID AS id, studentName AS name, admissionNo AS admissionNumber, rollNo, IF(fas.isAttended, 1, 0) as studentAlreadySelected from failed_students fs left join studentaccount sa on fs.studentID= sa.studentID left join feedback_about_student fas ON sa.studentID = fas.studentID AND fas.bulk_add_feedback_about_student_id = '$bulkFeedbackId' where previousBatch = $batchId and failedInSemester > $semId order by admissionNumber ASC; ";
            }
        }
        else
        {
            if($isCurrentSem)
            {
                $sql = "SELECT distinct sa.studentID AS id, studentName AS name, admissionNo AS admissionNumber, rollNo, IF(fas.isAttended, 1, 0) as studentAlreadySelected from sbs_relation sr inner join subbatch_sbs ssbs on sr.sbsID = ssbs.sbsID inner join subbatch_student ss on ss.subbatchID = ssbs.subbatchID inner join studentaccount sa on sa.studentID = ss.studentID left join feedback_about_student fas ON sa.studentID = fas.studentID AND fas.bulk_add_feedback_about_student_id = '$bulkFeedbackId' where sr.batchID = $batchId and sr.semID = $semId and subjectID = $subjectId order by admissionNumber ASC";
            }
            else
            {
                $sql = "SELECT distinct sa.studentID AS id, studentName AS name, admissionNo AS admissionNumber, rollNo, IF(fas.isAttended, 1, 0) as studentAlreadySelected from sbs_relation sr inner join subbatch_sbs ssbs on sr.sbsID = ssbs.sbsID inner join subbatch_student ss on ss.subbatchID = ssbs.subbatchID inner join studentaccount sa on sa.studentID = ss.studentID left join feedback_about_student fas ON sa.studentID = fas.studentID AND fas.bulk_add_feedback_about_student_id = '$bulkFeedbackId' where sr.batchID = $batchId and sr.semID = $semId and subjectID = $subjectId and sa.studentID in (select studentID from studentaccount where batchID = $batchId union select studentID from failed_students where previousBatch = $batchId and failedInSemester > $semId) order by admissionNumber ASC";
            }
        }
        try {
            $studentList = $this->executeQueryForList($sql);
        }catch(\Exception $e){
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return $studentList;
    }
    
    /**
     * add feedback about student
     * @param FeedbackAboutStudent $feedbackAboutStudent
     * @throws ProfessionalException
     * @return \com\linways\base\dto\MySqlResult|NULL
     */
    public function addFeedbackAboutStudent(FeedbackAboutStudent $feedbackAboutStudent)
    {
        $feedbackAboutStudent = $this->realEscapeObject($feedbackAboutStudent);
        $sql = "INSERT INTO feedback_about_student (studentID, staffID, feedback, feedback_name, createdDate, student_feedback_type_id, created_by, created_date, updated_by, updated_date) VALUES (".$feedbackAboutStudent->studentId.", ".$feedbackAboutStudent->staffId.", '".$feedbackAboutStudent->description."', '".$feedbackAboutStudent->feedbackName."', UTC_TIMESTAMP(),'".($feedbackAboutStudent->studentFeedbackTypeId?$feedbackAboutStudent->studentFeedbackTypeId:'null')."', ".$feedbackAboutStudent->createdBy.", UTC_TIMESTAMP(), ".$feedbackAboutStudent->updatedBy.", UTC_TIMESTAMP())";
        
        try {
            return $this->executeQuery($sql);
        }catch(\Exception $e){
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    
    /**
     * remove feedback about student
     * @param int $feedbackId
     * @throws ProfessionalException
     * @return \com\linways\base\dto\MySqlResult|NULL
     */
    public function removeFeedbackAboutStudent($feedbackId)
    {
        $feedbackId = $this->realEscapeString($feedbackId);
        $sql = "DELETE FROM feedback_about_student WHERE feedbackID='$feedbackId'";
        try {
            return $this->executeQuery($sql);
        }catch(\Exception $e){
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    
    /**
     * get feeback about student
     * @param FeedbackAboutStudent $feedbackAboutStudent
     * @throws ProfessionalException
     * @return object|array|\com\linways\base\util\$objectList[]
     */
    public function getFeedbackAboutStudent(FeedbackAboutStudent $feedbackAboutStudent)
    {
        $feedbackAboutStudent = $this->realEscapeObject($feedbackAboutStudent);
        $sql ="SELECT fas.feedbackID, fas.feedback_name as feedbackName, fas.feedback, fas.createdDate, fas.staffID, sa.staffName, fas.student_feedback_type_id, sft.name as feedbackTypeName FROM feedback_about_student fas INNER JOIN staffaccounts sa ON sa.staffID=fas.staffID LEFT JOIN student_feedback_type sft ON sft.id=fas.student_feedback_type_id WHERE fas.feedbackID is not null";
        if($feedbackAboutStudent->studentId)
        {
            $sql .=" AND fas.studentID='$feedbackAboutStudent->studentId'";
        }
        
        if($feedbackAboutStudent->isAttended !==null)
        {
            $sql .=" AND fas.isAttended=$feedbackAboutStudent->isAttended";
        }
        
        if($feedbackAboutStudent->studentFeedbackTypeId)
        {
            $sql .=" AND fas.student_feedback_type_id=$feedbackAboutStudent->studentFeedbackTypeId";
        }
        $sql .=" ORDER BY fas.createdDate";
        
        try {
            return $this->executeQueryForList($sql);
        }catch(\Exception $e){
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        
    }
    public function addFeedbackAboutStudentForMentorMentee(FeedbackAboutStudent $feedbackAboutStudent)
    {
        $feedbackAboutStudent = $this->realEscapeObject($feedbackAboutStudent);
        $sql = "INSERT INTO mentor_mentee_student_feedbacks(`studentID`,
                    `staffID`,
                    `feedback`,
                    `feedback_name`,
                    `student_feedback_type`,
                    `created_by`,
                    `created_date`,
                    `updated_by`,
                    `updated_date`)
        VALUES (".$feedbackAboutStudent->studentId.",
                 ".$feedbackAboutStudent->staffId.",
                  '".$feedbackAboutStudent->description."',
                   '".$feedbackAboutStudent->feedbackName."',
                   '".($feedbackAboutStudent->studentFeedbackTypeId?$feedbackAboutStudent->studentFeedbackTypeId:'null')."',
                    .".$feedbackAboutStudent->createdBy.",
                     UTC_TIMESTAMP(),
                     ".$feedbackAboutStudent->updatedBy.",
                       UTC_TIMESTAMP())";        
        try {
            return $this->executeQuery($sql);
        }catch(\Exception $e){
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getFeedbackAboutStudentForMentorMentee(FeedbackAboutStudent $feedbackAboutStudent)
    {
        $feedbackAboutStudent = $this->realEscapeObject($feedbackAboutStudent);
        $sql ="SELECT fas.id,
                     fas.feedback_name as feedbackName,
                      fas.feedback,
                       fas.createdDate,
                       fas.staffID,
                       sa.staffName,
                       fas.student_feedback_type 
                       FROM mentor_mentee_student_feedbacks fas 
                       INNER JOIN staffaccounts sa ON sa.staffID=fas.staffID 
                       WHERE fas.id is not null";
        if($feedbackAboutStudent->studentId)
        {
            $sql .=" AND fas.studentID='$feedbackAboutStudent->studentId'";
        }
        
        if($feedbackAboutStudent->isAttended !==null)
        {
            $sql .=" AND fas.isAttended=$feedbackAboutStudent->isAttended";
        }
        
        if($feedbackAboutStudent->studentFeedbackTypeId)
        {
            $sql .=" AND fas.student_feedback_type='$feedbackAboutStudent->studentFeedbackTypeId'";
        }
        if($feedbackAboutStudent->staffId)
        {
            $sql .=" AND fas.staffID=$feedbackAboutStudent->staffId";
        }
        $sql .=" ORDER BY fas.createdDate";
        
        try {
            return $this->executeQueryForList($sql);
        }catch(\Exception $e){
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        
    }
    public function removeFeedbackAboutStudentForMentorMentee($feedbackId)
    {
        $feedbackId = $this->realEscapeString($feedbackId);
        $sql = "DELETE FROM mentor_mentee_student_feedbacks WHERE                   id='$feedbackId'";
        try {
            return $this->executeQuery($sql);
        }catch(\Exception $e){
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    public function getFeedbackAboutStudentBatch ($batchIds)
    {
        try {
                $batchIds = $this->realEscapeArray($batchIds);
                $batchIds = implode(',',$batchIds);
                $sql = "SELECT
                            s.studentID ,
                            s.studentName ,
                            sft.name ,
                            fas.feedback_name ,
                            fas.feedback,
                            s2.staffID ,
                            s2.staffName ,
                            b.batchID ,
                            b.batchName 
                        from
                            feedback_about_student fas
                            inner join studentaccount s 
                            on s.studentID = fas.studentID 
                            inner join batches b on b.batchID = s.batchID 
                            inner join student_feedback_type sft on sft.id = fas.student_feedback_type_id 
                            inner join staffaccounts s2 on s2.staffID = fas.staffID 
                        where
                            s.batchID in ($batchIds)
                        order by
                            fas.feedbackID,b.batchID desc";
                return $this->executeQueryForList($sql);
            //code...
        }catch(\Exception $e){
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        
    }
}