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()]); }
public function addResource(Resource $resource) { $this->resources[] = $resource; $resource->setResourceType($this); return $this; }
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); }