Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 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;
 }