src/Controller/MainController.php line 34

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Order;
  4. use App\Entity\Package;
  5. use App\Entity\UserFeature;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class MainController extends BaseController
  11. {
  12.     #[Route('api/result/save'name'page_api_save'methods: ['POST'])]
  13.     public function resultSave(Request $request)
  14.     {
  15.         $payloadString $request->request->get('payload');
  16.         // Decode JSON string → array
  17.         $payload json_decode($payloadStringtrue);
  18.         dump($payload);
  19.         die;
  20.     }
  21.     #[Route('/checkout/{id}'name'page_checkout')]
  22.     public function checkout(Package $package): \Symfony\Component\HttpFoundation\RedirectResponse
  23.     {
  24.         $order = new Order();
  25.         $order->setPackage($package);
  26.         $order->setUser($this->getUser());
  27.         $order->setPrice($package->getPrice());
  28.         $this->entityManager->persist($order);
  29.         foreach ($package->getPackageFeatures() as $packageFeature) {
  30.             $userFeature = new UserFeature();
  31.             $userFeature->setUser($this->getUser());
  32.             $userFeature->setType($packageFeature->getType());
  33.             $userFeature->setOrder($order);
  34.             $userFeature->setPackage($package);
  35.             $userFeature->setAttempt($packageFeature->getAttempt());
  36.             if ($packageFeature->getDuration() && $packageFeature->getDuration()?->format('%r%y%m%d%h%i%s%f') !== '0000000') {
  37.                 $now = new \DateTime();
  38.                 $expire $now->add($packageFeature->getDuration());
  39.                 $userFeature->setDatetime($expire);
  40.             }
  41.             $this->entityManager->persist($userFeature);
  42.         }
  43.         $this->entityManager->flush();
  44.         return $this->redirectToRoute('page_success');
  45.     }
  46.     #[Route('/order/success'name'page_success')]
  47.     public function success(): \Symfony\Component\HttpFoundation\Response
  48.     {
  49.         return $this->render('@web/page/order/success.html.twig',[]);
  50.     }
  51. }