src/Controller/Front/Modules/WishlistController.php line 80

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front\Modules;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use App\Manager\CustomerManager;
  5. use App\Manager\WishlistManager;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  11. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  12. class WishlistController extends \App\Controller\Front\FrontController
  13. {
  14. public function block(Request $request, CustomerManager $customerMgr, WishlistManager $wishlistMgr)
  15. {
  16. $customer = $customerMgr->getCustomer();
  17. if(!empty($customer)){
  18. $length = $wishlistMgr->getCount($customer);
  19. }else{
  20. $length = $wishlistMgr->getCountFromSession();
  21. }
  22. return $this->render('front/modules/wishlist/block.html.twig',['length'=>$length]);
  23. }
  24. /**
  25. * @Route("/aj/wishlist/add", name="wishlist_add")
  26. */
  27. public function add(Request $request, CustomerManager $customerMgr, WishlistManager $wishlistMgr)
  28. {
  29. $customer = $customerMgr->getCustomer();
  30. $output = ['success'=>false];
  31. try{
  32. if($request->isMethod('POST')){
  33. $product = $request->get('product','');
  34. if(!empty($product)){
  35. $add = $wishlistMgr->add($product,$customer);
  36. if($add)
  37. $output['success']=$add;
  38. }
  39. }
  40. } catch (\Exception $ex) {
  41. $output['message']=$ex->getMessage();
  42. }
  43. $response = new JsonResponse();
  44. $response->setContent(json_encode($output));
  45. $response->setStatusCode(200);
  46. return $response;
  47. }
  48. /**
  49. * @Route("/aj/wishlist/remove", name="wishlist_remove")
  50. */
  51. public function remove(Request $request, CustomerManager $customerMgr, WishlistManager $wishlistMgr)
  52. {
  53. $customer = $customerMgr->getCustomer();
  54. $output = ['success'=>false];
  55. try{
  56. if($request->isMethod('POST')){
  57. $product = $request->get('product','');
  58. if(!empty($product)){
  59. $output['success']=$wishlistMgr->remove($product,$customer);
  60. }
  61. }
  62. } catch (\Exception $ex) {
  63. $output['message']=$ex->getMessage();
  64. }
  65. $response = new JsonResponse();
  66. $response->setContent(json_encode($output));
  67. $response->setStatusCode(200);
  68. return $response;
  69. }
  70. /**
  71. * @Route("/{_locale}/wishlist", name="wishlist", requirements={"_locale":"fr|en"})
  72. */
  73. public function list(Request $request, \Symfony\Component\HttpFoundation\Session\Session $session, CustomerManager $customerMgr, WishlistManager $wishlistMgr, \Symfony\Contracts\Translation\TranslatorInterface $translator)
  74. {
  75. $em = $this->getDoctrine()->getManager();
  76. $sort = $request->get('sort','createdAt');
  77. $customer = $customerMgr->getCustomer();
  78. $wishlistMgr->check();
  79. if(!empty($customer)){
  80. $products = $wishlistMgr->getProducts($customer,$sort);
  81. }else{
  82. $session->getFlashBag()->add('error',$translator->trans('Veuillez vous identifier pour accéder à votre liste d\'envie.'));
  83. return $this->redirectToRoute('customer_login',['from'=>'wishlist']);
  84. $products = $wishlistMgr->getSessionProducts($session,$sort);
  85. }
  86. return $this->render('front/modules/wishlist/view.html.twig',[
  87. 'customer' => $customer,
  88. 'products' => $products
  89. ]);
  90. }
  91. }