/** * Gets the business date after the given date (excluding holidays). * * @param \DateTime $date * * @return \DateTime */ private function getDateAfter(\DateTime $date) { $tmpDate = clone $date; $tmpDate->modify('+1 day'); $dayOfWeek = (int) $tmpDate->format('N'); $closestDay = $this->getClosestDayAfter($dayOfWeek); if ($closestDay->getDayOfWeek() !== $dayOfWeek) { $tmpDate->modify(sprintf('next %s', Days::toString($closestDay->getDayOfWeek()))); } return $tmpDate; }
public function isWorkingNow2($place) { $this->setPlace($place); //??????? $days = []; $r = new \ReflectionClass('Business\\Days'); foreach ($place->getBusinessHours() as $bh) { foreach (Days::toArray() as $key => $day) { $dayName = strtoupper(Days::toString($day)); $nextDayName = strtoupper(date('l', strtotime($dayName . " + 1 day"))); $method = 'getDay' . $dayName; //TODO AFTER MIDNIGHT if ($exception = $this->isExceptionDay($day)) { if ($exception->getStartsAt() > $exception->getEndsAt()) { if (array_intersect([$exception->getStartsAt()->format('H:i'), '00:00'], $days[$dayName])) { echo 'in_array'; var_dump($days[$dayName], [$exception->getStartsAt()->format('H:i'), '00:00']); die; $days[$dayName][] = [$exception->getStartsAt()->format('H:i'), '00:00']; $days[$nextDayName][] = ['00:00', $exception->getEndsAt()->format('H:i')]; continue; } } $days[$dayName][] = [$exception->getStartsAt()->format('H:i'), $exception->getEndsAt()->format('H:i')]; var_dump($days); die; } if ($bh->{$method}()) { if ($bh->getStartsAt() > $bh->getEndsAt()) { $days[$dayName][] = [$bh->getStartsAt()->format('H:i'), '00:00']; //var_dump($days);die(); $days[$nextDayName][] = ['00:00', $bh->getEndsAt()->format('H:i')]; continue; } $days[$dayName][] = [$bh->getStartsAt()->format('H:i'), $bh->getEndsAt()->format('H:i')]; } } } // foreach($place->getBusinessHoursException() as $bhE){ // if($bhE->getStartsAt()){ // $dayName = strtoupper($bhE->getDay()->format('l')); // $nextDayName = strtoupper(date('l', strtotime($dayName . " + 1 day"))); // // if($bhE->getStartsAt() > $bhE->getEndsAt()) // { // var_dump(in_array([$bhE->getStartsAt()->format('H:i'), '00:00'], $days[$dayName]), 'diff'); // if(!in_array([$bhE->getStartsAt()->format('H:i'), '00:00'], $days[$dayName])){ // $days[$dayName][] = [$bhE->getStartsAt()->format('H:i'), '00:00']; // $days[$nextDayName][] = ['00:00', $bhE->getEndsAt()->format('H:i')]; // continue; // } // } // // $days[$dayName][] = [$bhE->getStartsAt()->format('H:i'), $bhE->getEndsAt()->format('H:i')]; // //unset($days[$nextDayName][0]); // } // } var_dump($days, $holidaysFinal); die; }