<?php
/**
* @license Silk Software House
*/
namespace App\Controller\Index;
use App\Assembler\DataSampleAssembler;
use App\DataBridge\DataAbstraction;
use App\DataBridge\DataTransformers\TemperatureTransformer;
use App\Entity\Measurement;
use App\Form\UserInterface\ChartType;
use App\Helpers\DatabaseAwareTrait;
use App\Helpers\ImportFromFileTrait;
use App\Service\ImportFromWinApp\ImportMeasurementService;
use FOS\RestBundle\Controller\Annotations\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* todo: it is Proof-of-concept for drawing of charts controller.
* Class IndexController
*/
class MeasurementController extends AbstractController
{
use DatabaseAwareTrait;
use ImportFromFileTrait;
const TIME_FORMAT = 'Y-m-d H:i:s';
private $chartDataAbstraction;
private $importMeasurementService;
private $dataSampleAssembler;
/**
*
* IndexController constructor.
*
* todo: consider moving to trait wither
* todo: import is testing purpose only here.
* todo: remove $appFixtures
*
* @param DataAbstraction $chartDataAbstraction
* @param ImportMeasurementService $importMeasurementService
* @param DataSampleAssembler $dataSampleAssembler
*/
public function __construct(DataAbstraction $chartDataAbstraction, ImportMeasurementService $importMeasurementService, DataSampleAssembler $dataSampleAssembler)
{
$this->chartDataAbstraction = $chartDataAbstraction;
$this->importMeasurementService = $importMeasurementService;
$this->dataSampleAssembler = $dataSampleAssembler;
}
/**
* @Route("/measurement/{id}", name="chart_ss")
*
* @param $id
*
* @return Response
*/
public function measurement($id = 1)
{
/** @var Measurement $measurement */
$measurement = $this->getRepository(Measurement::class)->find($id);
if (null === $measurement) {
throw new NotFoundHttpException(sprintf('Measurement with id %s was not found.', $id));
}
//$chart = $this->chartDataAbstraction->setMeasurement($measurement)->getDataArray();
$form = $this->createForm(ChartType::class);
$dataAbstraction = $this->chartDataAbstraction
->setCalculationModel(new TemperatureTransformer())
->setMeasurement($measurement);
$form->get('chartData')->setData($dataAbstraction->getJson());
$form->get('title')->setData($this->chartDataAbstraction->getTitle());
return $this->render(
//'example_chart_scroll.html.twig',
'index/example_chart_canvas.html.twig',
['form' => $form->createView()]
);
}
/**
* @Route("/", name="index")
*
* @return RedirectResponse
*/
public function index()
{
return $this->redirectToRoute('panel_devices');
}
}