diff --git a/src/Controller/MonitoringApiController.php b/src/Controller/MonitoringApiController.php index af92d23..5d8c075 100644 --- a/src/Controller/MonitoringApiController.php +++ b/src/Controller/MonitoringApiController.php @@ -6,91 +6,83 @@ 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 = []; + $labels = []; + $datasets = []; + $entities = $repository->findByDateRange(new \DateTime('now - 1 day'), new \DateTime('now')); - $dateFrom = time() - 3600 * 24; - $dateTo = time(); + $line = [ + 'label' => 'Relevés de la température', + 'data' => [], + 'borderColor' => 'rgb(255, 205, 86)', + 'backgroundColor' => 'rgb(255, 205, 86)', + 'fill' => false, + ]; - $line = [ - 'label' => 'Relevés de la température', - 'data' => [], - 'borderColor' => 'rgb(255, 205, 86)', - 'backgroundColor' => 'rgb(255, 205, 86)', - 'fill' => false, - ]; + $line2 = [ + 'label' => 'Valeur idéale', + 'data' => [], + 'borderColor' => 'rgb(200, 200, 200)', + 'backgroundColor' => 'rgb(200, 200, 200)', + 'fill' => false, + ]; - $line2 = [ - 'label' => 'Valeur idéale', - '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(22, 24); - $line2['data'][] = 23; - } - - $datasets[] = $line; - $datasets[] = $line2; - - return $this->createGraphResponse($labels, $datasets); + foreach ($entities as $entity) { + $labels[] = $entity->getDate()->format('H:i'); + $line['data'][] = $entity->getValue(); + $line2['data'][] = 27; } + + $datasets[] = $line; + $datasets[] = $line2; + + 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 = []; + $labels = []; + $datasets = []; + $entities = $repository->findByDateRange(new \DateTime('now - 1 day'), new \DateTime('now')); - $dateFrom = time() - 3600 * 24; - $dateTo = time(); + $line = [ + 'label' => 'Niveau d\'humidité de l\'atmosphère en %', + 'data' => [], + 'borderColor' => 'rgb(54, 162, 235)', + 'backgroundColor' => 'rgb(54, 162, 235)', + 'fill' => false, + ]; - $line = [ - 'label' => 'Niveau d\'humidité de l\'atmosphère en %', - 'data' => [], - 'borderColor' => 'rgb(54, 162, 235)', - 'backgroundColor' => 'rgb(54, 162, 235)', - 'fill' => false, - ]; + $line2 = [ + 'label' => 'Valeur maximale', + 'data' => [], + 'borderColor' => 'rgb(200, 200, 200)', + 'backgroundColor' => 'rgb(200, 200, 200)', + 'fill' => false, + ]; - $line2 = [ - 'label' => 'Valeur idéale', - '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; - } - - $datasets[] = $line; - $datasets[] = $line2; - - return $this->createGraphResponse($labels, $datasets); + foreach ($entities as $entity) { + $labels[] = $entity->getDate()->format('H:i'); + $line['data'][] = $entity->getValue(); + $line2['data'][] = 50; } + + $datasets[] = $line; + $datasets[] = $line2; + + return $this->createGraphResponse($labels, $datasets); } protected function createGraphResponse(array $labels, array $datasets): JsonResponse diff --git a/src/Repository/HygrometryRepository.php b/src/Repository/HygrometryRepository.php index 67c83e5..054578e 100644 --- a/src/Repository/HygrometryRepository.php +++ b/src/Repository/HygrometryRepository.php @@ -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() - ; - } - */ } diff --git a/src/Repository/TemperatureRepository.php b/src/Repository/TemperatureRepository.php index e39560c..731e8b7 100644 --- a/src/Repository/TemperatureRepository.php +++ b/src/Repository/TemperatureRepository.php @@ -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() - ; - } - */ }