/** * @Route("/{id}", name="icap_badge_user_badge_edit", defaults={"id" = null, "_format" = "json"}) * @Method({"PATCH"}) * @ParamConverter("user", options={"authenticatedUser" = true}) */ public function editAction(Request $request, User $user, UserBadge $userBadge) { if ($userBadge->getUser() !== $user) { throw new AccessDeniedHttpException(); } return $this->processForm($request, $userBadge, 'PATCH'); }
/** * @param User[]|ArrayCollection $users * * @return $this */ public function setUsers($users) { $this->userBadges->clear(); foreach ($users as $user) { $userBagde = new UserBadge(); $userBagde->setBadge($this)->setUser($user); $this->addUserBadge($userBagde); } return $this; }
/** * @param Badge $badge * @param User $user * @param string $comment * @param User|null $issuer * * @throws \Exception * * @return bool */ public function addBadgeToUser(Badge $badge, User $user, $comment = null, $issuer = null, $delayFlushAndEvent = false) { $badgeAwarded = false; /** @var \Icap\BadgeBundle\Repository\UserBadgeRepository $userBadgeRepository */ $userBadgeRepository = $this->entityManager->getRepository('IcapBadgeBundle:UserBadge'); $userBadge = $userBadgeRepository->findOneByBadgeAndUser($badge, $user); if (null === $userBadge) { try { $userBadge = new UserBadge(); $userBadge->setBadge($badge)->setUser($user)->setComment($comment)->setIssuer($issuer); if ($badge->isExpiring()) { $userBadge->setExpiredAt($this->generateExpireDate($badge)); } $badge->addUserBadge($userBadge); $badgeAwarded = true; $this->entityManager->persist($badge); if (!$delayFlushAndEvent) { $this->entityManager->flush(); $this->dispatchBadgeAwardingEvent($badge, $user, $issuer); } } catch (\Exception $exception) { throw $exception; } } return $badgeAwarded; }