<?php
namespace App\Controller;
use App\Entity\Tumba;
use App\Form\TumbaType;
use App\Repository\TumbaRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\TipoTumba;
use App\Entity\ValorParametro;
use App\Entity\Zona;
use App\Entity\Fallecido;
use App\Service\FallecidosTumbaService;
#[Route('/tumba')]
class TumbaController extends AbstractController {
#[Route('/', name: 'app_tumba_index', methods: ['GET'])]
public function index(TumbaRepository $tumbaRepository): Response {
$tiposTumba = $this->getDoctrine()->getManager()->getRepository("App\Entity\TipoTumba")->findAll();
return $this->render('tumba/index.html.twig', [
'tumbas' => $tumbaRepository->findAll(),
'tipos_tumba' => $tiposTumba,
]);
}
#[Route('/new/{tipoTumba}/{zona}', name: 'app_tumba_new', methods: ['GET', 'POST'])]
public function new(Request $request, TumbaRepository $tumbaRepository, TipoTumba $tipoTumba, Zona $zona): Response {
$em = $this->getDoctrine()->getManager();
$tumba = new Tumba();
$tumba->setZona($zona);
$tumba->setTipoTumba($tipoTumba);
$tumba->setIdentificador("");
$em->persist($tumba);
$em->flush();
foreach ($tumba->getTipoTumba()->getParametros() as $parametro) {
$valorParametro = new ValorParametro();
$valorParametro->setParametro($parametro);
$valorParametro->setValor($parametro->getValorPorDefecto());
$valorParametro->setTumba($tumba);
$em->persist($valorParametro);
$em->flush();
}
return $this->redirect($this->generateUrl('app_tumba_edit', ['id' => $tumba->getId()]));
/* return $this->renderForm('tumba/new.html.twig', [
'tumba' => $tumba,
'form' => $form,
]);
*/
}
#[Route('/{id}', name: 'app_tumba_show', methods: ['GET'])]
public function show(Tumba $tumba): Response {
return $this->render('tumba/show.html.twig', [
'tumba' => $tumba,
'valores' => $tumba->getValorParametros(),
]);
}
#[Route('/datostumba/{tumba}/{fallecido}', name: 'app_tumba_datos', methods: ['GET'])]
public function datos(Tumba $tumba = null, Fallecido $fallecido = null): Response {
return $this->render('tumba/datos.html.twig', [
'tumba' => $tumba,
'valores' => $tumba->getValorParametros(),
'fallecido' => $fallecido
]);
}
#[Route('/{id}/edit', name: 'app_tumba_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Tumba $tumba, TumbaRepository $tumbaRepository): Response {
$em = $this->getDoctrine()->getManager();
$datos = [];
foreach ($tumba->getTipoTumba()->getParametros() as $parametro) {
$valorParametro = $em->getRepository("App\Entity\ValorParametro")->findOneBy(['tumba' => $tumba->getId(), 'parametro' => $parametro->getId()]);
$datos[$parametro->getNombre()] = $valorParametro->getValor();
}
$datos['identificador'] = $tumba->getIdentificador();
$datos['descripcion'] = $tumba->getDescripcion();
$form = $this->createFormBuilder($datos);
foreach ($datos as $key => $valor) {
$keynueva = \App\Util\Funciones::transformarNombre($key);
$form->add($keynueva, \Symfony\Component\Form\Extension\Core\Type\TextType::class, ['mapped' => false, 'required' => false, 'label' => ucfirst($key) . ': ',
'attr' => [
'class' => 'form-control',
'placeholder' => 'Inserte ' . $key,
]]);
}
$form->add('tipoTumba', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, [
'class' => \App\Entity\TipoTumba::class,
'label' => 'tumba.tipo',
'attr' => ['class' => 'form-control select2-blanlk',
'data-toggle' => 'select2',
'placeholder' => 'tumba.placeholderTipo'
],
]);
// $form->add("Guardar", \Symfony\Component\Form\Extension\Core\Type\SubmitType::class);
$form = $form->getForm();
$form->get('tipoTumba')->setData($tumba->getTipoTumba());
foreach ($datos as $key => $valor) {
$keynueva = \App\Util\Funciones::transformarNombre($key);
$form->get($keynueva)->setData($valor);
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
foreach ($tumba->getTipoTumba()->getParametros() as $parametro) {
$valorParametro = $em->getRepository("App\Entity\ValorParametro")->findOneBy(['tumba' => $tumba->getId(), 'parametro' => $parametro->getId()]);
$valorParametro->setValor($form->get(\App\Util\Funciones::transformarNombre($parametro->getNombre()))->getData());
$em->persist($valorParametro);
}
$tumba->setIdentificador($form->get('identificador')->getData());
$tumba->setDescripcion($form->get('descripcion')->getData());
$tumba->setTipoTumba($form->get('tipoTumba')->getData());
$em->persist($tumba);
$em->flush();
return $this->redirect($this->generateUrl('app_zona_index'));
}
return $this->renderForm('tumba/form.html.twig', [
'tumba' => $tumba,
'form' => $form,
]);
}
#[Route('/delete/{id}', name: 'app_tumba_delete', methods: ['GET', 'POST'])]
public function delete(Request $request, Tumba $tumba, TumbaRepository $tumbaRepository): Response {
$em = $this->getDoctrine()->getManager();
foreach ($tumba->getValorParametros() as $valor) {
$tumba->removeValorParametro($valor);
$em->remove($valor);
$em->flush();
}
$em->remove($tumba);
$em->flush();
return $this->redirectToRoute('app_zona_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('/zonas/{zona}', name: 'app_tumba_zona', methods: ['GET', 'POST'])]
public function tumbasPorZona(Request $request, Zona $zona, TumbaRepository $tumbaRepository, \App\Repository\TipoTumbaRepository $tipoRepository): Response {
$tipos = $tipoRepository->findAll();
$datos = [];
foreach ($tipos as $tipo) {
$tumbas = $tumbaRepository->findBy(['zona' => $zona->getId(), 'tipoTumba' => $tipo]);
foreach ($tumbas as $tumba) {
$datos['tumbas'][$tipo->getNombre()][] = $tumba;
}
if (count($tumbas) > 0) {
$datos['tipo'][] = $tipo->getNombre();
}
}
return $this->renderForm('tumba/tumbasZona.html.twig', [
'zona' => $zona,
'datos' => $datos
]);
}
#[Route('/tumbas/llenas', name: 'app_tumba_llena', methods: ['GET', 'POST'])]
public function tumbasLlenas(FallecidosTumbaService $fallecidoTumbaService, TumbaRepository $tumbaRepository): Response {
$tumbas = $tumbaRepository->findAll();
$datos = [];
foreach ($tumbas as $tumba) {
if ($fallecidoTumbaService->tumbaLlenaObjeto($tumba)) {
$datos['ocupadas'][] = $tumba->getId();
}
if($fallecidoTumbaService->tumbaConFallecido($tumba)){
$datos['con'][]=$tumba->getId();
}
}
return new \Symfony\Component\HttpFoundation\JsonResponse($datos);
}
#[Route('/anadir/tumba', name: 'app_tumba_anadir', methods: ['GET', 'POST'])]
public function tumbasAnadir(TumbaRepository $tumbaRepository, \App\Repository\TipoTumbaRepository $tipoTumbaRepository, \App\Repository\ZonaRepository $zonaRepository): Response {
var_dump("hola");die();
$em = $this->getDoctrine()->getManager();
$zona= $zonaRepository->find(31);
$tipoTumba=$tipoTumbaRepository->find(1);
for ($i = 1; $i <= 71; $i++) {
$em = $this->getDoctrine()->getManager();
$tumba = new Tumba();
$tumba->setZona($zona);
$tumba->setTipoTumba($tipoTumba);
$tumba->setIdentificador($i);
$tumba->setDescripcion("Nicho ".$i);
$em->persist($tumba);
$em->flush();
foreach ($tumba->getTipoTumba()->getParametros() as $parametro) {
$valorParametro = new ValorParametro();
$valorParametro->setParametro($parametro);
$valorParametro->setValor($parametro->getValorPorDefecto());
$valorParametro->setTumba($tumba);
$em->persist($valorParametro);
$em->flush();
}
}
die();
}
}