<?php
namespace App\Controller;
use App\Entity\WidgetRequest;
use App\Form\WidgetForm;
use App\Manager\CobrandingManager;
use App\Service\Internal\CmsService;
use App\Service\Internal\ContactService;
use App\Service\Internal\HomePageService;
use App\Service\Internal\WidgetService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Contracts\Translation\TranslatorInterface;
class CobrandingController extends AbstractController
{
public function index(
Request $request,
HomePageService $newsPageService,
ContactService $contactService,
CmsService $cmsService,
CobrandingManager $manager,
WidgetService $widgetService,
TranslatorInterface $translator
) {
$parameters = $newsPageService->getRenderParameters();
$cmsPages = $cmsService->getPages();
$menuPages = [];
$footerPages = [];
foreach ($cmsPages as $page) {
if ($page->hook == 'MENU') {
$menuPages[$page->id] = $page;
}
if ($page->hook == 'FOOTER') {
$footerPages[$page->id] = $page;
}
}
$parameters['menuPages'] = $menuPages;
$parameters['footerPages'] = $footerPages;
$subNetworks = $manager->getAllSubNetworks();
$form = $this->createForm(WidgetForm::class, new WidgetRequest(), ['subNetworks' => $subNetworks]);
if ($request->getMethod() == 'POST') {
$flashbag = $request->getSession()->getFlashBag();
$flashbag->clear();
$captchaResponse = $request->request->get('g-recaptcha-response');
if (!empty($captchaResponse)) {
$isValidCaptcha = $contactService->postCaptchaToGoogle($captchaResponse);
if ($isValidCaptcha) {
$form->handleRequest($request);
$flashbag = $request->getSession()->getFlashBag();
$flashbag->clear();
$widgetRequest = $form->getData();
$widgetRequest->setDomain($manager->cleanDomain($widgetRequest->getDomain()));
$widgetRequest->setDocumentationUrl($manager->buildDocumentationUrl($widgetRequest));
$parameters['documentationUrl'] = $widgetRequest->getDocumentationUrl();
$widgetService->postWidgetDemand($widgetRequest);
return $this->render('pages/sim/cobranding-documentation.html.twig', $parameters);
} else {
$flashbag->add('error', $translator->trans('captcha.error'));
}
} else {
$flashbag->add('error', $translator->trans('captcha.label'));
}
}
$parameters['form'] = $form->createView();
return $this->render('pages/sim/cobranding.html.twig', $parameters);
}
public function generateDocumentation(Request $request)
{
$params = $request->query->all();
$params['baseUrl'] = 'https://' . $_SERVER['SERVER_NAME'];
$params['originDestinationParams'] = "";
if (!empty($params['isfv'])) {
$params['originDestinationParams'] .= "&isfid=" . $params['isfid'] . "&isfv=" . $params['isfv'];
}
if (!empty($params['istv'])) {
$params['originDestinationParams'] .= "&istid=" . $params['istid'] . "&istv=" . $params['istv'];
}
$params['token'] .= $params['originDestinationParams'];
$widgetTemplate = 'doc/' . strtolower($params['type']) . '.html.twig';
return $this->render($widgetTemplate, $params);
}
}