<?php
namespace App\Controller;
use App\Service\EmployeeService;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/report")
*/
class ReportController extends AbstractController
{
private EmployeeService $employeeService;
public function __construct(EmployeeService $employeeService)
{
$this->employeeService = $employeeService;
}
/**
* @Route("/daily", name="report_daily")
* @IsGranted("REPORT_DAILY")
*/
public function daily(Request $request): Response
{
$date = $request->get('date') ?? (new \DateTime())->format('d/m/Y');
$data = $this->employeeService->getEmployeesHourLogReport($date, $date);
return $this->render(
'report/daily.html.twig', [
'data' => $data,
'date' => $date,
'title' => 'Rapport Journalier : ' . $date,
'menu' => 'report_daily'
]
);
}
/**
* @Route("/custom_range", name="report_custom_range")
* @IsGranted("REPORT_CUSTOM_RANGE")
*/
public function custom(Request $request): Response
{
$startDate = $request->get('startDate') ?? (new \DateTime())->format('d/m/Y');
$endDate = $request->get('endDate') ?? (new \DateTime())->format('d/m/Y');
$data = $this->employeeService->getEmployeesHourLogReport($startDate, $endDate);
return $this->render(
'report/custom.html.twig', [
'data' => $data,
'startDate' => $startDate,
'endDate' => $endDate,
'title' => sprintf('Rapport entre le %s et le %s', $startDate, $endDate),
'menu' => 'report_custom_range'
]
);
}
/**
* @Route("/month", name="report_month")
* @IsGranted("REPORT_MONTH")
*/
public function month(Request $request): Response
{
$years = [
'2021',
'2022',
'2023'
];
$months = [
'01' => 'Janvier',
'02' => 'Février',
'03' => 'Mars',
'04' => 'Avril',
'05' => 'Mai',
'06' => 'Juin',
'07' => 'Juillet',
'08' => 'Août',
'09' => 'Septembre',
'10' => 'Octobre',
'11' => 'Novembre',
'12' => 'Décembre',
];
$date = new \DateTime();
$month = $request->get('month') ?? $date->format('m');
$year = $request->get('year') ?? $date->format('Y');
//setting date
$date = new \DateTime();
$date->setDate($year, $month, 1);
$startDate = $date->format('d/m/Y');
$date->modify('last day of this month');
$endDate = $date->format('d/m/Y');
$data = $this->employeeService->getEmployeesHourLogReport($startDate, $endDate);
return $this->render(
'report/month.html.twig', [
'data' => $data,
'startDate' => $startDate,
'endDate' => $endDate,
'title' => sprintf('Rapport entre le %s et le %s', $startDate, $endDate),
'menu' => 'report_month',
'years' => $years,
'months' => $months,
'month' => $month,
'year' => $year
]
);
}
}