src/Controller/TokenController.php line 18

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\TokenManager;
  4. use App\Form\UserTokenType;
  5. use App\Repository\ProgramManagerRepository;
  6. use App\Repository\TokenManagerRepository;
  7. use App\Repository\UserRepository;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. #[Route('/admin/token')]
  12. class TokenController extends BaseController
  13. {
  14.     #[Route('/{id}/edit-token'name'app_user_edit_tokens'methods: ['GET''POST'])]
  15.     public function editToken(
  16.         Request $request,
  17.         TokenManager $tokenManager,
  18.         TokenManagerRepository $tokenManagerRepository,
  19.         ProgramManagerRepository $programManagerRepository,
  20.         UserRepository $userRepository,
  21.     ): Response {
  22.         $this->denyAccessUnlessGranted('ROLE_PROGRAM_MANAGER');
  23.         $form $this->createForm(UserTokenType::class);
  24.         $form->get('tokensBot')->setData(0);
  25.         $form->handleRequest($request);
  26.         $notEnoughTokens null;
  27.         $programManager $this->getUser()->getProgramManager();
  28.         $user $userRepository->findUserFromTokenManager($tokenManager);
  29.         if ($form->isSubmitted() && $form->isValid()) {
  30.             $newTokens intval($form->get('tokensBot')->getData()) + intval($tokenManager->getTokensBot());
  31.             if ($newTokens $tokenManager->getTokensBot()) {
  32.                 $tokenDiff $tokenManager->getTokensBot() - $newTokens;
  33.                 $programManager->addTokens($tokenDiff);
  34.                 $tokenManager->setTokensBot($newTokens);
  35.                 $programManagerRepository->save($programManagertrue);
  36.                 $tokenManagerRepository->save($tokenManagertrue);
  37.                 if ($request->get('origin')) {
  38.                     return $this->redirectToRoute($request->get('origin'), json_decode($request->get('origin_params'), associativetrue), Response::HTTP_SEE_OTHER);
  39.                 }
  40.                 return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  41.             } elseif ($newTokens $tokenManager->getTokensBot()) {
  42.                 $totalTokens $tokenManager->getTokensBot() + $programManager->getTokensPool();
  43.                 if ($totalTokens $newTokens) {
  44.                     $notEnoughTokens $programManager->getTokensPool();
  45.                 } else {
  46.                     $programManager->setTokensPool($totalTokens $newTokens);
  47.                     $tokenManager->setTokensBot($newTokens);
  48.                     $programManagerRepository->save($programManagertrue);
  49.                     $tokenManagerRepository->save($tokenManagertrue);
  50.                     if ($request->get('origin')) {
  51.                         return $this->redirectToRoute($request->get('origin'), json_decode($request->get('origin_params'), associativetrue), Response::HTTP_SEE_OTHER);
  52.                     }
  53.                     return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  54.                 }
  55.             }
  56.         }
  57.         return $this->render('user/edit-token.html.twig', [
  58.             'origin' => $request->get('origin'),
  59.             'tokenFormVar' => true,
  60.             'notEnoughTokens' => $notEnoughTokens,
  61.             'manager' => $programManager,
  62.             'origin_params' => json_decode($request->get('origin_params'), associativetrue),
  63.             'tokenManager' => $tokenManager,
  64.             'form' => $form,
  65.             'user' => $user,
  66.         ]);
  67.     }
  68. }