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 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 38
LMSCalendarService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
110.00
0.00% covered (danger)
0.00%
0 / 38
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 3
 __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 / 5
 getAllLMSCalendarHolidays
0.00% covered (danger)
0.00%
0 / 1
42.00
0.00% covered (danger)
0.00%
0 / 28
<?php
namespace com\linways\core\ams\professional\service;
use com\linways\core\ams\professional\dto\LMSCalendar;
use com\linways\core\ams\professional\dto\LMSCalendarEvent;
use com\linways\core\ams\professional\exception\ProfessionalException;
use com\linways\core\ams\professional\mapper\LMSCalendarServiceMapper;
use com\linways\core\ams\professional\request\GetLMSCalendarHolidaysRequest;
/**
 *
 * @Date 23/12/20
 */
class LMSCalendarService extends BaseService
{
    private $mapper = [];
    private $imUtil = null;
    private $logger = null;
    /**
     * Presence of a static member variable
     *
     * @var null
     */
    private static $_instance = null;
    /**
     * Locked down the constructor
     *
     * ProposedPlanService constructor.
     */
    private function __construct()
    {
        $this->mapper = LMSCalendarServiceMapper::getInstance()->getMapper();
    }
    /**
     * Prevent any object or instance of that class to be cloned
     */
    private function __clone()
    {
    }
    /**
     * Have a single globally accessible static method
     *
     * @return LMSCalendarService|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;
    }
    /**
     * @param GetLMSCalendarHolidaysRequest $request
     * @return Object|LMSCalendarEvent[]
     * @throws ProfessionalException
     */
    public function getAllLMSCalendarHolidays(GetLMSCalendarHolidaysRequest $request)
    {
        if (empty($request->endDate) || empty($request->startDate)) {
            throw new ProfessionalException(ProfessionalException::INVALID_DATE_RANGE, "Invalid date range given");
        }
        if (empty($request->departmentId)) {
            throw new ProfessionalException(ProfessionalException::INVALID_DEPARTMENT_ID, "Invalid department details given");
        }
        if (empty($request->batchId)) {
            throw new ProfessionalException(ProfessionalException::INVALID_BATCH_ID, "Invalid batch details given");
        }
        $request->startDate = strtotime(date("Y-m-d", strtotime($request->startDate)));
        $request->endDate = strtotime(date("Y-m-d", strtotime($request->endDate)));
        try {
            $sql = "SELECT eventID as id, eventTitle as title,eventDesc as description, flag,examID as exam_id,
                    assignmentID as assignment_id,subbatchID as sub_batch_id,hrholiday as hr_holiday,hr_holiday_session,
                    deptID as department_id,batchID as batch_id,1 as is_holiday,
                    from_unixtime(`timeStart`,'%Y-%m-%d %H:%i:%s') as start_time,
                    from_unixtime(`timeEnd`,'%Y-%m-%d %H:%i:%s') as end_time 
                    FROM lms_calender 
                    WHERE timeStart BETWEEN '$request->startDate%' AND '$request->endDate%' 
                    AND flag IN (1,3) 
                    AND ((deptID=$request->departmentId AND batchID = $request->batchId
                    OR (deptID=$request->departmentId AND batchID = 0) OR (deptID=0 AND batchID = 0))";
            return $this->executeQueryforList($sql, $this->mapper[LMSCalendarServiceMapper::GET_ALL_LMS_CALENDAR_HOLIDAYS]);
        } catch (\Exception $e) {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
}