<?php
namespace App\Controller;
use App\Entity\Dashboard;
use App\Form\DashboardType;
use App\Repository\UserRepository;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
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\Routing\Generator\UrlGeneratorInterface;
/**
*@Route("/")
*/
class DashboardController extends AbstractController
{
/**
*@Route("/", name="dashboard.index")
*/
public function index(Request $request, EntityManagerInterface $entityManager, UserRepository $userRepository): Response
{
if ($request->getSession()->get('userPossess') == 'all') {
$users = $userRepository->getAllAgent($this->getUser()->getId());
} else {
$users[] = $userRepository->find($request->getSession()->get('userPossess')->getId());
}
$tasks = [];
$automatisation = [];
$leads = [];
$others = new Dashboard();
foreach ($users as $user) {
foreach ($user->getTasksActor() as $task) {
if ($task->getDueDate() <= new DateTime('now')) {
$tasks[] = $task;
}
}
$lead = $user->getLeads();
if ($request->getSession()->get('userPossess') == 'all') {
$lead = $user->getLeadsByPossessor();
}
if(empty($leads)){
foreach ($lead as $l) {
if ($l->getAutomatisation() == 1) {
$automatisation[] = $l;
}
$leads[] = $l;
}
}
$other = new Dashboard($user->getDashboardInfo());
$others->sumInfo($other);
}
$paramsRender = [
'current_page' => 'home',
'tasks' => count($tasks),
'automatisation' => count($automatisation),
'leads' => count($leads),
'other' => $others,
];
if ($request->getSession()->get('userPossess') != 'all') {
$form = $this->createForm(DashboardType::class, $others);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($this->isCsrfTokenValid('dashboard', $request->get('_token'))) {
$user->setDashboardInfo($others->setJson());
$entityManager->flush($user);
}
}
$formParams['form'] = $form->createView();
$paramsRender = array_merge($paramsRender, $formParams);
}
return $this->render('dashboard/index.html.twig', $paramsRender);
// return new Response('test');
}
}