<?php
namespace App\Controller;
use App\Entity\Espectro;
use App\Entity\EspectroPersonal;
use FOS\RestBundle\Controller\AbstractFOSRestController;
use FOS\RestBundle\Controller\Annotations as Rest;
use JMS\Serializer\SerializerInterface;
use Swagger\Annotations as SWG;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Nelmio\ApiDocBundle\Annotation\Model;
use App\Service\EspectroService;
use JMS\Serializer\SerializationContext;
/**
* Conjunto de funciones para el manejo del espectro.
*
* @package App\Controller
* @Rest\Route("/api")
*/
class EspectroController extends AbstractFOSRestController
{
use \App\Espectrometria\FuncionesEspectrometria;
private $serializer;
private $espectroService;
public function __construct(SerializerInterface $serialicer, EspectroService $espectroService)
{
$this->espectroService = $espectroService;
$this->serializer = $serialicer;
}
/**
* @Rest\Post("/salvarMedicionOficial")
*/
public function gardarMedicionOficial(Request $request)
{
$espectro = json_decode($request->getContent());
$this->espectroService->guardarEspectro($espectro);
$response = new Response($this->serializer->serialize("Datos guardados",'json'),Response::HTTP_OK);
return $response;
}
/**
* @Rest\Post("/salvarMedicion")
*/
public function guardaValorEspectral(Request $request)
{
$usr = $this->get('security.token_storage')->getToken()->getUser();
$espectros = json_decode($request->getContent());
$espectro = $this->espectroService->guardarEspectroPersonal($espectros,$usr);
$response = new Response($this->serializer->serialize($espectro->getId(),'json'),Response::HTTP_OK);
return $response;
}
/**
* @Rest\Get("/obtenerMediciones")
*/
public function obtenerMediciones()
{
$usr = $this->get('security.token_storage')->getToken()->getUser();
$data = $this->getDoctrine()->getRepository(EspectroPersonal::class)->findBy(['cuenta'=>$usr->getId(),'activo'=>true]);
$response = new Response($this->serializer->serialize($data,'json',SerializationContext::create()->setGroups('visualizar')),Response::HTTP_OK);
return $response;
}
/**
* @Rest\Get("/obtenerMedicion")
*/
public function obtenerMedicion(Request $request)
{
$usr = $this->get('security.token_storage')->getToken()->getUser();
$formulaId = $request ->query ->get('idFormula');
$data = $this->getDoctrine()->getRepository(Espectro::class)->findBy(['formula'=>$formulaId]);
$response = new Response($this->serializer->serialize($data,'json'),Response::HTTP_OK);
return $response;
}
/**
* @Rest\Post("/buscarFormulas")
*/
public function buscarFormulas(Request $request)
{
$cuenta = $this->get('security.token_storage')->getToken()->getUser();
$params = json_decode($request->getContent());
$data = $this->espectroService->buscarFormulas($params, $cuenta);
return new Response($this->serializer->serialize($data,'json'),Response::HTTP_OK);
}
/**
* @Rest\Post("/modificaMedicion")
*/
public function modificaMedicion(Request $request)
{
$usr = $this->get('security.token_storage')->getToken()->getUser();
$espectro = json_decode($request->getContent());
if($this->espectroService->modificarEspectroPersonal($espectro,$usr)) {
return new Response($this->serializer->serialize("Datos actualizados", 'json'), Response::HTTP_OK);
}
else {
return new Response($this->serializer->serialize("error al guardar", 'json'), Response::HTTP_NOT_MODIFIED);
}
}
/**
* @Rest\Post("/ajustarFormula", name="ajustarFormula")
* @param id
*/
public function realizarAjuste(Request $request)
{
$idFormula= $request->get('idFormula');
$idEspectro = $request->get('idEspectro');
$ajuste = $this->espectroService->ajustar($idFormula,$idEspectro);
return new Response($this->serializer->serialize($ajuste,'json'),Response::HTTP_OK);
//return $this->render('main/ajuste.twig',['formula'=> $formula, 'ajuste'=>$ajuste->init()]);
}
/**
*
* @Rest\Post("/desactivaMedidas")
*/
public function desactivaAllEspectro(Request $request)
{
$cuenta = $this->get('security.token_storage')->getToken()->getUser();
// $cuenta = $this->getDoctrine()->getRepository(EspectroPersonal::class)->findBy(['cuenta' => $usr->getId()]);
$measures = json_decode($request->getContent());
foreach ($measures as $measure) {
$element = $this->getDoctrine()->getRepository(EspectroPersonal::class)->findOneBy(['cuenta'=> $cuenta->getId(),'id'=>$measure->id]);
if(!$element)
continue;
$element->setActivo(false);
$this->getDoctrine()->getManager()->persist($element);
$this->getDoctrine()->getManager()->flush();
}
$response = new Response($this->serializer->serialize("Datos guardados", 'json'), Response::HTTP_OK);
return $response;
}
}