Skip to content

Commit 432991a

Browse files
committed
fix: calendar config
1 parent cfb3f19 commit 432991a

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

src/ProdScheduler/SchedulerComputeTrait.php

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public function compute()
4343
$start -= $singleCost;
4444
}
4545
}
46-
4746
$start = $this->phaseTimeWithCalendarCompute($originStart, $start, true);
4847
$start = $this->phaseTimeWithRestDayCompute($originStart, $start);
4948
$this->list[$k]['phases_reverse'][$i]['start'] = $start;
@@ -104,33 +103,39 @@ private function initialStartTimeCompute(): int
104103
{
105104
$initialScheduleDate = date(self::SCHEDULER_DATE_FORMAT, $this->ISTS);
106105
$dayCalendar = $this->getDayCalendar($this->ISTS);
107-
108106
if ($this->computeDirection === 1) {
109107
if (empty($dayCalendar)) {
110108
$dayCalendarStartTime = $this->getDayCalendarStartTime($this->defaultDayCalendar);
111109

112110
$this->ISDT = $initialScheduleDate . " " . $dayCalendarStartTime;
113111
} else {
114112
$monthCalendar = $this->getMonthCalendar();
115-
foreach ($monthCalendar as $k => $day) {
116-
if ($initialScheduleDate === $day['date']) {
117-
if ($day['is_rest'] === 1) {
118-
if ($k !== count($monthCalendar)) {
119-
$nextDayCalendar = $monthCalendar[$k + 1];
120-
if ($nextDayCalendar['is_rest'] === 1) {
121-
continue;
122-
} else {
123-
$nextDayCalendarDate = $nextDayCalendar['date'];
124-
$nextDayCalendarStartTime = $this->getDayCalendarStartTime($nextDayCalendar);
125-
126-
$this->ISDT = $nextDayCalendarDate . " " . $nextDayCalendarStartTime;
113+
if (empty($monthCalendar)) {
114+
$dayCalendarStartTime = $this->getDayCalendarStartTime($this->defaultDayCalendar);
115+
116+
$this->ISDT = $initialScheduleDate . " " . $dayCalendarStartTime;
117+
} else {
118+
119+
foreach ($monthCalendar as $k => $day) {
120+
if ($initialScheduleDate === $day['date']) {
121+
if ($day['is_rest'] === 1) {
122+
if ($k !== count($monthCalendar)) {
123+
$nextDayCalendar = $monthCalendar[$k + 1];
124+
if ($nextDayCalendar['is_rest'] === 1) {
125+
continue;
126+
} else {
127+
$nextDayCalendarDate = $nextDayCalendar['date'];
128+
$nextDayCalendarStartTime = $this->getDayCalendarStartTime($nextDayCalendar);
129+
130+
$this->ISDT = $nextDayCalendarDate . " " . $nextDayCalendarStartTime;
131+
}
127132
}
128-
}
129-
} else {
130-
$dayCalendarDate = $day['date'];
131-
$dayCalendarStartTime = $this->getDayCalendarStartTime($day);
133+
} else {
134+
$dayCalendarDate = $day['date'];
135+
$dayCalendarStartTime = $this->getDayCalendarStartTime($day);
132136

133-
$this->ISDT = $dayCalendarDate . " " . $dayCalendarStartTime;
137+
$this->ISDT = $dayCalendarDate . " " . $dayCalendarStartTime;
138+
}
134139
}
135140
}
136141
}
@@ -180,6 +185,10 @@ private function phaseTimeWithCalendarCompute(int $originStart, int &$start, boo
180185
if ($diff >= $dayDuration) {
181186
while ($diff > 0) {
182187
$dayCalendar = $this->getDayCalendar($originStart);
188+
if (!isset($dayCalendar['dayDuration'])) {
189+
$dayCalendar = $this->getDefaultDayCalendar()['profile'];
190+
}
191+
183192
if (isset($dayCalendar['dayDuration']) && $dayCalendar['dayDuration'] < $diff) {
184193
$diff -= $dayCalendar['dayDuration'];
185194
if ($isReverse) {
@@ -250,7 +259,7 @@ private function phaseTimeWithCalendarCompute(int $originStart, int &$start, boo
250259
}
251260

252261
if ($start < $dayStart) {
253-
$prevCalendar = $this->getDayCalendar($start - self::SCHEDULER_DAY_SECONDS);
262+
$prevCalendar = $this->getDayCalendar($originStart - self::SCHEDULER_DAY_SECONDS);
254263
if (!isset($prevCalendar['dayEnd'])) {
255264
$defaultCalendar = $this->getDefaultDayCalendar();
256265
$prevCalendar['rest'] = $defaultCalendar['profile']['rest'];

0 commit comments

Comments
 (0)