src/Controller/DonationController.php line 41

  1. <?php
  2. namespace App\Controller;
  3. use App\Balance\BalanceService;
  4. use App\DonationService;
  5. use App\Form\BalanceRefillAmountType;
  6. use App\Form\DonationLevelType;
  7. use App\LotteryService;
  8. use App\UserService;
  9. use App\Util\Formatter;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. #[Route('/joenation')]
  16. class DonationController extends AbstractController
  17. {
  18.     public function __construct(
  19.         private BalanceService $balanceService
  20.     )
  21.     {
  22.     }
  23.     #[Route('/'name'app_donation_create'methods'POST')]
  24.     public function create(DonationService $donationService): Response
  25.     {
  26.         $this->balanceService->makeDonation();
  27.         $template $donationService->getSuccessTemplate();
  28.         $data $donationService->getSuccessData();
  29.         $html $this->renderView($template, [
  30.             'data' => $data,
  31.         ]);
  32.         return new JsonResponse($html);
  33.     }
  34.     #[Route('/edit'name'app_donation_update'methods: ['GET''POST'])]
  35.     public function update(
  36.         Request $request,
  37.         UserService $userService,
  38.         ): Response
  39.     {
  40.         $form $this->createForm(DonationLevelType::class);
  41.         $form->handleRequest($request);
  42.         if($form->isSubmitted() && $form->isValid()) {
  43.             $donationAmount = (int)$form->get('donationAmount')->getData();
  44.             $userService->updateDonationLevel($donationAmount);
  45.             return $this->redirectToRoute('app_home');
  46.         }
  47.         $balance $this->balanceService->getBalance();
  48.         $level $userService->getUser()->getTransactionDefaultAmount();
  49.         $data = [
  50.             'balance' => Formatter::formatMoney($balance),
  51.             'level' => Formatter::formatMoney($level),
  52.         ];
  53.         return $this->render('donation/update.html.twig', [
  54.             'form' => $form,
  55.             'data' => $data,
  56.         ]);
  57.     }
  58. }