<?php
namespace App\Controller\Front\Modules;
use Symfony\Component\HttpFoundation\Request;
use App\Manager\CustomerManager;
use App\Manager\WishlistManager;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
class WishlistController extends \App\Controller\Front\FrontController
{
public function block(Request $request, CustomerManager $customerMgr, WishlistManager $wishlistMgr)
{
$customer = $customerMgr->getCustomer();
if(!empty($customer)){
$length = $wishlistMgr->getCount($customer);
}else{
$length = $wishlistMgr->getCountFromSession();
}
return $this->render('front/modules/wishlist/block.html.twig',['length'=>$length]);
}
/**
* @Route("/aj/wishlist/add", name="wishlist_add")
*/
public function add(Request $request, CustomerManager $customerMgr, WishlistManager $wishlistMgr)
{
$customer = $customerMgr->getCustomer();
$output = ['success'=>false];
try{
if($request->isMethod('POST')){
$product = $request->get('product','');
if(!empty($product)){
$add = $wishlistMgr->add($product,$customer);
if($add)
$output['success']=$add;
}
}
} catch (\Exception $ex) {
$output['message']=$ex->getMessage();
}
$response = new JsonResponse();
$response->setContent(json_encode($output));
$response->setStatusCode(200);
return $response;
}
/**
* @Route("/aj/wishlist/remove", name="wishlist_remove")
*/
public function remove(Request $request, CustomerManager $customerMgr, WishlistManager $wishlistMgr)
{
$customer = $customerMgr->getCustomer();
$output = ['success'=>false];
try{
if($request->isMethod('POST')){
$product = $request->get('product','');
if(!empty($product)){
$output['success']=$wishlistMgr->remove($product,$customer);
}
}
} catch (\Exception $ex) {
$output['message']=$ex->getMessage();
}
$response = new JsonResponse();
$response->setContent(json_encode($output));
$response->setStatusCode(200);
return $response;
}
/**
* @Route("/{_locale}/wishlist", name="wishlist", requirements={"_locale":"fr|en"})
*/
public function list(Request $request, \Symfony\Component\HttpFoundation\Session\Session $session, CustomerManager $customerMgr, WishlistManager $wishlistMgr, \Symfony\Contracts\Translation\TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$sort = $request->get('sort','createdAt');
$customer = $customerMgr->getCustomer();
$wishlistMgr->check();
if(!empty($customer)){
$products = $wishlistMgr->getProducts($customer,$sort);
}else{
$session->getFlashBag()->add('error',$translator->trans('Veuillez vous identifier pour accéder à votre liste d\'envie.'));
return $this->redirectToRoute('customer_login',['from'=>'wishlist']);
$products = $wishlistMgr->getSessionProducts($session,$sort);
}
return $this->render('front/modules/wishlist/view.html.twig',[
'customer' => $customer,
'products' => $products
]);
}
}