Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 18 |
CRAP | |
0.00% |
0 / 336 |
| CalendarService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 18 |
6162.00 | |
0.00% |
0 / 336 |
| __construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
| __clone | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
| getInstance | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 5 |
|||
| isHoliday | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 10 |
|||
| isCollegeHoliday | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 10 |
|||
| getHolidaysBetweenADateRange | |
0.00% |
0 / 1 |
90.00 | |
0.00% |
0 / 69 |
|||
| getEventDetails | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
| getHolidays | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 29 |
|||
| getHolidaysBetweenDate | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 28 |
|||
| copyTimetableFromCalendar | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 11 |
|||
| updateCopiedTimetableFromCalendar | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 12 |
|||
| deleteCopiedTimetableFromCalendarByEventId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
| getCopiedTimetableFromCalendarByEventId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
| hasCopiedHolidayTimetable | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
| getAllCollegeWideHrHolidaysBetweenADateRange | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 13 |
|||
| getAllDepartmentHolidayBetweenDateRange | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 30 |
|||
| getAllHolidaysWithGivenDateRange | |
0.00% |
0 / 1 |
342.00 | |
0.00% |
0 / 59 |
|||
| getAllEvents | |
0.00% |
0 / 1 |
56.00 | |
0.00% |
0 / 19 |
|||
| <?php | |
| namespace com\linways\core\ams\professional\service; | |
| use com\linways\core\ams\professional\exception\ProfessionalException; | |
| use com\linways\core\ams\professional\dto\CopyTimetable; | |
| use com\linways\core\ams\professional\dto\CalendarRequest; | |
| use com\linways\core\ams\professional\util\CommonUtil; | |
| use com\linways\core\ams\professional\constant\apiendpoints\ApiEndpoints; | |
| class CalendarService 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; | |
| } | |
| /** | |
| * Return 1 if the given date is a holiday otherwise returns 0 for a batch. | |
| * | |
| * @param string $date | |
| * @return number | |
| * @throws ProfessionalException | |
| */ | |
| public function isHoliday($deptID, $batchID, $date) | |
| { | |
| $unixdate = strtotime($date); | |
| $sql_calendar = "select * from lms_calender where ((deptID=0 and batchID=0) || (deptID=\"$deptID\" and batchID=0) || (deptID=\"$deptID\" and batchID=\"$batchID\")) and flag in (1,3) and \"" . $unixdate . "\" between timeStart and timeEnd;"; | |
| // echo $sql_calendar."\n\n"; | |
| try { | |
| $result_calendar = $this->executeQueryForObject($sql_calendar); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return empty($result_calendar) ? 0 : 1; | |
| } | |
| /** | |
| * This method check if the day is general holiday or not | |
| * | |
| * @param string $date | |
| * @return number | |
| */ | |
| public function isCollegeHoliday($date) | |
| { | |
| $unixdate = strtotime($date); | |
| $sql_calendar = "select * from lms_calender where ((deptID=0 and batchID=0) and \"".$unixdate."\" between timeStart and timeEnd) and flag in (1,3)"; | |
| // echo $sql_calendar."\n\n"; | |
| try { | |
| $result_calendar = $this->executeQueryForObject($sql_calendar); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return empty($result_calendar) ? 0 : 1; | |
| } | |
| /** | |
| * Undocumented function | |
| * | |
| * @param [type] $timetableDetails | |
| * @return void | |
| */ | |
| public function getHolidaysBetweenADateRange($timetableDetails,$isv4 = false){ | |
| if(!$isv4) | |
| { | |
| $timetableDetails = $this->realEscapeObject($timetableDetails); | |
| $eventList = []; | |
| $timetableDetails->startDateInTimestamp = strtotime($timetableDetails->copyFromStartDate); | |
| $timetableDetails->endDateInTimestamp = strtotime($timetableDetails->copyFromEndDate); | |
| if($timetableDetails->startDateInTimestamp == $timetableDetails->endDateInTimestamp){ | |
| $sql = "select eventID, eventTitle, eventDesc, timeStart, timeEnd from lms_calender where ((deptID=0 AND batchID=0) || (deptID=\"$timetableDetails->deptId\" AND batchID=0) || (deptID=\"$timetableDetails->deptId\" AND batchID=\"$timetableDetails->batchId\")) AND flag in (1,3) AND $timetableDetails->startDateInTimestamp = timeStart"; | |
| }else{ | |
| $sql = "select eventID, eventTitle, eventDesc, timeStart, timeEnd from lms_calender where ((deptID=0 AND batchID=0) || (deptID=\"$timetableDetails->deptId\" AND batchID=0) || (deptID=\"$timetableDetails->deptId\" AND batchID=\"$timetableDetails->batchId\")) AND flag in (1,3) AND $timetableDetails->startDateInTimestamp <= timeStart AND $timetableDetails->endDateInTimestamp >= timeEnd"; | |
| } | |
| try { | |
| $eventList = $this->executeQueryForList($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| foreach($eventList as $event){ | |
| $event->holidayStartDate = date("d-m-Y", $event->timeStart); | |
| $event->holidayEndDate = date("d-m-Y", $event->timeEnd); | |
| } | |
| return $eventList; | |
| } | |
| else{ | |
| $result = []; | |
| $calenderRequest = new CalendarRequest(); | |
| $calenderRequest->startDate = $timetableDetails->copyFromStartDate; | |
| $calenderRequest->endDate = $timetableDetails->copyFromEndDate; | |
| $calenderRequest->deptIds=[]; | |
| if(!empty($request->programId)){ | |
| $calenderRequest->programIds=[$request->programId]; | |
| }else{ | |
| $calenderRequest->programIds=[]; | |
| } | |
| $calenderRequest->batchIds[]=$timetableDetails->batchID; | |
| // $calenderRequest->startDate = $request->fromDate; | |
| // $calenderRequest->endDate = $request->toDate; | |
| // $events = AcademicCalenderService::getInstance()->getAllEvents($calenderRequest); | |
| $curl = curl_init(); | |
| curl_setopt($curl, CURLOPT_POST, true); | |
| $domain = ""; | |
| if ($_SERVER['HTTP_HOST'] != 'localhost') { | |
| $domain = rtrim($_SERVER['HTTP_HOST']); | |
| } | |
| if (getenv("DEBUG") !== "true") { | |
| $handlerUrl = "https://" . $domain . "".ApiEndpoints::GET_EVENTS.""; | |
| } else { | |
| $handlerUrl = "http://localhost".ApiEndpoints::GET_EVENTS.""; | |
| } | |
| // $header = $_GLOBALS['_SERVER']['REDIRECT_HTTP_AUTHORIZATION']; | |
| $header = "Bearer ".$GLOBALS['_COOKIE']['AUTH_SESSION']; | |
| $headers = array( | |
| 'Authorization:' . $header | |
| ); | |
| curl_setopt($curl, CURLOPT_URL, $handlerUrl); | |
| curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); | |
| curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); | |
| $postData = []; | |
| $postData['request'] = $calenderRequest; | |
| curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($calenderRequest)); | |
| $curl_response = curl_exec($curl); | |
| $data = json_decode($curl_response)->data; | |
| foreach($data as $event){ | |
| $ev = new \stdClass(); | |
| $ev->eventID = $event->id; | |
| $ev->eventTitle = $event->title; | |
| $ev->eventDesc = $event->description; | |
| $ev->holidayStartDate = date("d-m-Y", strtotime($event->date." ".$event->start_time)); | |
| $ev->holidayEndDate = date("d-m-Y", strtotime($event->date." ".$event->end_time)); | |
| $result[] = $ev; | |
| } | |
| return $result; | |
| } | |
| } | |
| public function getEventDetails($date) | |
| { | |
| $unixdate = strtotime($date); | |
| $sql_calendar = "select * from lms_calender where ((deptID=0 and batchID=0) and \"".$unixdate."\" between timeStart and timeEnd) and flag in (1,3)"; | |
| // echo $sql_calendar."\n\n"; | |
| try { | |
| return $this->executeQueryForObject($sql_calendar); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| public function getHolidays($deptID, $batchID, $date=null) | |
| { | |
| $dates=[]; | |
| $sql ="SELECT from_unixtime(t1.timeStart,'%Y-%m-%d') as start,from_unixtime(t1.timeEnd,'%Y-%m-%d') as end FROM lms_calender t1 WHERE ((t1.deptID=$deptID AND t1.batchID = $batchID) OR (t1.deptID=$deptID AND t1.batchID = 0) OR (t1.deptID=0 AND t1.batchID = 0)) AND t1.flag IN (3,1)"; | |
| if($date) | |
| { | |
| $sql .=" AND t1.timeStart <= unix_timestamp('".date('Y-m-d',strtotime($date))."')"; | |
| } | |
| try { | |
| $holidays = $this->executeQueryForList($sql); | |
| foreach ($holidays as $holiday) | |
| { | |
| if($holiday->start==$holiday->end) | |
| { | |
| $dates[]=$holiday->start; | |
| } | |
| else | |
| { | |
| $period = new \DatePeriod(new \DateTime($holiday->start), new \DateInterval('P1D'), new \DateTime($holiday->end)); | |
| foreach ($period as $holidayDate) { | |
| $dates[] = $holidayDate->format("Y-m-d"); | |
| } | |
| $dates[]=$holiday->end; | |
| } | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $dates; | |
| } | |
| public function getHolidaysBetweenDate($deptID, $batchID, $fromDate, $toDate , $hrHoliday = null) | |
| { | |
| $dates=[]; | |
| $sql ="SELECT from_unixtime(t1.timeStart,'%Y-%m-%d') as start,from_unixtime(t1.timeEnd,'%Y-%m-%d') as end FROM lms_calender t1 WHERE ( t1.timeStart BETWEEN unix_timestamp('".date('Y-m-d',strtotime($fromDate))."') AND unix_timestamp('".date('Y-m-d',strtotime($toDate))."') OR t1.timeEnd BETWEEN unix_timestamp('".date('Y-m-d',strtotime($fromDate))."') AND unix_timestamp('".date('Y-m-d',strtotime($toDate))."')) AND ((t1.deptID=$deptID AND t1.batchID = $batchID) OR (t1.deptID=$deptID AND t1.batchID = 0) OR (t1.deptID=0 AND t1.batchID = 0)) AND t1.flag IN (3,1) "; | |
| if(!empty($hrHoliday)){ | |
| $sql .= " AND hrholiday = $hrHoliday"; | |
| } | |
| try { | |
| $holidays = $this->executeQueryForList($sql); | |
| foreach ($holidays as $holiday) | |
| { | |
| if($holiday->start==$holiday->end) | |
| { | |
| $dates[]=$holiday->start; | |
| } | |
| else | |
| { | |
| $period = new \DatePeriod(new \DateTime($holiday->start), new \DateInterval('P1D'), new \DateTime($holiday->end)); | |
| foreach ($period as $holidayDate) { | |
| $dates[] = $holidayDate->format("Y-m-d"); | |
| } | |
| $dates[]=$holiday->end; | |
| } | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $dates; | |
| } | |
| public function copyTimetableFromCalendar($copyTimetables, $deptId, $batchId, $eventId) | |
| { | |
| $copiedTimetables = []; | |
| foreach ($copyTimetables as $copyTimetable) | |
| { | |
| if(TimetableService::getInstance()->copyTimetable($copyTimetable, $deptId, $batchId)) | |
| { | |
| $copiedTimetables[] = $copyTimetable; | |
| } | |
| } | |
| $this->updateCopiedTimetableFromCalendar($copiedTimetables, $eventId); | |
| } | |
| /** | |
| * update copied timetable | |
| * @param CopyTimetable[] $copiedTimetableFromCalendar | |
| * @return \com\linways\base\dto\MySqlResult | |
| */ | |
| public function updateCopiedTimetableFromCalendar($copiedTimetables, $eventId) | |
| { | |
| //Deleting copied timetable entries if any. | |
| $this->deleteCopiedTimetableFromCalendarByEventId($eventId); | |
| foreach ($copiedTimetables as $copiedTimetable) | |
| { | |
| $sql = "insert into copied_timetable_from_holidays (lms_calenderId, fromDate, toDate, createdBy, createdDate) values ($eventId, '$copiedTimetable->fromDate', '$copiedTimetable->toDate', $copiedTimetable->createdBy, utc_timestamp())"; | |
| try { | |
| $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| } | |
| public function deleteCopiedTimetableFromCalendarByEventId($eventId) | |
| { | |
| try | |
| { | |
| $sql = "DELETE FROM copied_timetable_from_holidays WHERE lms_calenderId=$eventId"; | |
| return $this->executeQuery($sql); | |
| } | |
| catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| public function getCopiedTimetableFromCalendarByEventId($eventId) | |
| { | |
| try | |
| { | |
| $sql = "SELECT * FROM copied_timetable_from_holidays WHERE lms_calenderId=$eventId"; | |
| return $this->executeQueryForList($sql); | |
| } | |
| catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| public function hasCopiedHolidayTimetable($eventId) | |
| { | |
| try | |
| { | |
| $sql = "SELECT id FROM copied_timetable_from_holidays WHERE lms_calenderId=$eventId"; | |
| return $this->executeQueryForObject($sql); | |
| } | |
| catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * | |
| * | |
| * @return void | |
| */ | |
| public function getAllCollegeWideHrHolidaysBetweenADateRange($fromDate, $toDate){ | |
| $sql = ""; | |
| $holidays = []; | |
| $fromDate = $this->realEscapeString($fromDate); | |
| $toDate = $this->realEscapeString($toDate); | |
| try | |
| { | |
| $holidays = $this->getHolidaysBetweenDate(0, 0, $fromDate, $toDate , 1); | |
| } | |
| catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| return $holidays; | |
| } | |
| /** | |
| * Get all departmentwise holidays | |
| * @author Vishnu M | |
| */ | |
| public function getAllDepartmentHolidayBetweenDateRange ( $fromDate, $toDate, $hrHoliday = NULL ) { | |
| $sql = null; | |
| $holidays = []; | |
| $dates = []; | |
| $fromDate = $this->realEscapeString($fromDate); | |
| $toDate = $this->realEscapeString($toDate); | |
| $fromDate = date('Y-m-d',strtotime($fromDate)); | |
| $toDate = date('Y-m-d',strtotime($toDate)); | |
| $sql = "SELECT from_unixtime(lms.timeStart,'%Y-%m-%d') as start, from_unixtime(lms.timeEnd,'%Y-%m-%d') as end, lms.deptID FROM lms_calender lms WHERE ( lms.timeStart BETWEEN unix_timestamp('$fromDate') AND unix_timestamp('$toDate') OR lms.timeEnd BETWEEN unix_timestamp('$fromDate') AND unix_timestamp('$toDate') ) AND lms.flag IN (3, 1) "; | |
| if ( !empty ( $hrHoliday ) ) { | |
| $sql .= " AND lms.hrholiday = 1 "; | |
| } | |
| try { | |
| $holidays = $this->executeQueryForList($sql); | |
| foreach ($holidays as $holiday) { | |
| if($holiday->start == $holiday->end) { | |
| $dates[$holiday->deptID][] = $holiday->start; | |
| } | |
| else { | |
| $period = new \DatePeriod(new \DateTime($holiday->start), new \DateInterval('P1D'), new \DateTime($holiday->end)); | |
| foreach ($period as $holidayDate) { | |
| $dates[$holiday->deptID][] = $holidayDate->format("Y-m-d"); | |
| } | |
| $dates[$holiday->deptID][] = $holiday->end; | |
| } | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $dates; | |
| } | |
| public function getAllHolidaysWithGivenDateRange($dayStart,$dayEnd,$HrHoliday = true, $batchID = null) | |
| { | |
| $holidays = []; | |
| $cond = $HrHoliday?" and hrholiday = 1 ":""; | |
| $cond .= $batchID ? "and batchID IN (0,$batchID) ": ""; | |
| $sql = "SELECT from_unixtime(t1.timeStart,'%Y-%m-%d') as start, | |
| from_unixtime(t1.timeEnd, | |
| '%Y-%m-%d') as end, | |
| hrholiday, | |
| hr_holiday_session, | |
| deptID, | |
| batchID, | |
| t1.eventTitle, | |
| t1.eventDesc | |
| FROM lms_calender t1 | |
| WHERE ( t1.timeStart BETWEEN unix_timestamp('$dayStart') AND unix_timestamp('$dayEnd') OR t1.timeEnd BETWEEN unix_timestamp('$dayStart') AND unix_timestamp('$dayEnd')) AND t1.flag IN (3,1)".$cond.";"; | |
| try { | |
| $holidayList = $this->executeQueryForList($sql); | |
| if($holidayList) | |
| { | |
| $periods = CommonUtil::getDatePeriodIterator($dayStart, CommonUtil::addOneDay($dayEnd)); | |
| foreach($periods as $period) | |
| { | |
| $date = $period->format('Y-m-d'); | |
| foreach($holidayList as $holiday) | |
| { | |
| if(strtotime($date) >= strtotime($holiday->start) && strtotime($date) <= strtotime($holiday->end) || (strtotime($holiday->start) == strtotime($holiday->end) && strtotime($holiday->start) == $date)) | |
| { | |
| if($holidays[$date]->session) | |
| { | |
| if('FD' == $holiday->hr_holiday_session || empty ( $holiday->hr_holiday_session ) ) | |
| { | |
| $holidays[$date]->session = "FD"; | |
| } | |
| else | |
| { | |
| if($holidays[$date]->session != $holiday->hr_holiday_session) | |
| { | |
| $holidays[$date]->session = 'FD'; | |
| } | |
| } | |
| } | |
| else | |
| { | |
| $holidays[$date]->session = $holiday->hr_holiday_session?$holiday->hr_holiday_session:"FD"; | |
| } | |
| if($holidays[$date]) | |
| { | |
| $holidays[$date]->title[] = $holiday->eventTitle.($holiday->eventDesc?'-'.$holiday->eventDesc:''); | |
| $holidays[$date]->dept[] = $holiday->deptID; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } catch (\Exception $th) { | |
| throw new ProfessionalException($th->getCode(), $th->getMessage()); | |
| } | |
| return $holidays; | |
| } | |
| public function getAllEvents($request){ | |
| $request = $this->realEscapeObject($request); | |
| $cond = ""; | |
| if($request->fromDate && $request->toDate){ | |
| $cond .= " AND timeStart >= '".strtotime($request->fromDate)."' AND timeEnd <= '".strtotime($request->toDate)."' "; | |
| }else if($request->fromDate && !$request->toDate){ | |
| $cond .= " AND timeStart >= '".strtotime($request->fromDate)."' "; | |
| } | |
| if($request->calendarFlag){ | |
| $cond .= " AND flag IN(".implode(',',$request->calendarFlag).") "; | |
| } | |
| $sql = "SELECT eventTitle, eventDesc, from_unixtime(timeStart,'%Y-%m-%d') as timeStart, from_unixtime(timeEnd,'%Y-%m-%d') as timeEnd, examID, assignmentID FROM lms_calender WHERE ((deptID=0 and batchID=0) || (deptID='$request->deptId' and batchID=0) || (deptID='$request->deptId' and batchID='$request->batchId')) $cond ORDER BY timeStart ASC"; | |
| try | |
| { | |
| return $this->executeQueryForList($sql); | |
| } | |
| catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| } |