memory

Play Memory
Log | Files | Refs

DefaultController.php (2081B)


      1 <?php
      2 
      3 namespace App\Controller;
      4 
      5 use App\Entity\Player;
      6 use Doctrine\Persistence\ManagerRegistry;
      7 use Psr\Log\LoggerInterface;
      8 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
      9 
     10 use Symfony\Component\HttpFoundation\Request;
     11 use Symfony\Component\HttpFoundation\Response;
     12 use Symfony\Component\Routing\Annotation\Route;
     13 use Symfony\Component\HttpFoundation\JsonResponse;
     14 
     15 class DefaultController extends AbstractController {
     16     #[Route('/', methods:['GET'])]
     17     public function index(LoggerInterface $logger):Response {
     18 //        $logger->info("Hallo allemaal");dd
     19         return new Response('DefaultController');
     20     }
     21 
     22     #[Route('/frontend', methods:['GET'])]
     23     public function demo():Response {
     24         $rv['message'] = 'Welkom bij de memory backend api.';
     25         $rv['date'] = date("F j, Y, g:i a");
     26         return new JsonResponse($rv);
     27     }
     28 
     29     #[Route('/api/login_check', methods:['POST'])]
     30     public function login():Response {
     31         return new Response('');
     32     }
     33 
     34     #[Route('/scores', methods: ['GET'])]
     35     public function scores(ManagerRegistry $doctrine)
     36     {
     37         $em = $doctrine->getManager();
     38         $scores = $em->createQuery("select p.username, avg(g.score) as score from App\Entity\Player p 
     39                     join p.games g group by p.username")->getArrayResult();
     40         return new JsonResponse($scores);
     41     }
     42 
     43     #[Route('/register', methods: ['POST'])]
     44     public function register(ManagerRegistry $doctrine): Response {
     45         set_error_handler(fn() => throw new \ErrorException());
     46 
     47         try {
     48             $params = json_decode(Request::createFromGlobals()->getContent(), true);
     49             $pw = password_hash($params['password'], PASSWORD_DEFAULT);
     50             $player = new Player($params['username'], $params['email'], $pw);
     51             $em = $doctrine->getManager();
     52             $em->persist($player);
     53             $em->flush();
     54             return new Response("", 201, ["Location" => "/player/$player->id"]);
     55         } catch (\ErrorException $e) {
     56             return new Response("",400);
     57         }
     58     }
     59 }