add repository finders and update controllers to load data from database

This commit is contained in:
Simon Vieille 2020-03-16 14:54:07 +01:00
parent 38b433a63c
commit aa2b84d30e
Signed by: deblan
GPG key ID: 03383D15A1D31745
3 changed files with 68 additions and 108 deletions

View file

@ -6,21 +6,19 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use App\Repository\TemperatureRepository;
use App\Repository\HygrometryRepository;
class MonitoringApiController extends AbstractController
{
/**
* @Route("/api/monitoring/temperature", name="api_monitoring_temperature", methods={"GET"})
*/
public function temperature(Request $request)
public function temperature(Request $request, TemperatureRepository $repository)
{
if ($request->isMethod('POST')) {
} else {
$labels = [];
$datasets = [];
$dateFrom = time() - 3600 * 24;
$dateTo = time();
$entities = $repository->findByDateRange(new \DateTime('now - 1 day'), new \DateTime('now'));
$line = [
'label' => 'Relevés de la température',
@ -38,10 +36,10 @@ class MonitoringApiController extends AbstractController
'fill' => false,
];
for ($u = $dateFrom; $u <= $dateTo; $u+= 600) {
$labels[] = date('H:i', $u);
$line['data'][] = mt_rand(22, 24);
$line2['data'][] = 23;
foreach ($entities as $entity) {
$labels[] = $entity->getDate()->format('H:i');
$line['data'][] = $entity->getValue();
$line2['data'][] = 27;
}
$datasets[] = $line;
@ -49,20 +47,15 @@ class MonitoringApiController extends AbstractController
return $this->createGraphResponse($labels, $datasets);
}
}
/**
* @Route("/api/monitoring/hygrometry", name="api_monitoring_hygrometry", methods={"GET"})
*/
public function hygrometry(Request $request)
public function hygrometry(Request $request, HygrometryRepository $repository)
{
if ($request->isMethod('POST')) {
} else {
$labels = [];
$datasets = [];
$dateFrom = time() - 3600 * 24;
$dateTo = time();
$entities = $repository->findByDateRange(new \DateTime('now - 1 day'), new \DateTime('now'));
$line = [
'label' => 'Niveau d\'humidité de l\'atmosphère en %',
@ -73,17 +66,17 @@ class MonitoringApiController extends AbstractController
];
$line2 = [
'label' => 'Valeur idéale',
'label' => 'Valeur maximale',
'data' => [],
'borderColor' => 'rgb(200, 200, 200)',
'backgroundColor' => 'rgb(200, 200, 200)',
'fill' => false,
];
for ($u = $dateFrom; $u <= $dateTo; $u+= 600) {
$labels[] = date('H:i', $u);
$line['data'][] = mt_rand(50, 55);
$line2['data'][] = 53;
foreach ($entities as $entity) {
$labels[] = $entity->getDate()->format('H:i');
$line['data'][] = $entity->getValue();
$line2['data'][] = 50;
}
$datasets[] = $line;
@ -91,7 +84,6 @@ class MonitoringApiController extends AbstractController
return $this->createGraphResponse($labels, $datasets);
}
}
protected function createGraphResponse(array $labels, array $datasets): JsonResponse
{

View file

@ -19,32 +19,16 @@ class HygrometryRepository extends ServiceEntityRepository
parent::__construct($registry, Hygrometry::class);
}
// /**
// * @return Hygrometry[] Returns an array of Hygrometry objects
// */
/*
public function findByExampleField($value)
public function findByDateRange(\DateTime $fromDate, \DateTime $toDate)
{
return $this->createQueryBuilder('h')
->andWhere('h.exampleField = :val')
->setParameter('val', $value)
->orderBy('h.id', 'ASC')
->setMaxResults(10)
->orderBy('h.date')
->andWhere('h.date >= :fromDate')
->andWhere('h.date <= :toDate')
->setParameter('fromDate', $fromDate->format('Y-m-d H:i:s'))
->setParameter('toDate', $toDate->format('Y-m-d H:i:s'))
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?Hygrometry
{
return $this->createQueryBuilder('h')
->andWhere('h.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
}

View file

@ -19,32 +19,16 @@ class TemperatureRepository extends ServiceEntityRepository
parent::__construct($registry, Temperature::class);
}
// /**
// * @return Temperature[] Returns an array of Temperature objects
// */
/*
public function findByExampleField($value)
public function findByDateRange(\DateTime $fromDate, \DateTime $toDate)
{
return $this->createQueryBuilder('t')
->andWhere('t.exampleField = :val')
->setParameter('val', $value)
->orderBy('t.id', 'ASC')
->setMaxResults(10)
->orderBy('t.date')
->andWhere('t.date >= :fromDate')
->andWhere('t.date <= :toDate')
->setParameter('fromDate', $fromDate->format('Y-m-d H:i:s'))
->setParameter('toDate', $toDate->format('Y-m-d H:i:s'))
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?Temperature
{
return $this->createQueryBuilder('t')
->andWhere('t.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
}