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 / 113
StudentHourWiseNotesService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
306.00
0.00% covered (danger)
0.00%
0 / 113
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 2
 __clone
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 2
 getInstance
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 7
 getStudentHourNotesBySbsId
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 29
 getStudentHourNotesById
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 34
 getDistinctStudentListBySbsId
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 19
 approveStudentNotes
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 10
 disapproveStudentNotes
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 10
<?php
namespace com\linways\core\ams\professional\service;
use Exception;
use com\linways\core\ams\professional\request\GetPreSignedUrlRequest;
use com\linways\core\ams\professional\exception\ProfessionalException;
use com\linways\core\ams\professional\service\ResourceService;
class StudentHourWiseNotesService extends BaseService
{
    /**
     * Presence of a static member variable
     *
     * @var null
     */
    private static $_instance = null;
    /**
     * Mapper variable
     * @var array
     */
    private $mapper = [];
    /**
     * Initialise mapper, logger, hooks here
     *
     * 
     */
    private function __construct()
    {
        
    }
    /**
     * Prevent any object or instance of that class to be cloned
     */
    private function __clone()
    {
    }
    /**
     * Have a single globally accessible static method
     *
     * @return CentralizedTimingService|null
     */
    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;
    }
    /**
     * method to get Student hour notes by sbsID
     * @param Int $sbsID,$date
     * @return result
     * @throws ProfessionalException 
     */
    public function getStudentHourNotesBySbsId($sbsID,$fromDate,$toDate)
    {
        $sql = "SELECT 
                    shwn.id as noteID,
                    shwn.studentID,
                    shwn.date,
                    shwn.hour,
                    shwn.sbsID,
                    shwn.note,
                    shwn.isApproved,
                    shwn.approvedDate,
                    shwn.resourceId,
                    sa.studentName
                FROM
                    student_hour_wise_notes shwn
                        INNER JOIN
                    studentaccount sa ON sa.studentID = shwn.studentID
                WHERE
                    sbsID = $sbsID 
                AND
                    shwn.date BETWEEN '$fromDate' AND '$toDate'
                ORDER BY sa.studentName
                ";
        try {
            $result = $this->executeQueryForList($sql);
            return $result;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    
    /**
     * method to get Student hour notes by ID
     * @param Int $Id
     * @return result
     * @throws ProfessionalException 
     */
    public function getStudentHourNotesById($Id)
    {
        $sql = "SELECT 
                    shwn.id as noteID,
                    shwn.studentID,
                    shwn.date,
                    shwn.hour,
                    shwn.sbsID,
                    shwn.note,
                    shwn.isApproved,
                    shwn.approvedDate,
                    shwn.resourceId,
                    sa.studentName
                FROM
                    student_hour_wise_notes shwn
                        INNER JOIN
                    studentaccount sa ON sa.studentID = shwn.studentID
                WHERE
                    shwn.id = '$Id'
                ORDER BY sa.studentName
                ";
        try {
            $result = $this->executeQueryForList($sql);
            if($result[0]->resourceId != null){
                $getRequest = new GetPreSignedUrlRequest();
                $getRequest->resourceId = $result[0]->resourceId;
                $getRequest->accessKey = getenv("AWS_ACCESS_KEY");
                $getRequest->secretKey = getenv("AWS_CLIENT_SECRET_KEY");
                $result[0]->url = ResourceService::getInstance()->getPreSignedUrlByResourceId($getRequest);
            }
            return $result;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    /**
     * method to get disinct Student list by sbsID
     * @param Int $sbsID,$date
     * @return result
     * @throws ProfessionalException 
     */
    public function getDistinctStudentListBySbsId($sbsID)
    {
        $sql = "SELECT 
                    distinct(shwn.studentID),
                    sa.studentName
                FROM
                    student_hour_wise_notes shwn
                        INNER JOIN
                    studentaccount sa ON sa.studentID = shwn.studentID
                WHERE
                    sbsID = $sbsID 
                ORDER BY sa.studentName
                ";
        try {
            $result = $this->executeQueryForList($sql);
            return $result;
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
 /**
     * to approve student notes by faculty
     * @param Int $noteIds
     * @return result
     * @throws ProfessionalException 
     */
    public function approveStudentNotes($noteIds)
    {
        foreach($noteIds as $noteId){
            $sql ="UPDATE student_hour_wise_notes SET isApproved = 1, approvedDate = now() where id='$noteId";
            try {
                 $this->executeQuery($sql);
            } catch (\Exception $e) {
                throw new ProfessionalException($e->getCode(), $e->getMessage());
            }
        }
       
    }
     /**
     * to disapprove student notes by faculty
     * @param Int $noteIds
     * @return result
     * @throws ProfessionalException 
     */
    public function disapproveStudentNotes($noteIds)
    {
        foreach($noteIds as $noteId){
            $sql ="UPDATE student_hour_wise_notes SET isApproved = 0 where id='$noteId";
            try {
                 $this->executeQuery($sql);
            } catch (\Exception $e) {
                throw new ProfessionalException($e->getCode(), $e->getMessage());
            }
        }
       
    }
    
}