src/Controller/Admin/DashboardController.php line 31
<?phpnamespace App\Controller\Admin;use App\Entity\Tower;use App\Entity\City;use App\Entity\Company;use App\Entity\Rent;use App\Repository\CompanyRepository;use App\Repository\TowerRepository;use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\HttpFoundation\Request;#[IsGranted('ROLE_ADMIN')]class DashboardController extends AbstractDashboardController{private $towerRepository;public function __construct(TowerRepository $towerRepository){$this->towerRepository = $towerRepository;}#[Route(path: '/', name: 'admin')]public function index(): Response{$request = Request::createFromGlobals();// ---$endDate = new \DateTime($request->get("endDate")." 23:59:59");if(!empty($request->get("startDate")))$startDate = new \DateTime($request->get("startDate")." 00:00:00");else$startDate = (clone($endDate))->modify("-1 month");// ---// Gettting months between the dates$interval = \DateInterval::createFromDateString('1 month');$period = new \DatePeriod($startDate, $interval, $endDate);$months = [];foreach ($period as $dt) {$months[] = intval($dt->format("m"));}if(empty($months))$months[] = intval($period->current->format("m"));;// ----// Getting towers$towers = $this->towerRepository->findAll();$towerNames = [];foreach($towers as $tower){$towerNames[] = $tower->getName();}// ----$towerContractsValues = [];foreach($towers as $tower){$towerContractsValues[$tower->getName()] = 0;$rentValue = 0;foreach($tower->getRents() as $rent){// get rent's month start and end$rentValue += $rent->getRentValue();}// convert rentValue from cents to reais$rentValue = $rentValue / 100;$towerContractsValues[$tower->getName()] = $rentValue;}$data = ['startDate' => $startDate->format("Y-m-d"),'endDate' => $endDate->format("Y-m-d"),'months' => $months,'towerNames' => $towerNames,'contractValues' => $towerContractsValues];return $this->render('admin/dashboard.html.twig', $data);}#[Route(path: '/app', name: 'app')]public function app(TowerRepository $towerRepository, CompanyRepository $companyRepository): Response{$towerRepository = $towerRepository->findAll();$companies = $companyRepository->findAll();return $this->render('admin/status.html.twig', ['towers' => $towerRepository,'companies' => $companies,'controller_name' => 'AppController',]);}public function configureDashboard(): Dashboard{return Dashboard::new()->setTitle('Aluguel de Torres - SCC');}public function configureMenuItems(): iterable{yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');yield MenuItem::linkToRoute('Status de uso', 'fa fa-list-check', 'app');yield MenuItem::linkToCrud('Torres', 'fa-solid fa-tower-cell', Tower::class)->setDefaultSort(['city' => 'ASC']);yield MenuItem::linkToCrud('Contratos', 'fa-solid fa-file-contract', Rent::class)->setDefaultSort(['finishAt' => 'ASC']);yield MenuItem::linkToCrud('Empresas', 'fas fa-building', Company::class)->setDefaultSort(['name' => 'ASC']);yield MenuItem::linkToCrud('Cidades', 'fa-solid fa-city', City::class)->setDefaultSort(['name' => 'ASC']);yield MenuItem::linkToCrud('Administradores', 'fas fa-user-cog', User::class)->setController(UserCrudController::class)->setPermission('ROLE_ADMIN')->setDefaultSort(['name' => 'ASC']);}}