@@ -3,6 +3,7 @@ | |||
namespace Lc\CaracoleBundle\Controller\Merchant; | |||
use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | |||
use Lc\CaracoleBundle\Resolver\MerchantResolver; | |||
use Lc\SovBundle\Doctrine\EntityManager; | |||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; | |||
use Symfony\Component\HttpFoundation\Request; | |||
@@ -11,25 +12,26 @@ use Symfony\Component\Security\Core\Security; | |||
class SwitchMerchantController extends AbstractController | |||
{ | |||
public function switchMerchant(Request $request, Security $security, EntityManager $em) | |||
public function switchMerchant(Request $request) | |||
{ | |||
$user = $security->getUser() ; | |||
$form = $this->createForm(SwitchMerchantFormType::class); | |||
$form->handleRequest($request); | |||
if($user) { | |||
$form = $this->createForm(SwitchMerchantFormType::class); | |||
$form->handleRequest($request); | |||
if ($form->isSubmitted() && $form->isValid()) { | |||
$merchant = $form->get('merchants')->getData(); | |||
$context = $form->get('context')->getData(); | |||
if ($form->isSubmitted() && $form->isValid()) { | |||
$merchant = $form->get('merchants')->getData(); | |||
$user->setFavoriteMerchant($merchant) ; | |||
$em->update($user) ; | |||
$em->flush() ; | |||
if ($merchant) { | |||
$url = $merchant->getMerchantConfig('url'); | |||
return $this->redirectToRoute('admin_dashboard') ; | |||
} | |||
} | |||
else { | |||
if($context == 'admin') { | |||
$url .= 'admin' ; | |||
} | |||
if ($url) { | |||
return $this->redirect($url); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -9,6 +9,7 @@ use Lc\SovBundle\Model\User\UserInterface; | |||
use Lc\SovBundle\Translation\TranslatorAdmin; | |||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |||
use Symfony\Component\Form\AbstractType; | |||
use Symfony\Component\Form\Extension\Core\Type\HiddenType; | |||
use Symfony\Component\Form\FormBuilderInterface; | |||
use Symfony\Component\OptionsResolver\OptionsResolver; | |||
@@ -36,6 +37,14 @@ class SwitchMerchantFormType extends AbstractType | |||
'data' => $options['current_merchant'] | |||
] | |||
); | |||
$builder->add( | |||
'context', | |||
HiddenType::class, | |||
[ | |||
'data' => $options['context'] | |||
] | |||
); | |||
} | |||
/** | |||
@@ -45,6 +54,7 @@ class SwitchMerchantFormType extends AbstractType | |||
{ | |||
$resolver->setDefaults( | |||
[ | |||
'context' => 'frontend', | |||
'current_merchant' => $this->merchantResolver->getCurrent(), | |||
] | |||
); |
@@ -13,7 +13,7 @@ | |||
</ul> | |||
<ul class="navbar-nav ml-auto"> | |||
<li class="nav-item"> | |||
{% set form_switch_merchant = carac_get_form_switch_merchhant() %} | |||
{% set form_switch_merchant = carac_get_form_switch_merchant('admin') %} | |||
{{ form_start(form_switch_merchant) }} | |||
{{ form(form_switch_merchant) }} | |||
{{ form_end(form_switch_merchant) }} |
@@ -41,7 +41,7 @@ class TwigExtension extends AbstractExtension | |||
{ | |||
return array( | |||
new TwigFunction('carac_get_sections', [$this, 'getSections']), | |||
new TwigFunction('carac_get_form_switch_merchhant', [$this, 'getFormSwitchMerchant']), | |||
new TwigFunction('carac_get_form_switch_merchant', [$this, 'getFormSwitchMerchant']), | |||
); | |||
} | |||
@@ -55,14 +55,15 @@ class TwigExtension extends AbstractExtension | |||
return $this->merchantRepository->findAll(); | |||
} | |||
public function getFormSwitchMerchant() | |||
public function getFormSwitchMerchant($context = 'front') | |||
{ | |||
$form = $this->formFactory->create( | |||
SwitchMerchantFormType::class, | |||
null, | |||
[ | |||
'action' => $this->urlGenerator->generate('carac_switch_merchant'), | |||
'attr' => ['class' => 'switch-merchant'] | |||
'attr' => ['class' => 'switch-merchant'], | |||
'context' => $context | |||
] | |||
); | |||
return $form->createView(); |