public function findByReservationDateAndResource(Reservation $reservation, $start, $end, Resource $resource)
 {
     $sql = "SELECT r FROM FormaLibre\\ReservationBundle\\Entity\\Reservation r\n        INNER JOIN Claroline\\AgendaBundle\\Entity\\Event e WITH r.event = e\n        WHERE ((e.start BETWEEN :start AND :end) OR (e.end BETWEEN :start AND :end) OR (e.start <= :start AND e.end >= :end))\n        AND e.start NOT IN (:start, :end)\n        AND e.end NOT IN (:start, :end)\n        AND r.resource = :resource AND r <> :reservation";
     $query = $this->_em->createQuery($sql);
     $query->setParameter('reservation', $reservation->getId());
     $query->setParameter('start', $start + 1);
     $query->setParameter('end', $end - 1);
     $query->setParameter('resource', $resource->getId());
     return $query->getResult();
 }
Exemplo n.º 2
0
 public function completeJsonEventWithReservation(Reservation $reservation)
 {
     $color = $reservation->getResource()->getColor();
     return array_merge($reservation->getEvent()->jsonSerialize(), ['color' => !empty($color) ? $color : '#3a87ad', 'comment' => $reservation->getComment(), 'resourceTypeId' => $reservation->getResource()->getResourceType()->getId(), 'resourceTypeName' => $reservation->getResource()->getResourceType()->getName(), 'resourceId' => $reservation->getResource()->getId(), 'reservationId' => $reservation->getId(), 'editable' => $this->hasAccess($reservation->getEvent()->getUser(), $reservation->getResource(), ReservationController::BOOK), 'durationEditable' => $this->hasAccess($reservation->getEvent()->getUser(), $reservation->getResource(), ReservationController::BOOK)]);
 }