<?php
namespace App\Controller;
use App\Entity\Faq;
use App\Entity\Deals;
use App\Entity\Features;
use App\Entity\Subscribe;
use App\Entity\Leads\Leads;
use App\Entity\Leads\Configurator;
use App\Entity\Leads\SoftwareVersion;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\String\ByteString;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class HomeController extends AbstractController
{
protected $em;
public function __construct(EntityManagerInterface $entityManager)
{
$this->em = $entityManager;
}
/**
* @Route("/send/call", name="call")
*/
public function call(Request $request): Response
{
$params= !empty($request->request->all()) ? $request->request->all() : null;
$result = $this->em->getRepository(Leads::class)->setLead($params);
return new JsonResponse($result);
}
/**
* @Route("/send/configurator", name="configurator")
*/
public function configurator(Request $request): Response
{
$name = !empty($request->get('name')) ? $request->get('name') : null;
$value = !empty($request->get('value')) ? $request->get('value') : null;
$params['form'][$name] = $value;
$params['type_lead'] = !empty($request->get('type')) ? $request->get('type') : 'unknow';
$params['hash'] = !empty($request->get('hash')) ? $request->get('hash') : null;
if(!empty($params['form'])){
$result = $this->em->getRepository(Configurator::class)->saveStep($params);
}
if(!empty($request->get('complete'))){
$params = $this->em->getRepository(Configurator::class)->findOneBy(["hash"=>$params['hash']]);
$list = $this->em->getRepository(Subscribe::class)->findBy(["statut"=>1, "default_sub"=>1]);
$features = $this->em->getRepository(Features::class)->findBy(["statut"=>1]);
$version = new SoftwareVersion($list, $features);
$result = $version->compareElements($params->getForm());
return $this->render('components/configurator-result.html.twig', [
'result' => $result[0]
]);
}
return new JsonResponse($result);
}
public function index(): Response
{
$faq = $this->em->getRepository(Faq::class)->findBy(["statut"=>1], ["position"=>"ASC"]);
$deals = $this->em->getRepository(Deals::class)->findBy(["statut"=> 1]);
return $this->render('home/index.html.twig', [
'deals' => $deals,
'faq' => $faq,
'hashSales' => (new ByteString)->fromRandom(15)->toString()
]);
}
}