resolution of calendar conflicts2
This commit is contained in:
@@ -832,43 +832,49 @@ class calendar extends CalendarDefinition
|
||||
return $newDate;
|
||||
}
|
||||
|
||||
//Calculate the duration betwen two dates with a calendar
|
||||
public function dashCalculateDurationWithCalendar ($iniDate, $finDate = null, $calendarData = array())
|
||||
{
|
||||
if ((is_null($finDate)) || ($finDate == '')) {
|
||||
$finDate = date('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
if ( (strtotime($finDate)) <= (strtotime($iniDate)) ) {
|
||||
return 0.00;
|
||||
}
|
||||
|
||||
$secondDuration = 0.00;
|
||||
$timeIniDate = strtotime($iniDate);
|
||||
$timeFinDate = strtotime($finDate);
|
||||
|
||||
$finDate = $this->dashGetIniDate($finDate, $calendarData);
|
||||
$newDate = $iniDate;
|
||||
while ($timeIniDate < $timeFinDate) {
|
||||
$newDate = $this->dashGetIniDate($newDate, $calendarData);
|
||||
|
||||
$rangeWorkHour = $this->dashGetRangeWorkHours($newDate, $calendarData['BUSINESS_DAY']);
|
||||
$onlyDate = (date('Y-m-d',strtotime($newDate))) . ' ' . $rangeWorkHour['END'];
|
||||
|
||||
if ( (strtotime($finDate)) < (strtotime($onlyDate)) ) {
|
||||
$secondRes = ( ((float)strtotime($finDate)) - ((float)strtotime($newDate)) );
|
||||
$timeIniDate = strtotime($finDate);
|
||||
$secondDuration += (float)$secondRes;
|
||||
} else {
|
||||
$secondRes = ( ((float)strtotime($onlyDate)) - ((float)strtotime($newDate)) );
|
||||
$newDate = $onlyDate;
|
||||
$timeIniDate = strtotime($onlyDate);
|
||||
$secondDuration += (float)$secondRes;
|
||||
}
|
||||
}
|
||||
return $secondDuration;
|
||||
}
|
||||
|
||||
//Calculate the duration betwen two dates with a calendar
|
||||
public function dashCalculateDurationWithCalendar ($iniDate, $finDate = null, $calendarData = array())
|
||||
{
|
||||
if ((is_null($finDate)) || ($finDate == '')) {
|
||||
$finDate = date('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
$secondDuration = 0.00;
|
||||
|
||||
if ( (strtotime($iniDate)) < (strtotime($finDate)) ) {
|
||||
$timeIniDate = strtotime($iniDate);
|
||||
$timeFinDate = strtotime($finDate);
|
||||
} elseif ( (strtotime($finDate)) < (strtotime($iniDate)) ) {
|
||||
$timeIniDate = strtotime($finDate);
|
||||
$timeFinDate = strtotime($iniDate);
|
||||
$auxDate = $iniDate;
|
||||
$iniDate = $finDate;
|
||||
$finDate = $auxDate;
|
||||
} else {
|
||||
return $secondDuration;
|
||||
}
|
||||
|
||||
$finDate = $this->dashGetIniDate($finDate, $calendarData);
|
||||
$newDate = $iniDate;
|
||||
while ($timeIniDate < $timeFinDate) {
|
||||
$newDate = $this->dashGetIniDate($newDate, $calendarData);
|
||||
|
||||
$rangeWorkHour = $this->dashGetRangeWorkHours($newDate, $calendarData['BUSINESS_DAY']);
|
||||
$onlyDate = (date('Y-m-d',strtotime($newDate))) . ' ' . $rangeWorkHour['END'];
|
||||
|
||||
if ( (strtotime($finDate)) < (strtotime($onlyDate)) ) {
|
||||
$secondRes = ( ((float)strtotime($finDate)) - ((float)strtotime($newDate)) );
|
||||
$timeIniDate = strtotime($finDate);
|
||||
$secondDuration += (float)$secondRes;
|
||||
} else {
|
||||
$secondRes = ( ((float)strtotime($onlyDate)) - ((float)strtotime($newDate)) );
|
||||
$newDate = $onlyDate;
|
||||
$timeIniDate = strtotime($onlyDate);
|
||||
$secondDuration += (float)$secondRes;
|
||||
}
|
||||
}
|
||||
return $secondDuration;
|
||||
}
|
||||
|
||||
public function dashGetIniDate ($iniDate, $calendarData = array())
|
||||
{
|
||||
@@ -1041,4 +1047,4 @@ class calendar extends CalendarDefinition
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
?>
|
||||
Reference in New Issue
Block a user