<?php
namespace App\Controller;
use App\Entity\Main\Tenant;
use App\Entity\Tenant\Agence;
use App\Entity\Tenant\Banque;
use App\Repository\Main\TenantRepository;
use App\Repository\Tenant\UserRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use App\Services\TenantManager;
/**
* @Route("/")
*/
class DefaultController extends AbstractController
{
private TenantManager $tenantManager;
public function __construct( TenantManager $tenantManager)
{
$this->tenantManager = $tenantManager;
}
/**
* @Route("/tenant")
*
*/
public function index( UserRepository $userRepository ) {
$this->isGrantedUser('ROLE_ADMIN');
$tenant = $this->tenantManager->getCurrentTenant();
if (!$this->getUser()) {
return $this->redirectToRoute('login');
}
return $this->render('default/index.html.twig', [
'users' => $userRepository->findAll(),
'tenant' => $tenant
]);
}
/**
* @Route("/", name="defaut_index")
*/
public function globalIndex(
Request $request,
TenantRepository $tenantRepository
) {
$server = $request->server->get('HTTP_HOST');
$item = explode(".", $server);
$subDomain = $item[0];
if (!$subDomain) {
throw $this->createNotFoundException('The subdomain parameters is required in the URL');
}
/* @var $tenant Tenant */
$tenant = $tenantRepository->findOneBy([
'subDomain' => $subDomain
]);
if (!$tenant instanceof Tenant) {
return $this->render('admin/default/app_index.html.twig', [
]);
// throw $this->createNotFoundException('The tenant for this ID not found');
}
/* @var $connection TenantConnection */
$connection = $this->getDoctrine()->getConnection('tenant');
$connection->changeParams($tenant->getDbName(), $tenant->getDbUser(), $tenant->getDbPassword());
$connection->reconnect();
return $this->render('default/tenant_index.html.twig', [
'tenant' => $tenant
]);
}
/**
* @Route("/get/agences", name="get_agences")
*/
public function getAgences(){
$em = $this->getDoctrine()->getManager('tenant');
return $this->render('default/get_agences.html.twig', [
'agences' => $em->getRepository(Agence::class)->findBy(['archived' => false])
]);
}
/**
* @Route("/get/banks/{selectedBank}", name="get_banks")
*/
public function getBanks( $selectedBank ){
$em = $this->getDoctrine()->getManager('tenant');
return $this->render('default/get_banks.html.twig', [
'banks' => $em->getRepository(Banque::class)->findAll(),
'selectedBank' => $selectedBank ? $selectedBank->getId() : null,
]);
}
}