← Back
Editing: ManagerController.php
<?php namespace App\Controller\Supervisor; use App\Breadcrumb\BreadcrumbInterface; use App\Breadcrumb\BreadcrumbItem; use App\Repository\UserRepository; use App\Service\SupervisorService; use App\Service\Utils; use App\Session\Filter\SessionFiltersContainer; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; #[Route(path: '/supervisor/manager', name: 'supervisor_manager_')] class ManagerController extends AbstractController { public function __construct(BreadcrumbInterface $breadcrumb, SupervisorService $supervisorService) { $breadcrumb->addItem(BreadcrumbItem::set('Managers', 'supervisor_manager_index')); $supervisorService->setSection('manager'); } #[Route(path: '/performance.html', name: 'performance')] public function performance( BreadcrumbInterface $breadcrumb, UserRepository $userRepository, ): Response { $breadcrumb->addItem(BreadcrumbItem::set('Performance')); $data = $userRepository->getByAgenciesByControl([$this->getUser()->getAgency()->getId()]); $prevData = $userRepository->getByAgenciesByControl( agenciesId: [$this->getUser()->getAgency()->getId()], previous: true ); return $this->render( 'supervisor/manager/performance.html.twig', [ 'managers' => $userRepository->findManagersByAgency($this->getUser()->getAgency()), 'data' => $this->getManagerEvolution($data, $prevData), ] ); } #[Route(path: '/', name: 'index')] public function list(UserRepository $userRepository): Response { return $this->render( 'supervisor/manager/index.html.twig', ['managers' => $userRepository->findManagersByAgency($this->getUser()->getAgency())] ); } #[Route(path: '/chart-synthesis.json', name: 'synthesis_chart')] public function synthesisChart( SessionFiltersContainer $sessionFiltersContainer, Utils $utils, UserRepository $userRepository ): JsonResponse { $filters = $sessionFiltersContainer->getCurrent(); $startDate = $filters->getDateRange()->getDateStart(); $endDate = $filters->getDateRange()->getDateEnd(); $labels = $utils->getMonthsTimeline($startDate, $endDate); $managers = $userRepository->getManagersByAgenciesByMonth([$this->getUser()->getAgency()->getId()]); return new JsonResponse([ 'labels' => $labels, 'managers' => $managers, ]); } private function getManagerEvolution($data, $prevData): array { $results = []; foreach ($data as $item) { $results[$item['id']]['current'] = $item['cnt']; $results[$item['id']]['name'] = $item['name']; } foreach ($prevData as $item) { $results[$item['id']]['prev'] = $item['cnt']; $results[$item['id']]['name'] = $item['name']; } foreach ($results as $key => $result) { $current = $result['current'] ?? 0; $prev = $result['prev'] ?? 0; if (!isset($result['current'])) { $results[$key]['current'] = 0; } if (!isset($result['prev'])) { $results[$key]['prev'] = 0; } $results[$key]['evolution'] = $prev > 0 ? ((($current - $prev) / $prev) * 100) : 0; } return $results; } }
Save File
Cancel