<?php
namespace App\Controller\EspaceAffilie;
use App\Form\SubscribeFormType;
use App\Service\Generale;
use App\Service\WSCMS;
use App\Service\WSEspaceAffilie;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface as Session;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/subscribe")
*/
class SubscribeController extends AbstractController
{
private $service;
public function __construct(Generale $service)
{
$this->service = $service;
}
/**
* @Route("/", name="subscribe")
*/
public function subscribe(WSCMS $WSCMS, WSEspaceAffilie $affilie, Session $session, Request $request): Response
{
$pays = array_column($WSCMS->Pays()['Pays'], 'id', 'name');
$_pays = array_column($WSCMS->Pays()['Pays'], 'id', 'code');
$agence = $WSCMS->Agence()['Agence'];
$form = $this->get('form.factory')->createNamed('', SubscribeFormType::class, null, [
'pays' => $pays,
'nationalite' => $_pays[$agence['nationalite']],
'csrf_protection' => true
])->add('js_ok');
if (isset($_SERVER['LIST_OFFICES']))
$form->add('bureau', ChoiceType::class, [
'choices' => array_flip(json_decode($_SERVER['LIST_OFFICES'], true)),
'required' => false
]);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$data = $form->getData();
if ($data['js_ok'] !== '1') {
exit; // bot probable
}
// à la soumission
if (time() - $_SESSION['form_time'] < 3) {
exit; // robot
}
if ($data['file'])
$data['file'] = json_encode([
'base64' => base64_encode(file_get_contents($data['file']->getPathName())),
'originalName' => $data['file']->getClientOriginalName(),
'size' => $data['file']->getSize(),
'mimeType' => $data['file']->getMimeType()
]);
if (isset($data['bureau'])) {
$session->set('DOMAINE_BACK', $data['bureau']);
$data['bureau'] = json_decode($_SERVER['LIST_OFFICES'], true)[$data['bureau']];
}
unset($data['js_ok']);
$subscribe = $affilie->Subscribe($data);
if (isset($subscribe['Erreur']))
$this->addFlash('danger', $subscribe['Erreur']);
elseif (isset($subscribe['Error']))
$this->addFlash('danger', $subscribe['Error']);
elseif (isset($subscribe['succes']) && $subscribe['succes'] == 'ok')
return $this->redirectToRoute('sucess_subscribe');
} else {
$this->addFlash('danger', (string)$form->getErrors(true, false));
return $this->redirect($_SERVER['HTTP_REFERER']);
}
}
$_SESSION['form_time'] = time();
return $this->render($this->service->checkCustomTemplate('EspaceAffilie/Subscribe/subscribe.html.twig'), [
'form' => $form->createView()
]);
}
/**
* @Route("/sucess", name="sucess_subscribe")
*/
public function showSuccesAction()
{
return $this->render($this->service->checkCustomTemplate('EspaceAffilie/Subscribe/sucess_subscribe.html.twig'));
}
}