| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- namespace App\Controller;
- use App\Entity\User;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- class ProfileManagerController extends AbstractController
- {
- #[Route('/profile/{username}/follow', name: 'follow')]
- public function follow($username): Response
- {
- $session = $this->get('session');
- // Pour éviter le crash, on redirige l'utilisateur s'il n'est pas connecté
- if (null === $session->get('user')) {
- return $this->redirectToRoute('login');
- }
- // Obtention de l'objet de l'utilisateur connecté et de l'utilisateur à s'abonner
- $em = $this->getDoctrine()->getManager();
- $repository_profile = $em->getRepository(User::class);
- $profile = $repository_profile->findOneBy(array('username' => $session->get('user')));
- $followuser = $repository_profile->findOneBy(array('username' => $username));
- // Ajout de l'abonnement dans la BDD
- $profile->addSubscription($followuser);
- $followuser->addFollower($profile);
- $em->persist($profile);
- $em->persist($followuser);
- $em->flush();
- return $this->redirectToRoute('profile', ['username' => $username]);
- }
- #[Route('/profile/{username}/unfollow', name: 'unfollow')]
- public function unfollow($username): Response
- {
- $session = $this->get('session');
- // Pour éviter le crash, on redirige l'utilisateur s'il n'est pas connecté
- if (null === $session->get('user')) {
- return $this->redirectToRoute('login');
- }
- // Obtention de l'objet de l'utilisateur connecté et de l'utilisateur à se désabonner
- $em = $this->getDoctrine()->getManager();
- $repository_profile = $em->getRepository(User::class);
- $profile = $repository_profile->findOneBy(array('username' => $session->get('user')));
- $followuser = $repository_profile->findOneBy(array('username' => $username));
-
- // Supression de l'abonnement de la BDD
- $profile->removeSubscription($followuser);
- $followuser->removeFollower($profile);
- $em->persist($profile);
- $em->persist($followuser);
- $em->flush();
- return $this->redirectToRoute('profile', ['username' => $username]);
- }
- }
|