<?php
namespace App\Controller;
use App\Repository\ActivityRepository;
use App\Repository\CommerceActivityRepository;
use App\Repository\ContentRepository;
use App\Repository\EtoileRepository;
use App\Repository\UnderActivityRepository;
use App\Repository\UnderUnderActivityRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use App\Entity\InfosClient;
use App\Service\coefManager;
use Symfony\Component\Serializer\Serializer;
class BaseController extends AbstractController
{
/**
* @Route("/", name="home")
*/
public function index(ContentRepository $content): Response
{
return $this->redirectToRoute('app_login');
return $this->render('base/index.html.twig', [
'controller_name' => 'BaseController',
'text_home' => $content->findOneBy(['name' => 'text_home']),
]);
}
/**
* @Route("/evaluation/{eval}/je-suis", name="je-suis")
*/
public function first($eval, ActivityRepository $activityRepository): Response
{
if ($eval == 'entreprise') {
$activity = $activityRepository->findby(['type'=>'entreprise']);
}else {
$activity = $activityRepository->findby(['type'=>'commerce']);
}
return $this->render('base/form.html.twig', [
'controller_name' => 'BaseController',
'eval' => $eval,
'activity' => $activity
]);
}
/**
* @Route("/evaluation/{eval}/under-acitivty", name="under-acitivty")
*/
public function ajaxGetUnderActivityOrCommerce($eval,ActivityRepository $activityRepository,EtoileRepository $etoile, CommerceActivityRepository $commerceAct, UnderActivityRepository $underAct, Request $request)
{
$session = new Session();
$session->set('mode', false);
if ($eval == 'entreprise') {
$underActivity = $underAct->findBy(['activity' => $request->get('id')]);
return $this->json($underActivity, 200, [], ['groups' => 'get:underAct']);
}else {
$commerce = $activityRepository->find($request->get('id'));
if ( ($commerce->getName()) == 'hotellerie') {
$session->set('mode', 'etoile');
return $this->json($etoile->findAll(), 200, [], ['groups' => 'get:etoile']);
}else {
$session->set('mode', 'commerce');
$otherCommerce = $commerceAct->findBy(['activity' => $request->get('id')]);
return $this->json($otherCommerce, 200, [], ['groups' => 'get:comAct']);
}
}
}
/**
* @Route("/evaluation/{eval}/under-under-acitivty", name="under-under-acitivty")
*/
public function ajaxGetUnderUnderActivityOrTypeCommerce( Session $session ,$eval,EtoileRepository $etoile, CommerceActivityRepository $commerceAct,UnderUnderActivityRepository $underAct, Request $request)
{
//start session
if ($eval == 'entreprise') {
$underUnderActivity = $underAct->findBy(['underActitivity' => $request->get('id'),'isActive' => 1]);
return $this->json($underUnderActivity, 200, [], ['groups' => 'get:underUnderAct']);
}else {
if ($session->get('mode') == 'etoile') {
return $this->json('etoile', 200, []);
}else{
return $this->json('commerce', 200, []);
}
}
}
/**
* @Route ("/save-step/{eval}", name="save-step")
*/
public function saveStep(Session $session,$eval,Request $request, UnderUnderActivityRepository $underUnderRepo,EtoileRepository $etoileRepo, CommerceActivityRepository $comRepo)
{
$recap = $request->get('recap');
if ($eval == 'entreprise') {
$detailsActivity = "Entreprise - ";
$underUnder = $underUnderRepo->find($recap['id_sous_sous_activite']);
$recap['mode'] = 'entreprise';
$recap['bas'] = $underUnder->getCoefBas();
$recap['haut'] = $underUnder->getCoefHaut();
}else{
$detailsActivity = "Commerce - ";
if ($recap['mode'] == 'etoile') {
$object = $etoileRepo->find($recap['id_sous_activite']);
$detailsActivity .= "hotellerie : ' ".$object->getName()." '";
}else{
$object = $comRepo->find($recap['id_sous_activite']);
$detailsActivity .= " Activité commerce : ' ".$object->getName()." '";
}
$findcoef = ucfirst($recap['sous_sous_activite']);
$detailsActivity .= " zone ".$findcoef;
$findCoefHaut ='getCoefHaut'.$findcoef ;
$findCoefBas = 'getCoefBas'.$findcoef ;
$recap['bas'] = $object->$findCoefBas();
$recap['haut'] = $object->$findCoefHaut();
}
// details activity for commerce ok we miss details for entreprise
dd($detailsActivity);
$session->remove('recap', $recap);
$session->set('recap', $recap);
$info = new InfosClient;
$info->setFonction($recap['fonction'])
->setNom($recap['nom'])
->setTel($recap['tel'])
->setEmail($recap['email'])
->setSiret($recap['siret'])
->setAdresse($recap['adresse'])
->setCodePostal($recap['zip'])
->setCodeNaf($recap['ape'])
->setNomSte($recap['nom_ste'])
->setVille($recap['ville_ste'])
->setActiviteNaf($recap['act_ste'])
->setAdresseSte($recap['adresse_ste'])
->setCategorieChoix($detailsActivity);
dd($info);
return $this->json($this->generateUrl("step-2", array('slug' => $eval)));
}
/**
* @Route ("/step-2/{slug}", name="step-2")
*/
public function stepTwo()
{
return $this->render('base/form-2-commerce.html.twig', []);
}
/**
* @Route ("/calcule/commerce", name="calcule")
*/
public function calculeFourchette(Session $session,Request $request)
{
$chiffre = $request->get('chiffre');
$recap = $session->get('recap');
$EBE = $chiffre['res_exp'] + $chiffre['amr'] +$chiffre['sal_cot_dg'];
$fourchetteBas = $EBE * $recap['bas'];
$fourchetteHaut = $EBE * $recap['haut'];
$moyenne = ($fourchetteBas + $fourchetteHaut)/2;
$rectte = [];
$recette['moy'] = $moyenne;
$recette['bas'] = $fourchetteBas;
$recette['haut'] = $fourchetteHaut;
$recette['ebe'] = $EBE;
return $this->json($recette, 200, []);
}
/**
* @Route ("/INSEE/call", name="insee-siret")
*/
public function getSiret(Request $req,HttpClientInterface $client)
{
$result = null;
$siret = $req->get('siret');
$this->client = $client->withOptions([
'base_uri' => 'https://api.insee.fr/entreprises/sirene/V3/siret/'.$siret,
'headers' => ['Authorization' => 'Bearer 74650090-b115-3f17-9dc7-22943b883416']
]);
try {
$response = $this->client->request(
'GET',
'https://api.insee.fr/entreprises/sirene/V3/siret/'.$siret.'?champs=siret%2CactivitePrincipaleUniteLegale%2CdenominationUniteLegale%2CnumeroVoieEtablissement%2CindiceRepetitionEtablissement%2CtypeVoieEtablissement%2ClibelleVoieEtablissement%2ClibelleCommuneEtablissement%2CcodePostalEtablissement&masquerValeursNulles=true',
);
$this->user_data = $response->getContent();
} catch (\Exception $e) {
$erroCode = $response->getStatusCode();
unset($responses);
return $this->json($erroCode,200,[],[]);
}
return $this->json($response->getContent(),$response->getStatusCode(),[],[]);
}
}