public function getVirtualInterval(\Club\BookingBundle\Entity\Interval $interval, $date) { $start = new \DateTime($date->format('Y-m-d') . ' ' . $interval->getStartTime()->format('H:i:s')); $end = new \DateTime($date->format('Y-m-d') . ' ' . $interval->getStopTime()->format('H:i:s')); $i = new \DateInterval('PT1S'); $start->add($i); $bookings = $this->em->getRepository('ClubBookingBundle:Booking')->getAllBetween($start, $end, $interval->getField()); if ($bookings) { $interval->setBooking($bookings[0]); } $schedules = $this->em->getRepository('ClubTeamBundle:Schedule')->getAllBetween($start, $end, null, $interval->getField()->getLocation(), $interval->getField()); if ($schedules) { $interval->setSchedule($schedules[0]); } $plans = $this->em->getRepository('ClubBookingBundle:Plan')->getBetweenByField($interval->getField(), $start, $end); if ($plans) { $interval->setPlan($plans[0]); } return $interval; }
protected function validateSubscriptionTime(\Club\UserBundle\Entity\User $user, \Club\BookingBundle\Entity\Interval $interval) { $subs = $this->em->getRepository('ClubShopBundle:Subscription')->getActiveSubscriptions($user, null, 'booking', null, $interval->getField()->getLocation()); if (!$subs) { return false; } foreach ($subs as $sub) { foreach ($sub->getSubscriptionAttributes() as $attr) { switch ($attr->getAttributeName()) { case 'start_time': $start = clone $interval->getStartTime(); $start->setDate(date('Y'), date('m'), date('d')); $t = new \DateTime(date('Y-m-d ') . $attr->getValue()); if ($start < $t) { return false; } break; case 'stop_time': $end = clone $interval->getStopTime(); $end->setDate(date('Y'), date('m'), date('d')); $t = new \DateTime(date('Y-m-d ') . $attr->getValue()); if ($end > $t) { return false; } break; } } } return true; }