PlayerController.php (2848B) download
1<?php
2
3namespace App\Controller;
4
5use App\Entity\Player;
6
7use Doctrine\ORM\EntityManager;
8use Doctrine\Persistence\ManagerRegistry;
9use Psr\Log\LoggerInterface;
10use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
11use Symfony\Component\HttpFoundation\Request;
12use Symfony\Component\HttpFoundation\Response;
13use Symfony\Component\Routing\Annotation\Route;
14use Symfony\Component\HttpFoundation\JsonResponse;
15
16
17#[Route("/api/player/")]
18class PlayerController extends AbstractController {
19
20 public function __construct(private LoggerInterface $logger) { }
21
22 #[Route('{id}', requirements:['id'=>'\d+'])]
23 public function getUserData($id, ManagerRegistry $doctrine):Response {
24 $em = $doctrine->getManager();
25 $user = $em->find(Player::class, $id);
26 if ($user) return new JsonResponse($user);
27 else return new Response('', 404);
28 }
29
30 #[Route('/')]
31 public function index():Response {
32 return new Response("PlayerController");
33 }
34
35 #[Route('{id}/games', requirements:['id'=>'\d+'], methods:['GET'])]
36 public function getPlayerGames($id, ManagerRegistry $doctrine):Response {
37 $em = $doctrine->getManager();
38 $user = $em->find(Player::class, $id);
39 if ($user) return new JsonResponse($user->getGames()->toArray());
40 else return new Response('', 404);
41 }
42
43 #[Route('{id}/preferences', requirements:['id'=>'\d+'], methods:['GET', 'POST'])]
44 public function getPlayerPreferences($id, ManagerRegistry $doctrine):Response {
45 $em = $doctrine->getManager();
46 $user = $em->find(Player::class, $id);
47 if ($user) {
48 $request = Request::createFromGlobals();
49 if ($request->getMethod() == 'POST') {
50 $params = json_decode(Request::createFromGlobals()->getContent(), true);
51 $user->setPreferences($params);
52 $em->persist($user);
53 $em->flush();
54 return new JsonResponse('',204);
55 } else return new JsonResponse($user->getPreferences());
56 }
57
58 return new Response('', 404);
59 }
60
61 #[Route('{id}/email', requirements:['id'=>'\d+'], methods:['GET', 'PUT'])]
62 public function playerEmail($id, ManagerRegistry $doctrine):Response {
63 $em = $doctrine->getManager();
64 $user = $em->find(Player::class, $id);
65 if ($user) {
66 $request = Request::createFromGlobals();
67 if ($request->getMethod() == 'PUT') {
68 $params = json_decode(Request::createFromGlobals()->getContent(), true);
69 $user->email = $params['email'];
70 $em->persist($user);
71 $em->flush();
72 return new JsonResponse('', 204);
73 } else return new JsonResponse($user->email);
74 }
75
76 return new Response('', 404); }
77
78
79}