<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Customer;
use App\Form\LoginType;
use App\Repository\GroupRepository;
use App\Repository\CustomerRepository;
use App\Repository\LeftMenuManagementRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use App\Service\CheckSession;
class HomeController extends AbstractController
{
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
/**
* @Route("/")
*/
public function indexNoLocale()
{
return $this->redirectToRoute('index',['_locale' => 'fr']);
}
/**
* @Route("/{_locale<%app.supported_locales%>}/", name="index", methods={"GET","POST"})
* @return Response
*/
public function index(Request $request,CustomerRepository $customerRepository,LeftMenuManagementRepository $leftMenuManagementRepository, GroupRepository $groupRepository): Response
{
if(!empty($this->session->get('admin'))){
return $this->redirectToRoute('application_index');
}else if(!empty($this->session->get('customer_id')) ){
return $this->redirectToRoute('reseller_dashboard');
}
else{
$form = $this->createForm(LoginType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data=$form->getData();
// stores an attribute in the session for later reuse
$this->session->set('customer_id', $data['customer']->getId());
$customer=$customerRepository->findOneBy(array('id' => $data['customer']->getId()));
$menu=[];
$menu[1]['menu']=array('seul'=>true,'url'=>'reseller_dashboard','icone'=>'pe-7s-rocket','libelle'=>'Dashboard');
// $menu[2]['menu']=array('seul'=>true,'url'=>'#','icone'=>'pe-7s-rocket','libelle'=>'My Profile');
// $group_array=$groupRepository->findBy(array('customer_id' => $data['customer']->getId()));
// $menu_key=2;
// foreach($group_array as $group){
// $leftMenuManagement = $leftMenuManagementRepository->findBy(array('customer_id'=> $data['customer']->getId(), 'id_parent'=>$group->getId()));
// if(count($leftMenuManagement)==0){
// $menu[$menu_key]['menu']=array('seul'=>true,'url'=>'displaying-datas','icone'=>'pe-7s-rocket','libelle'=>$group->getGroupName(),'group_id'=>$group->getId());
// }else if(count($leftMenuManagement) > 0){
// $menu[$menu_key]['menu']=array('seul'=>false,'url'=>'displaying-datas','icone'=>'pe-7s-rocket','libelle'=>$group->getGroupName(),'group_id'=>$group->getId());
// $i=1;
// foreach($leftMenuManagement as $submenu){
// $menu[$menu_key]['sous_menu'][$i]['libelle']='';
// $menu[$menu_key]['sous_menu'][$i]['page'][$i]['url']=$group->getId().'/'.$submenu->getId();
// $menu[$menu_key]['sous_menu'][$i]['page'][$i]['page']=$submenu->getMenuName();
// $i++;
// }
// }
// $menu_key++;
// }
$this->session->set('menu',$menu);
// $this->session->set('app_sidebar_header','Customer Company Name');
$this->session->set('app_sidebar_header',$customer->getNickName());
$this->session->set('customer',$customer);
return $this->redirectToRoute('reseller_dashboard');
}
return $this->render('entry.html.twig', [
'form' => $form->createView(),
]);
}
}
/**
* @Route("/login_as_admin/", name="login_as_admin")
* @return Response
*/
public function login_as_admin()
{
$this->session->set('admin','admin');
$menu=[];
$menu[1]['menu']=array('seul'=>true,'url'=>'application','icone'=>'pe-7s-rocket','libelle'=>'Setup Applications');
$menu[2]['menu']=array('seul'=>true,'url'=>'application/list','icone'=>'pe-7s-rocket','libelle'=>'Applications List');
$menu[3]['menu']=array('seul'=>true,'url'=>'application/setup-display-application','icone'=>'pe-7s-display1','libelle'=>'Setup Display applications');
$menu[4]['menu']=array('seul'=>true,'url'=>'customer/new','icone'=>'pe-7s-user','libelle'=>'Setup Customers');
$menu[5]['menu']=array('seul'=>true,'url'=>'base/customer','icone'=>'pe-7s-users','libelle'=>'Manage Customers');
$this->session->set('menu',$menu);
$this->session->set('app_sidebar_header','MENU');
return $this->redirectToRoute('application_index');
}
/**
* @Route("/dashboard/", name="dashboard")
* @return Response
*/
public function dashboard(CheckSession $checkSession)
{
if(empty($this->session->get('customer_id')) && empty($this->session->get('admin'))){
return $this->redirectToRoute('index');
}
return $this->render('dashboard.html.twig', [
'controller_name' => 'HomeController',
]);
}
/**
* @Route("/logout", name="app_logout")
*/
public function logout()
{
$this->session->clear();
$response = new Response;
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('max-age', 0);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);
return $this->redirectToRoute('index');
}
/**
* @Route("/not_access/", name="not_access")
* @return Response
*/
public function notAccess()
{
return $this->render('not_access.html.twig');
}
}