/** * @Route("/claim/manage/{id}/{validate}", name="icap_badge_workspace_tool_manage_claim") * @ParamConverter( * "workspace", * class="ClarolineCoreBundle:Workspace\Workspace", * options={"id" = "workspaceId"} * ) * @Template */ public function manageClaimAction(Workspace $workspace, BadgeClaim $badgeClaim, $validate = false) { if (null === $badgeClaim->getBadge()->getWorkspace()) { throw $this->createNotFoundException('No badge found.'); } $this->checkUserIsAllowed($workspace); /** @var \Symfony\Component\Translation\TranslatorInterface $translator */ $translator = $this->get('translator'); $successMessage = $translator->trans('badge_reject_award_success_message', array(), 'icap_badge'); $errorMessage = $translator->trans('badge_reject_award_error_message', array(), 'icap_badge'); try { if ($validate) { $successMessage = $translator->trans('badge_validate_award_success_message', array(), 'icap_badge'); $errorMessage = $translator->trans('badge_validate_award_error_message', array(), 'icap_badge'); /** @var \Icap\BadgeBundle\Manager\BadgeManager $badgeManager */ $badgeManager = $this->get('icap_badge.manager.badge'); $awardedBadge = $badgeManager->addBadgeToUser($badgeClaim->getBadge(), $badgeClaim->getUser()); if (!$awardedBadge) { $successMessage = $translator->trans('badge_already_award_info_message', array(), 'icap_badge'); } } $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($badgeClaim); $entityManager->flush(); $this->get('session')->getFlashBag()->add('success', $successMessage); } catch (\Exception $exception) { $this->get('session')->getFlashBag()->add('error', $errorMessage); } return $this->redirect($this->generateUrl('icap_badge_workspace_tool_badges', array('workspaceId' => $workspace->getId()))); }