function CalculateAnnualLeaveRequired($startDate, $endDate, $absenceTypeID) { //Assume no leave is required. Will increment this in the function. $annualLeaveRequired = 0; $absenceType = RetrieveAbsenceTypeByID($absenceTypeID); // Check to ensure that an absence type of this ID actually exists. if ($absenceType != NULL) { //Q.Does the absence type supplied use annual leave? if ($absenceType[ABS_TYPE_USES_LEAVE] == TRUE) { //Y.We need to calulate the leave required. First convert dates supplied // into times. $startTime = strtotime($startDate); $endTime = strtotime($endDate); // Loop between timestamps, 24 hours at a time. // Note that 86400 = 24 hours in second. for ($i = $startTime; $i <= $endTime; $i = $i + 86400) { //Format the time into a date string $thisDate = date('Y-m-d', $i); // 2010-05-01, 2010-05-02, etc if (!isWeekend($thisDate)) { if (!isPublicHoliday($thisDate)) { //Date is not a weekend or public holiday, so increment $annualLeaveRequired = $annualLeaveRequired + 1; } } } } } else { error_log("Unknown absence type identifier of {$absenceTypeID}"); } return $annualLeaveRequired; }
/** * Performs data and time validity pre-checks * Return string if problem, null otherwise */ private function preChecks() { global $weekEndText, $websiteNotAvailable; if (isWeekend()) { return $weekEndText; } if (!(is_a($this, 'TextFileParser') || is_a($this, 'TextFileFixedPDFParser'))) { if (!URLExists($this->getBaseMenuURL())) { return $websiteNotAvailable; } } return null; }
function filter($activities) { $result = array(); if (isWeekend()) { foreach ($activities as $value) { if ($value['weekend']) { $result[] = $value; } } return $result; } return $activities; }
function calculaTiempoDentroSLA($ticket) { //$ticket->getCreate_time(), $ticket->getFechaCierre() //"2014-01-01" //"2014-02-01" //status 2 es solucionado //es decir ya tiene fecha de cierre if ($ticket->getTicket_state_id() == 2) { $FI = $ticket->getCreate_time(); $FF = $ticket->getFechaCierre(); } else { $month = date("m"); $day = date('d'); $year = date('y'); $FI = $ticket->getCreate_time(); $FF = $year . "-" . $month . "-" . $day; } //print "tmpFI: ".$tmpFI[0]; //print "tmpFF: ".$tmpFF[0]; print "tmpFI: " . $FI . "</br>"; print "tmpFF: " . $FF . "</br>"; for ($date = strtotime($FI); $date < strtotime($FF); $date = strtotime("+1 day", $date)) { echo date("Y-m-d", $date) . "<br/>"; } $arrayScalaSLA = array(); $arrayDates = array(); $arrayDateCalculations = array(); $arrayDates = datePeriodStartEnd($FI, $FF); print "Elementos Array " . count($arrayDates) . "<br/>"; $x = 0; //Generamos el array de calculo del tiempo del SLA foreach ($arrayDates as $dates => $day) { print " -" . $day . "<br/>"; if ($x == 0) { $arrayDateCalculations[] = $fechaInicial; } elseif ($x == count($arrayDates) - 1) { $arrayDateCalculations[] = $fechaFinal; } else { //Dias Normales $arrayDateCalculations[] = $day . " 08:00:00"; } $x++; } $acumuladoCalculo = 0; $acumuladoDia = 0; foreach ($arrayDateCalculations as $aDates => $aDay) { $lstFechaHora = explode(" ", $aDay); $xtractFecha = $lstFechaHora[0]; $lstHHMMSS = explode(":", $lstFechaHora[1]); $xtractHH = $lstHHMMSS[0]; $xtractMM = $lstHHMMSS[1]; $xtractSS = $lstHHMMSS[2]; //print " Fecha: ".$xtractFecha."<br/>"; //print " Hora: ".$lstHHMMSS."<br/>"; //print " HH: ".$xtractHH."<br/>"; //print " MM: ".$xtractMM."<br/>"; //print " SS: ".$xtractSS."<br/>"; if (isWeekend($aDay) == 0) { //Hacer el calculo de la escala SLA del dia //print "-- Dia: ".$aDay." <br/>"; for ($hh = $xtractHH; $hh < 24; $hh++) { switch ($hh) { case 8: //8 AM $acumuladoDia++; //print " The hh is: 8 <br>"; break; case 9: //9 AM $acumuladoDia++; //print " The hh is: 9 <br>"; break; case 10: //10 AM $acumuladoDia++; //print " The hh is: 10 <br>"; break; case 11: //11 AM $acumuladoDia++; //print " The hh is: 11 <br>"; break; case 12: //12 AM $acumuladoDia++; //print " The hh is: 12 <br>"; break; case 13: //13 AM $acumuladoDia++; ///print " The hh is: 13 <br>"; break; case 14: //14 AM $acumuladoDia++; //print " The hh is: 14 <br>"; break; case 15: //15 AM $acumuladoDia++; //print " The hh is: 15 <br>"; break; case 16: //16 AM $acumuladoDia++; //print " The hh is: 16 <br>"; break; case 17: //17 AM $acumuladoDia++; //print " The hh is: 17 <br>"; break; case 18: //18 PM $acumuladoDia++; //print " The hh is: 18 <br>"; break; default: //print " The hh is: DEFAULT <br>"; } //print "Termino Loop Hora : ".$acumuladoDia."<br/>"; //print " The number is: $hh <br>"; //print "<br/> Factor Scala SLA: ".$factorScalaSLA."<br/>"; //$calculoScalaSLA = $calculoScalaSLA + ( ($factorScalaSLA*60) + $xtractMM); //$factorScalaSLA = 0; } //for ($hh = $xtractHH; $hh < 24; $hh++) { $acumuladoCalculo = $acumuladoCalculo + $acumuladoDia; $acumuladoDia = 0; //print "SLA Loop: ".$acumuladoCalculo."<br/>"; } //if($ticket->isWeekend($aDay) == 0){ } //foreach($arrayDateCalculations as $aDates => $aDay){ //print "Acumulado Tiempo SLA: ".$acumuladoCalculo."<br/>"; $acumuladoMinutosSLA = $acumuladoCalculo * 60; return $acumuladoMinutosSLA; }
function getWhiteHorse() { global $weekEndText, $websiteNotAvailable, $menuFormat, $WhiteHorseBaseMenuURL; if (isWeekend()) { return $weekEndText; } $fallback = sprintf($menuFormat, $WhiteHorseBaseMenuURL); $html = getHTMLFromURL($WhiteHorseBaseMenuURL . 'crbst_4.html'); if (empty($html)) { return $fallback; } $doc = new DOMDocument(); $doc->loadHTML($html); $finder = new DomXPath($doc); $spaner = $finder->query("//*[contains(@class, 'wa-but-txt ')]"); // get first <a> if ($spaner->length > 0) { $pdfLink = $spaner->item(0); return sprintf($menuFormat, getBaseURL($WhiteHorseBaseMenuURL) . $pdfLink->getAttribute('href')); } return $fallback; }
$_GET['dateOne'] = "17-12-2014"; $_GET['dateTwo'] = "31-12-2014"; $_GET['holidays'] = "31-12-2014\n24-12-2014\n08-12-2014"; $begin = new DateTime($_GET['dateOne']); $end = new DateTime($_GET['dateTwo']); $end = $end->modify('+1 day'); $interval = new DateInterval('P1D'); $holidays = preg_split("/\n/", $_GET['holidays']); $dateRange = new DatePeriod($begin, $interval, $end); for ($i = 0; $i < count($holidays); $i++) { $holidays[$i] = trim($holidays[$i]); } $result = []; foreach ($dateRange as $date) { $date = date_format($date, 'd-m-Y'); if (!isWeekend($date) && !in_array($date, $holidays)) { $result[] = $date; } } if (!empty($result)) { echo "<ol>"; foreach ($result as $date) { echo "<li>{$date}</li>"; } echo "</ol>"; } else { echo "<h2>No workdays</h2>"; } function isWeekend($date) { return date('N', strtotime($date)) >= 6;
function getOHLC($company, $from = "1900-01-01 00:00:00", $to = null, $dataorg = "json", $host, $db, $user, $pass) { $ohlcur = []; //ohl-current candlestick $accessOHLCur = false; //don't read the ohlcurrent by default // Create connection $con = mysqli_connect($host, $user, $pass, $db); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); return; } if ($dataorg == "highchart" || $dataorg == "array2") { //Added 8 hours to timestamp because of the Philippine Timezone WRT GMT (+8:00) $sql = "SELECT (UNIX_TIMESTAMP(DATE_ADD(timestamp, INTERVAL 8 HOUR)) * 1000) as timestamp, \n\t\t\t\t\topen, high, low, close, volume \n\t\t\t\t\tFROM {$company} \n\t\t\t\t\tWHERE timestamp >= '" . $from . "' AND timestamp <= '" . $to . "' ORDER BY timestamp ASC"; } else { $sql = "SELECT DATE_FORMAT(timestamp, '%Y-%m-%d') as timestamp, open, high, low, close, volume \n\t\t\t\t\tFROM {$company} \n\t\t\t\t\tWHERE timestamp >= '" . $from . "' AND timestamp <= '" . $to . "' ORDER BY timestamp ASC"; } $result = mysqli_query($con, $sql); $dbreturn = ""; $ctr = 0; $temp; while ($row = mysqli_fetch_array($result)) { if ($dataorg == "json") { $dbreturn[$ctr]['timestamp'] = $row['timestamp']; $dbreturn[$ctr]['open'] = $row['open']; $dbreturn[$ctr]['high'] = $row['high']; $dbreturn[$ctr]['low'] = $row['low']; $dbreturn[$ctr]['close'] = $row['close']; $dbreturn[$ctr]['volume'] = $row['volume']; } elseif ($dataorg == "highchart") { $dbreturn[$ctr][0] = doubleval($row['timestamp']); $dbreturn[$ctr][1] = floatval($row['open']); $dbreturn[$ctr][2] = floatval($row['high']); $dbreturn[$ctr][3] = floatval($row['low']); $dbreturn[$ctr][4] = floatval($row['close']); $dbreturn[$ctr][5] = intval($row['volume']); } elseif ($dataorg == "array") { $dbreturn[$ctr][0] = $row['timestamp']; $dbreturn[$ctr][1] = floatval($row['open']); $dbreturn[$ctr][2] = floatval($row['high']); $dbreturn[$ctr][3] = floatval($row['low']); $dbreturn[$ctr][4] = floatval($row['close']); $dbreturn[$ctr][5] = intval($row['volume']); } elseif ($dataorg == "array2") { $dbreturn[$ctr][0] = doubleval($row['timestamp']); $dbreturn[$ctr][1] = floatval($row['open']); $dbreturn[$ctr][2] = floatval($row['high']); $dbreturn[$ctr][3] = floatval($row['low']); $dbreturn[$ctr][4] = floatval($row['close']); $dbreturn[$ctr][5] = intval($row['volume']); } else { $dbreturn[$ctr]['timestamp'] = $row['timestamp']; $dbreturn[$ctr]['open'] = $row['open']; $dbreturn[$ctr]['high'] = $row['high']; $dbreturn[$ctr]['low'] = $row['low']; $dbreturn[$ctr]['close'] = $row['close']; $dbreturn[$ctr]['volume'] = $row['volume']; } $ctr = $ctr + 1; } if ($ctr <= 1) { //no data return 0; } $dateToday = date('Y-m-d'); $latestTS = 0; switch ($dataorg) { case 'json': $latestTS = $dbreturn[$ctr - 1]['timestamp']; break; case 'highchart': $latestTS = $dbreturn[$ctr - 1][0]; $dateToday = date('U') * 1000; break; case 'array': $latestTS = $dbreturn[$ctr - 1][0]; break; case 'array2': $latestTS = $dbreturn[$ctr - 1][0]; $dateToday = date('U') * 1000; break; default: $latestTS = $dbreturn[$ctr - 1]['timestamp']; break; } //echo "after switch. Date Today: $dateToday, Latest: $latestTS<Br>"; if ($dateToday > $latestTS && !isWeekend($dateToday)) { $accessOHLCur = true; //get the candlestick for today OHLCurrent $ohlcur = getOHLCurrent($company, $dataorg, $host, $db, $user, $pass); //echo json_encode($ohlcur); if ($ohlcur == "") { $accessOHLCur = false; //echo "Returned OHLCurrent is empty. "; } } mysqli_close($con); if ($dataorg == "json") { if ($accessOHLCur) { $ts = date('Y-m-d', strtotime($ohlcur[0]['timestamp'])); //echo "json ts new: " . $ts . "<Br>"; if ($ts > $dbreturn[$ctr - 1]['timestamp']) { //echo "json OHLCurrent > latestDB TS<Br>"; $dbreturn[$ctr]['timestamp'] = $ts; $dbreturn[$ctr]['open'] = $ohlcur[0]['open']; $dbreturn[$ctr]['high'] = $ohlcur[0]['high']; $dbreturn[$ctr]['low'] = $ohlcur[0]['low']; $dbreturn[$ctr]['close'] = $ohlcur[0]['close']; $dbreturn[$ctr]['volume'] = $ohlcur[0]['volume']; } } echo json_encode($dbreturn); } elseif ($dataorg == "highchart") { //echo "highchart<Br>"; if ($accessOHLCur) { $ts = $ohlcur[0][0] / 1000; $ts = ($ts - $ts % 86400) * 1000; //echo "highchart ts: $ts<Br>"; if ($ts > $dbreturn[$ctr - 1][0]) { //echo "highchart OHLCurrent > latestDB TS<Br>"; $dbreturn[$ctr][0] = $ts; $dbreturn[$ctr][1] = $ohlcur[0][1]; $dbreturn[$ctr][2] = $ohlcur[0][2]; $dbreturn[$ctr][3] = $ohlcur[0][3]; $dbreturn[$ctr][4] = $ohlcur[0][4]; $dbreturn[$ctr][5] = $ohlcur[0][5]; } } echo json_encode($dbreturn); } elseif ($dataorg == "array") { if ($accessOHLCur) { //echo "company: $company, "; $ts = date('Y-m-d', strtotime($ohlcur[0][0])); //echo "array ts new: " . $ts . "<Br>"; if ($ts > $dbreturn[$ctr - 1][0]) { //echo "array OHLCurrent > latestDB TS<Br>"; $dbreturn[$ctr][0] = $ts; $dbreturn[$ctr][1] = $ohlcur[0][1]; $dbreturn[$ctr][2] = $ohlcur[0][2]; $dbreturn[$ctr][3] = $ohlcur[0][3]; $dbreturn[$ctr][4] = $ohlcur[0][4]; $dbreturn[$ctr][5] = $ohlcur[0][5]; } } //echo json_encode($dbreturn); return $dbreturn; } elseif ($dataorg == "array2") { if ($accessOHLCur) { $ts = $ohlcur[0][0] / 1000; $ts = ($ts - $ts % 86400) * 1000; //echo "array2 ts: $ts<Br>"; if ($ts > $dbreturn[$ctr - 1][0]) { //echo "array2 OHLCurrent > latestDB TS<Br>"; $dbreturn[$ctr][0] = $ts; $dbreturn[$ctr][1] = $ohlcur[0][1]; $dbreturn[$ctr][2] = $ohlcur[0][2]; $dbreturn[$ctr][3] = $ohlcur[0][3]; $dbreturn[$ctr][4] = $ohlcur[0][4]; $dbreturn[$ctr][5] = $ohlcur[0][5]; } } //echo json_encode($dbreturn); return $dbreturn; } else { //json $dbreturn[$ctr]['timestamp'] = $ohlcur['timestamp']; $dbreturn[$ctr]['open'] = $ohlcur['open']; $dbreturn[$ctr]['high'] = $ohlcur['high']; $dbreturn[$ctr]['low'] = $ohlcur['low']; $dbreturn[$ctr]['close'] = $ohlcur['close']; $dbreturn[$ctr]['volume'] = $ohlcur['volume']; echo json_encode($dbreturn); } }
echo '<li>Overtime: </li>'; foreach ($arrayGetWorktime as $key => $value) { if (isWeekend($value['work_date']) == true) { continue; } else { $OvertimeTotal += $value['overtime']; } } echo '<li><strong>' . $OvertimeTotal . '</strong></li> '; echo '</ul>'; echo '</li>'; echo '<li>'; //Performance $dayRealDur = 0; foreach ($arrayWork as $key => $value) { if (isWeekend($value['work_date']) == true) { echo '<li class="work-time-tooltip" data-placement="top" data-toggle="tooltip" title="Weekend"><strong>Weekend</strong></li>'; $dayRealDur += 0; } else { $dayRealDur += $value['real_duration']; } } echo '<ul class="inline">'; echo '<li>Working real hour: </li>'; echo '<li class="label label-warning">' . $dayRealDur . '</li>'; echo '</ul>'; echo '</li>'; echo '<li>'; echo '<ul class="inline">'; echo '<li>Capacity: </li>'; echo '<li class="label label-info">' . @round($dayRealDur / $workingDayTotal * 100, 2) . '%</li>';