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