SLT::computeExecutionDate PHP Method

computeExecutionDate() public method

Get execution date of a sla level
public computeExecutionDate ( $start_date, $slalevels_id, $additional_delay ) : execution
$start_date datetime start date
$slalevels_id integer sla level id
$additional_delay integer additional delay to add or substract (for waiting time) (default 0)
return execution date time (NULL if sla not exists)
    function computeExecutionDate($start_date, $slalevels_id, $additional_delay = 0)
    {
        if (isset($this->fields['id'])) {
            $slalevel = new SlaLevel();
            if ($slalevel->getFromDB($slalevels_id)) {
                // sla level exists
                if ($slalevel->fields['slts_id'] == $this->fields['id']) {
                    // correct slt level
                    $work_in_days = $this->fields['definition_time'] == 'day';
                    $delay = $this->getSLTTime();
                    // Based on a calendar
                    if ($this->fields['calendars_id'] > 0) {
                        $cal = new Calendar();
                        if ($cal->getFromDB($this->fields['calendars_id'])) {
                            return $cal->computeEndDate($start_date, $delay, $slalevel->fields['execution_time'] + $additional_delay, $work_in_days);
                        }
                    }
                    // No calendar defined or invalid calendar
                    $delay += $additional_delay + $slalevel->fields['execution_time'];
                    $starttime = strtotime($start_date);
                    $endtime = $starttime + $delay;
                    return date('Y-m-d H:i:s', $endtime);
                }
            }
        }
        return NULL;
    }