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 / 11
CRAP
0.00% covered (danger)
0.00%
0 / 116
CentralizedTimingService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 11
702.00
0.00% covered (danger)
0.00%
0 / 116
 __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
 createCentralizedTiming
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 12
 selectAllCentralizedTiming
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 15
 checkDuplicateCentralizedTiming
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 14
 getCentalizedTimingById
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 12
 removeCentalizedTimingById
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 12
 updateTimingById
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 11
 getCentralizedTimingByDayHour
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 14
 removeAllCentralizedTimingByCourseId
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 15
<?php
namespace com\linways\core\ams\professional\service;
use com\linways\core\ams\professional\exception\ProfessionalException;
use Exception;
/**
 *
 * @Date 07/01/21
 * @author  Joel M John
 */
class CentralizedTimingService 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 create a CentralizedTiming 
     * @param  Object $request
     * @return Boolean
     * @throws ProfessionalException
     */
    public function createCentralizedTiming($request)
    {
        
        try {
            
            $sql = "INSERT INTO `centralized_timing` (`course_type_id`, `day`, `hour`, `start_time`, `end_time`, `created_by`) 
            VALUES ('$request->courseTypeID', '$request->day', '$request->hour', '$request->startTime', '$request->endTime', '$request->userID')";
            if($this->executeQueryForObject($sql,true)) {
                return true;
            }
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return false;
    }
    /**
     * method to select all CentralizedTiming by CourseTypeID
     * @param Int,Boolean 
     * @return Result
     * @throws ProfessionalException
     */
    public function selectAllCentralizedTiming($courseTypeID, $orderByDay = false)
    {
        
        try {
            $cond = '';
            if($orderByDay){
                $cond = 'ORDER BY day ASC';
            }
            $sql = "SELECT id,course_type_id, day, hour, start_time, end_time, created_by
                    FROM centralized_timing
                    WHERE course_type_id = '$courseTypeID'".$cond;
            $result = $this->executeQueryForList($sql);
            return $result;
            
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    /**
     * method to check duplicate timing entry in table
     * @param Object request
     * @return Boolean
     * @throws ProfessionalException
     */
    public function checkDuplicateCentralizedTiming($request)
    {
        
        try {
            
            $sql = "SELECT id,course_type_id, day, hour, start_time, end_time, created_by
                    FROM centralized_timing 
                    WHERE course_type_id = $request->courseTypeID AND day = $request->day AND hour = $request->hour";
            $result = $this->executeQueryForList($sql);
            if($result){
                return true;
            }
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return false;
    }
    /**
     * method to get ct by id
     * @param id 
     * @return Result
     * @throws ProfessionalException
     */
    public function getCentalizedTimingById($id)
    {
        
        try {
            
            $sql = "SELECT id,course_type_id, day, hour, start_time, end_time, created_by
                    FROM centralized_timing 
                    WHERE id = '$id'";
            $result = $this->executeQueryForObject($sql);
            return $result;
            
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return false;
    }
    /**
     * method to remove ct by id
     * @param id 
     * @return Boolean
     * @throws ProfessionalException
     */
    public function removeCentalizedTimingById($id)
    {
        
        try {
            
            $sql = "DELETE
                    FROM centralized_timing 
                    WHERE id = '$id'";
            if($this->executeQuery($sql))
                return true;
            
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return false;
    }
    /**
     * method to update timing by id
     * @param INT startTime, endTime, timingId 
     * @return Boolean
     * @throws ProfessionalException
     */
    public function updateTimingById($startTime,$endTime,$timingId)
    {
        
        try {
            
            $sql = "UPDATE `centralized_timing` 
                    SET `start_time`='$startTime', `end_time`='$endTime' WHERE `id`='$timingId'";
            if($this->executeQuery($sql))
                return true;
            
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return false;
    }
    /**
     * method to get ct by day and hour
     * @param INT day, hour 
     * @return result
     * @throws ProfessionalException
     */
    public function getCentralizedTimingByDayHour($day,$hour,$courseTypeID)
    {
        
        try {
            
            $sql = "SELECT 
                        id, course_type_id, day, hour, start_time, end_time
                    FROM
                        centralized_timing
                    WHERE
                        day = '$day' AND hour = '$hour' AND course_type_id = '$courseTypeID";
            $result = $this->executeQueryForObject($sql);
            return $result;
            
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    /**
     * method to remove all timing by courseType
     * @param INT day, hour 
     * @return Boolean
     * @throws ProfessionalException
     */
    public function removeAllCentralizedTimingByCourseId($courseTypeID)
    {
        
        try {
            
            $sql = "DELETE
                    FROM 
                        centralized_timing
                    WHERE 
                        course_type_id = '$courseTypeID'";
            if($this->executeQuery($sql)){
                return true;
            }
            
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return false;
    }
    
}