resolution of calendar conflicts2

This commit is contained in:
Dante
2015-06-10 11:01:27 -04:00
parent 7637f84150
commit 2c21a10f6e

View File

@@ -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
}
}
?>
?>