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;
}
Esempio n. 2
0
 /**
  * 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;
 }
Esempio n. 3
0
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;
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
$_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;
Esempio n. 7
0
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);
    }
}
Esempio n. 8
0
 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>';