_getUser(); $productFamily = $this->_getProductFamily($request); if ($user->getFavoriteProductFamilies()->contains($productFamily)) { $user->removeFavoriteProductFamily($productFamily); $isFavorite = false; $message = 'Le produit a bien été supprimé de vos favoris'; } else { $user->addFavoriteProductFamily($productFamily); $isFavorite = true; $message = 'Le produit a bien été ajouté à vos favoris'; } $this->_saveUser($user); return new JsonResponse([ 'return' => 'success', 'is_favorite' => $isFavorite, 'message' => $message ]); } /** * @Route("/favorite/add", name="lc_frontend_favorite_add") */ public function add(Request $request) { $user = $this->_getUser(); $productFamily = $this->_getProductFamily($request); $user->addFavoriteProductFamily($productFamily); $this->_saveUser($user); return new JsonResponse([ 'return' => 'success', 'message' => 'Le produit a bien été ajouté à vos favoris' ]); } /** * @Route("/favorite/delete", name="lc_frontend_favorite_delete") */ public function delete(Request $request) { $user = $this->_getUser(); $productFamily = $this->_getProductFamily($request); $user->removeFavoriteProductFamily($productFamily); $this->_saveUser($user); return new JsonResponse([ 'return' => 'success', 'message' => 'Le produit a bien été supprimé de vos favoris' ]); } private function _getUser() { $user = $this->getUserCurrent(); if (!$user) { throw new \ErrorException('Vous devez être connecté pour gérer vos favoris'); } return $user; } private function _saveUser($user) { $entityManager = $this->getEntityManager(); $entityManager->persist($user); $entityManager->flush(); } private function _getProductFamily($request) { $idProductFamily = $request->request->get('idProductFamily'); if($idProductFamily) { $productFamily = $this->getProductFamilyContainer()->getStore()->getOneById($idProductFamily); } if (isset($productFamily) && $productFamily) { return $productFamily; } else { throw new \ErrorException('Ce produit est introuvable'); } } }