src/Controller/HomeController.php line 36

  1. <?php
  2. namespace App\Controller;
  3. use App\Balance\BalanceService;
  4. use App\ReportService;
  5. use App\TagService;
  6. use App\UserService;
  7. use App\Util\Audio;
  8. use App\Util\Formatter;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class HomeController extends AbstractController
  14. {
  15.     #[Route('/account'name'app_account'methods'GET')]
  16.     public function account(UserService $userServiceBalanceService $balanceService): Response
  17.     {
  18.         $user $userService->getUser();
  19.         $data = [
  20.             'name' => $user->getFullName(),
  21.             'email' => $user->getEmail(),
  22.             'employer' => $user->getEmployer(),
  23.             'occupation' => $user->getOccupation(),
  24.             'level' => Formatter::formatMoney($user->getTransactionDefaultAmount()),
  25.             'balance' => Formatter::formatMoney($balanceService->getBalanceForUser($user)),
  26.         ];
  27.         return $this->render('home/account.html.twig', [
  28.             'data' => $data,
  29.         ]);
  30.     }
  31.     #[Route('/{tagId}'name'app_home'methods'GET'priority: -1)]
  32.     public function index(
  33.         Audio       $audioUtil,
  34.         UserService $userService,
  35.         TagService  $tagService,
  36.         BalanceService $balanceService,
  37.         Request     $request,
  38.         ?string     $tagId null): Response
  39.     {
  40.         $user $userService->getUser();
  41.         if (empty($user)) {
  42.             return $this->redirectToRoute('app_login');
  43.         }
  44.         // captures the tag and redirects user back to the same page but without tag in the url
  45.         // this way we can capture only real scans, mostly
  46.         if ($tagId) {
  47.             $aid = (int)($request->query->get('AID') ?? $request->query->get('aid'));
  48.             $tagService->captureTagAndAudience($tagId$aid);
  49.             return $this->redirectToRoute('app_home');
  50.         }
  51.         $data = [
  52.             'name' => $user->getFullName(),
  53.             'canMakeDonation' => $balanceService->canMakeDonation(),
  54.             'level' => Formatter::formatMoney($user->getTransactionDefaultAmount()),
  55.             'audioFile' => $audioUtil->getRandomFileName(),
  56.         ];
  57.         return $this->render('home/index.html.twig', [
  58.             'data' => $data,
  59.         ]);
  60.     }
  61. }