<?php
namespace App\Controller;
use App\Entity\AgendaProcedimiento;
use App\Entity\Agenda;
use App\Form\AgendaProcedimientoType;
use App\Repository\AgendaProcedimientoRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Security;
/**
* @Route("/agenda_procedimiento")
*/
class AgendaProcedimientoController extends AbstractController
{
/**
* @var Security
*/
private $security;
public function __construct(Security $security)
{
date_default_timezone_set("America/Guayaquil");
$this->security = $security;
}
/**
* @Route("/{id}", name="agenda_procedimiento_index", methods={"GET"})
*/
public function index(Agenda $agenda, Request $request): Response
{
$procedimientos = $agenda->getAgendaProcedimientos();
return $this->render('agenda/index_procedimientos.html.twig', [
'procedimientos' => $procedimientos,
]);
}
/**
* @Route("/new/{id}", name="agenda_procedimiento_new", methods={"GET","POST"})
*/
public function new(Request $request, Agenda $agenda): Response
{
$user = $this->security->getUser();
$ip = $request->getClientIp();
$agendaProcedimiento = new AgendaProcedimiento();
$form_ap = $this->createForm(AgendaProcedimientoType::class, $agendaProcedimiento);
$form_ap->handleRequest($request);
if ($form_ap->isSubmitted() && $form_ap->isValid()) {
$agendaProcedimiento->setAgenda($agenda);
$agendaProcedimiento->setIpCrea($ip);
$agendaProcedimiento->setIpModifica($ip);
$agendaProcedimiento->setUserCrea($user->getId());
$agendaProcedimiento->setUserModifica($user->getId());
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($agendaProcedimiento);
$entityManager->flush();
return $this->json(['estado' => 'ok', 'agenda' => $agendaProcedimiento->getId()]);
}
return $this->json(['estado' => 'error', 'msn' => 'NO SE GUARDO']);
}
/**
* @Route("/procedimiento/eliminar/{id}", name="agenda_procedimiento_delete", methods={"DELETE"})
*/
public function delete(Request $request, AgendaProcedimiento $procedimiento): Response
{
// Guardamos la agenda asociada para recargar el listado luego
$agenda = $procedimiento->getAgenda();
// Eliminamos el procedimiento
$em = $this->getDoctrine()->getManager();
$em->remove($procedimiento);
$em->flush();
// Recargamos el listado de procedimientos
$procedimientos = $agenda->getAgendaProcedimientos();
$html = $this->renderView('agenda/index_procedimientos.html.twig', [
'procedimientos' => $procedimientos,
]);
return $this->json([
'estado' => 'ok',
'html' => $html,
]);
}
}