<?php
namespace App\Controller\Mvc;
use App\Service\Entry\ReportService;
use App\Utils\TargetChoiceUtil;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/report")
*/
class reportController extends AbstractController
{
/**
* @Route ("/", name="report_index", methods={"GET"})
*/
public function index(
Request $request,
ReportService $service
) {
$criteria = $service->getCriteriaFromRequest($request);
$qb = $service->getQueryBuilder($criteria);
$paginate = $service->handleList($qb, $criteria);
return $this->render('pages/report/index.html.twig', [
"paginate" => $paginate,
"data" => $paginate->getPaginator()->getIterator(),
"categories" => TargetChoiceUtil::localeNames($request->getLocale()),
"criteria" => $criteria
]);
}
/**
* @Route("/{id}", name="report_detail", methods={"GET"}, requirements={"id" = "\d+"})
*/
public function detail(
Request $request,
ReportService $service,
int $id
) {
$report = $service
->getQueryBuilder(["id" => $id])
->getQuery()
->getOneOrNullResult()
;
if(!$report) {
throw new NotFoundHttpException('記事がありません');
}
return $this->render('pages/report/detail.html.twig', [
"report" => $report
]);
}
/**
* @Route ("/headline", name="report_headline", methods={"GET"})
*/
public function headline(
ReportService $service
): Response {
$reports = $service
->getQueryBuilder([])
->setMaxResults(2)
->getQuery()
->getResult()
;
return $this->render('pages/report/headline.html.twig', [
"reports" => $reports
]);
}
}