<?php
namespace App\Controller\Admin;
use App\Domain\Model\Entity\DataRead;
use App\Domain\Services\DataReadInitService;
use App\Form\Admin\DataReadType;
use App\Repository\DataReadRepository;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class DataReadController extends AbstractController
{
public function index(
EntityManagerInterface $em,
PaginatorInterface $paginator,
Request $request
): Response {
$dql = "SELECT e FROM App\Domain\Model\Entity\DataRead e ORDER BY e.id DESC";
$query = $em->createQuery($dql);
$pagination = $paginator->paginate(
$query, /* query NOT result */
$request->query->getInt('page', 1), /*page number*/
30 /*limit per page*/
);
return $this->render('admin/data_read/index.html.twig', [
'pagination' => $pagination,
]);
}
public function indexNoErrors(
EntityManagerInterface $em,
PaginatorInterface $paginator,
Request $request
): Response {
$dql = "SELECT e FROM App\Domain\Model\Entity\DataRead e WHERE e.errors = :errors ORDER BY e.id DESC";
$query = $em->createQuery($dql);
$query->setParameters([
'errors' => json_encode([]),
]);
$pagination = $paginator->paginate(
$query, /* query NOT result */
$request->query->getInt('page', 1), /*page number*/
30 /*limit per page*/
);
return $this->render('admin/data_read/index.html.twig', [
'pagination' => $pagination,
]);
}
public function new(Request $request, DataReadRepository $dataReadRepository): Response
{
$dataRead = new DataRead();
$form = $this->createForm(DataReadType::class, $dataRead);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$dataReadRepository->add($dataRead);
return $this->redirectToRoute('admin_data_read_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('admin/data_read/new.html.twig', [
'data_read' => $dataRead,
'form' => $form,
]);
}
public function show(DataRead $dataRead): Response
{
return $this->render('admin/data_read/show.html.twig', [
'data_read' => $dataRead,
'showDa' => false,
]);
}
public function showDa(DataRead $dataRead): Response
{
return $this->render('admin/data_read/show.html.twig', [
'data_read' => $dataRead,
'showDa' => true,
]);
}
public function showRawDataDecoded(DataRead $dataRead): Response
{
return $this->render('admin/data_read/show_data_read_decoded.html.twig', [
'data_read' => $dataRead,
]);
}
public function edit(Request $request, DataRead $dataRead, DataReadRepository $dataReadRepository): Response
{
$form = $this->createForm(DataReadType::class, $dataRead);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$dataReadRepository->add($dataRead);
return $this->redirectToRoute('admin_data_read_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('admin/data_read/edit.html.twig', [
'data_read' => $dataRead,
'form' => $form,
]);
}
public function delete(Request $request, DataRead $dataRead, DataReadRepository $dataReadRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$dataRead->getId(), $request->request->get('_token'))) {
$dataReadRepository->remove($dataRead);
}
return $this->redirectToRoute('admin_data_read_index', [], Response::HTTP_SEE_OTHER);
}
public function setNew(DataRead $dataRead, DataReadInitService $dataReadInitService): Response
{
$dataRead->initStatus();
$dataReadInitService->setupNewRead($dataRead);
return $this->redirectToRoute('admin_data_read_index');
}
public function sentToDevice(DataRead $dataRead): Response
{
return $this->render('admin/data_read/sent_to_device.html.twig', [
'data_read' => $dataRead,
'showDa' => false,
]);
}
public function errors(DataRead $dataRead): Response
{
return $this->render('admin/data_read/errors.html.twig', [
'data_read' => $dataRead,
]);
}
}