ProfileManagerController.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. class ProfileManagerController extends AbstractController
  8. {
  9. #[Route('/profile/{username}/follow', name: 'follow')]
  10. public function follow($username): Response
  11. {
  12. $session = $this->get('session');
  13. $em = $this->getDoctrine()->getManager();
  14. $repository_profile = $em->getRepository(User::class);
  15. $profile = $repository_profile->findOneBy(array('username' => $session->get('user')));
  16. $followuser = $repository_profile->findOneBy(array('username' => $username));
  17. $profile->addSubscription($followuser);
  18. $followuser->addFollower($profile);
  19. $em->persist($profile);
  20. $em->persist($followuser);
  21. $em->flush();
  22. return $this->redirectToRoute('profile', ['username' => $username]);
  23. }
  24. #[Route('/profile/{username}/unfollow', name: 'unfollow')]
  25. public function unfollow($username): Response
  26. {
  27. $session = $this->get('session');
  28. $em = $this->getDoctrine()->getManager();
  29. $repository_profile = $em->getRepository(User::class);
  30. $profile = $repository_profile->findOneBy(array('username' => $session->get('user')));
  31. $followuser = $repository_profile->findOneBy(array('username' => $username));
  32. $profile->removeSubscription($followuser);
  33. $followuser->removeFollower($profile);
  34. $em->persist($profile);
  35. $em->persist($followuser);
  36. $em->flush();
  37. return $this->redirectToRoute('profile', ['username' => $username]);
  38. }
  39. }