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();
 }
 public function importResourcesAction($file)
 {
     $file = new \SplFileObject($file->getPathname());
     $reader = new CsvReader($file);
     $reader->setHeaderRowNumber(0);
     $data = ['resourcesTypes' => [], 'resources' => []];
     foreach ($reader as $row) {
         $resourceTypeName = ucfirst($row['resource_type']);
         $resourceName = ucfirst($row['name']);
         $maxTimeReservation = $row['max_time_reservation'];
         $description = ucfirst($row['description']);
         $localisation = ucfirst($row['localisation']);
         $quantity = $row['quantity'];
         $color = empty($row['color']) ? '#3a87ad' : $row['color'];
         $resourceType = $this->resourceTypeRepo->findOneBy(['name' => $resourceTypeName]);
         if (!$resourceType) {
             $resourceType = new ResourceType();
             $resourceType->setName($resourceTypeName);
             $this->em->persist($resourceType);
             $this->em->flush();
             $data['resourcesTypes'][] = ['id' => $resourceType->getId(), 'name' => $resourceType->getName()];
         }
         $resource = new Resource();
         $resource->setResourceType($resourceType)->setName($resourceName)->setMaxTimeReservation($maxTimeReservation)->setDescription($description)->setLocalisation($localisation)->setQuantity($quantity)->setColor($color);
         $this->em->persist($resource);
         $this->em->flush();
         $data['resources'][] = ['resourceTypeId' => $resourceType->getId(), 'resource' => ['id' => $resource->getId(), 'name' => $resourceName]];
     }
     return $data;
 }
 /**
  * @EXT\Route(
  *      "/get-resource-info/{id}",
  *      name="formalibre_reservation_get_resource_info",
  *      defaults={"id"=null},
  *      options={"expose"=true}
  * )
  */
 public function getResourceInfoAction(Resource $resource = null)
 {
     $none = $this->translator->trans('none', [], 'platform');
     if (!$resource) {
         return new JsonResponse(['description' => $none, 'localisation' => $none, 'maxTime' => $none]);
     }
     return new JsonResponse(['description' => empty($resource->getDescription()) ? $none : $resource->getDescription(), 'localisation' => empty($resource->getLocalisation()) ? $none : $resource->getLocalisation(), 'maxTime' => $resource->getMaxTimeReservation() === '00:00:00' ? $none : $resource->getMaxTimeReservation()]);
 }
Пример #4
0
 public function addResource(Resource $resource)
 {
     $this->resources[] = $resource;
     $resource->setResourceType($this);
     return $this;
 }
Пример #5
0
 public function hasAccess(User $user, Resource $resource, $mask)
 {
     $resourceRights = $resource->getResourceRights();
     $userRoles = $this->tokenStorage->getToken()->getRoles();
     $hasAccess = false;
     foreach ($userRoles as $userRole) {
         foreach ($resourceRights as $resourceRight) {
             if ($userRole->getRole() == $resourceRight->getRole()->getName() && $resourceRight->getMask() >= ReservationController::ADMIN) {
                 $hasAccess = true;
                 break;
             }
             if ($userRole->getRole() == $resourceRight->getRole()->getName() && $resourceRight->getMask() & $mask) {
                 if (ReservationController::BOOK === $mask && $this->tokenStorage->getToken()->getUser() === $user || ReservationController::BOOK !== $mask) {
                     $hasAccess = true;
                     break;
                 }
             }
         }
     }
     return $hasAccess;
 }
 /**
  * @EXT\Route(
  *     "/api/cursus/reservation/resource/{resource}/tag/delete",
  *     name="api_delete_cursus_reservation_resources_tag",
  *     options = {"expose"=true}
  * )
  * @EXT\ParamConverter("user", converter="current_user")
  *
  * Removes tag from reservation resource
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse
  */
 public function deleteReservationResourceTagAction(Resource $resource)
 {
     $this->tagManager->removeTaggedObjectByTagNameAndObjectIdAndClass('cursus_location', $resource->getId(), 'FormaLibre\\ReservationBundle\\Entity\\Resource');
     return new JsonResponse('success', 200);
 }