← Back
Editing: ManagerController.php
<?php namespace App\Controller\Organization; use App\Breadcrumb\BreadcrumbInterface; use App\Breadcrumb\BreadcrumbItem; use App\Repository\UserRepository; use App\Service\OrganizationService; 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: '/organization/manager', name: 'organization_manager_')] class ManagerController extends AbstractController { public function __construct(BreadcrumbInterface $breadcrumb, SupervisorService $supervisorService) { $breadcrumb->addRootItem(BreadcrumbItem::set('Accueil', 'organization_index')); $breadcrumb->addItem(BreadcrumbItem::set('Managers', 'organization_manager_index')); $supervisorService->setSection('manager'); } #[Route(path: '/performance.html', name: 'performance')] public function performance( BreadcrumbInterface $breadcrumb, UserRepository $userRepository, OrganizationService $organizationService ): Response { $agenciesId = $organizationService->getAgenciesId(); $breadcrumb->addItem(BreadcrumbItem::set('Performance')); $data = $userRepository->getByAgenciesByControl($agenciesId); $prevData = $userRepository->getByAgenciesByControl(agenciesId: $agenciesId, previous: true); return $this->render( 'organization/manager/performance.html.twig', [ 'managers' => $userRepository->findManagersByOrganization($this->getUser()->getOrganization()), 'data' => $this->getManagerEvolution($data, $prevData), ] ); } #[Route(path: '/', name: 'index')] public function list(UserRepository $userRepository): Response { return $this->render( 'organization/manager/index.html.twig', ['managers' => $userRepository->findManagersByOrganization($this->getUser()->getOrganization())] ); } #[Route(path: '/chart-synthesis.json', name: 'synthesis_chart')] public function synthesisChart( OrganizationService $organizationService, SessionFiltersContainer $sessionFiltersContainer, Utils $utils, UserRepository $userRepository ): JsonResponse { $agenciesId = $organizationService->getAgenciesId(); $filters = $sessionFiltersContainer->getCurrent(); $startDate = $filters->getDateRange()->getDateStart(); $endDate = $filters->getDateRange()->getDateEnd(); $labels = $utils->getMonthsTimeline($startDate, $endDate); $managers = $userRepository->getManagersByAgenciesByMonth($agenciesId); 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