<?php
namespace App\Controller;
use App\Entity\Vehicle;
use App\Entity\VehiclePositions;
use App\Service\ElasticService;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class CronJobController extends AbstractController
{
public function postPositions(EntityManagerInterface $em, Request $request, LoggerInterface $logger)
{
try {
$data1 = $request->request->get('data');
$data = json_decode($data1, true);
$vehicle = $em->getRepository(Vehicle::class)->findOneBy(['trackerId' => $data['imei']]);
$positions = new VehiclePositions();
$positions->setVehicle($vehicle)
->setLongitude($data['lng'])
->setLatitude($data['lat'])
->setPositionTime(new \DateTime())
->setVehicleSpeed($data['speed'])
->setDistanceCovered(0.0);
$em->persist($positions);
$em->flush();
$logger->error(__METHOD__ . ' -> {message}', ['message' => $data]);
return new Response('Ok', 200);
} catch (\Exception $e) {
$logger->error(__METHOD__ . ' -> {message}', ['message' => $e->getMessage()]);
}
}
public function postPositionsLocal(EntityManagerInterface $em, Request $request, LoggerInterface $logger)
{
$data1='{"op":"loc","imei":"358480080044318","dt_tracker":"2019-12-17 17:12:37","lat":38.007147,"lng":23.845655,"altitude":229,"angle":60,"speed":0,"loc_valid":1,"params":{"gpslev":7,"batc":0,"gsmlev":3,"gnss":1,"ext_volt":12.78,"speed":0,"batv":4.071},"event":null}';
// dump(json_decode($data,true));
// $data1=$request->request->get('data');
$data=json_decode($data1,true);
$vehicle=$em->getRepository(Vehicle::class)->findOneBy(['trackerId' => $data['imei']]);
$positions=new VehiclePositions();
$positions->setVehicle($vehicle);
$positions->setLongitude($data['lng']);
$positions->setLatitude($data['lat']);
$positions->setPositionTime(new \DateTime());
$positions->setVehicleSpeed($data['speed']);
$positions->setDistanceCovered(0.0);
$em->persist($positions);
$em->flush();
return new Response('Ok',200);
}
public function purgeVehiclePositions(ElasticService $elasticService, LoggerInterface $logger): Response
{
$size = 10000;
try {
$date = new \DateTime();
$date->sub(new \DateInterval('P90D'));
$response = $elasticService->deleteOldValues($date, $size);
if ($response) {
return new Response('Ok',200);
}
return new Response('Internal Server Error',500);
} catch (\Exception $e) {
$logger->error(__METHOD__ . ' -> {message}', ['message' => $e->getMessage()]);
return new Response('Internal Server Error',500);
}
}
}