<?php
namespace App\Controller;
use App\Entity\Periodo;
use App\Entity\Usuario;
use App\Form\PeriodoType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
//#[Route('/periodo')]
/**
* Class PeriodoController
* @Route("/periodo")
* @package App\Controller
*/
class PeriodoController extends AbstractController
{
//#[Route('/', name: 'app_periodo_index', methods: ['GET'])]
/**
* @Route("/", name= "app_periodo_index", methods= {"GET", "POST"})
* @param Request $request
* @param EntityManagerInterface $entityManager
* @return Response
*/
public function index(Request $request, EntityManagerInterface $entityManager): Response
{
$perfil = $request->getSession()->get('perfilLecciones');
$nivel = $perfil[5]["nivel"]; //4
if ($nivel == 0) {
$this->addFlash('danger', 'El acceso al módulo de "Periodos" está restringido.');
return $this->redirectToRoute('homepage');
}
$periodos = $entityManager
->getRepository(Periodo::class)
->findAll();
return $this->render('periodo/index.html.twig', [
'periodos' => $periodos,
]);
}
//#[Route('/new', name: 'app_periodo_new', methods: ['GET', 'POST'])]
/**
* @Route("/new", name="app_periodo_new", methods={"GET", "POST"})
*/
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$perfil = $request->getSession()->get('perfilLecciones');
$nivel = $perfil[5]["nivel"]; //4
if ($nivel == 0) {
$this->addFlash('danger', 'El acceso al módulo de "Periodos" está restringido.');
return $this->redirectToRoute('homepage');
}
$periodo = new Periodo();
$form = $this->createForm(PeriodoType::class, $periodo);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($periodo);
$entityManager->flush();
return $this->redirectToRoute('app_periodo_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('periodo/new.html.twig', [
'periodo' => $periodo,
'form' => $form,
]);
}
//#[Route('/{idPrd}', name: 'app_periodo_show', methods: ['GET'])]
/**
* @Route("/{idPrd}", name= "app_periodo_show", methods= {"GET"})
*/
public function show(Periodo $periodo): Response
{
return $this->render('periodo/show.html.twig', [
'periodo' => $periodo,
]);
}
//#[Route('/{idPrd}/edit', name: 'app_tema_edit', methods: ['GET', 'POST'])]
/**
* @Route("/{idPrd}/edit", name= "app_periodo_edit", methods= {"GET", "POST"})
*/
public function edit(Request $request, Periodo $periodo, EntityManagerInterface $entityManager): Response
{
$form = $this->createForm(PeriodoType::class, $periodo);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
if ($periodo->getActivo() == 1) {
$activo = "Activo";
} else {
$activo = "Inactivo";
}
$data = array(
'idPrd' => $periodo->getIdPrd(),
'descripcion' => $periodo->getDescripcion(),
'actual' => $activo,
'activo' => $activo,
'mensaje' => 'Se actualizo correctamente',
);
if ($periodo->getActivo() == 1) {
$data['activo'] = "Activo";
} else {
$data['activo'] = "Inactivo";
}
return new JsonResponse($data);
# return $this->redirectToRoute('app_periodo_index', [], Response::HTTP_OK);
}
if($form->isSubmitted() && !$form->isValid()){
$view = $this->renderForm('periodo/modal.html.twig', [
'periodo' => $periodo,
'form' => $form,
]);
$response = new JsonResponse(['form' => $view]);
$response->setStatusCode(Response::HTTP_BAD_REQUEST);
return $response;
}
return $this->renderForm('periodo/modal.html.twig', [
'periodo' => $periodo,
'form' => $form,
]);
}
//#[Route('/{idPrd}', name: 'app_periodo_delete', methods: ['POST'])]
/**
*@Route("/delete/{idPrd}", name= "app_periodo_delete", methods= {"POST"})
*/
public function delete(Request $request, Periodo $periodo, EntityManagerInterface $entityManager): Response
{
if ($this->isCsrfTokenValid('delete'.$periodo->getIdPrd(), $request->request->get('_token'))) {
$entityManager->remove($periodo);
$entityManager->flush();
}
return $this->redirectToRoute('app_periodo_index', [], Response::HTTP_SEE_OTHER);
}
}