<?php
namespace App\Controller;
use App\Controller\Abstract\MainController;
use App\Entity\User;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class Home extends MainController {
/**
* @Route ("/", name="index")
*/
public function homePage(): Response
{
if (!$this->isLogged()) {
return $this->redirectToRoute('app_login');
}
return $this->redirectToRoute('dashboard');
}
/**
* @Route ("/dashboard", name="dashboard")
*/
public function homePageLogged(Request $request): Response
{
return $this->dashboard($request);
}
/**
* @param Request $request
*
* @return Response
*/
private function dashboard(Request $request): Response
{
return match ($this->getUserRole()) {
User::ROLE_ADMIN
=> $this->dashboardAdmin($request),
User::ROLE_MANAGER
=> $this->dashboardManager($request),
User::ROLE_AGENT
=> $this->dashboardAgent($request),
User::ROLE_CLIENT
=> $this->dashboardClient($request),
default
=> $this->response($request, null)
};
}
/**
* @param Request $request
*
* @return Response
*/
private function dashboardAdmin(Request $request): Response
{
return $this->response(
$request,
'main\\user\\dashboard\\admin.html.twig'
);
}
/**
* @param Request $request
*
* @return Response
*/
private function dashboardManager(Request $request): Response
{
return $this->response(
$request,
'main\\user\\dashboard\\manager.html.twig'
);
}
/**
* @param Request $request
*
* @return Response
*/
private function dashboardAgent(Request $request): Response
{
return $this->response(
$request,
'main\\user\\dashboard\\agent.html.twig'
);
}
/**
* @param Request $request
*
* @return Response
*/
private function dashboardClient(Request $request): Response
{
return $this->response(
$request,
'main\\user\\dashboard\\client.html.twig'
);
}
}