<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Knp\Component\Pager\PaginatorInterface;
use MobileDetectBundle\DeviceDetector\MobileDetectorInterface;
use App\Entity\SaquitoPagina;
use App\Entity\SaquitoNoticia;
use App\Entity\IpaDocumento;
use App\Entity\IpaInforme;
/**
* Controlador principal del Bundle Main
*
* @Route("/")
*
* @category Controladores
* @package Saquito
* @copyright (c) 2022, APDiseño
* @author Andrés Pieruccioni <andrespieruccioni@gmail.com>
*/
class IpaController extends AbstractController
{
/**
* @Route("/", name="saquito_paginas_bienvenidos")
*/
public function bienvenidos(MobileDetectorInterface $dispositivo): Response
{
$pagina = new saquitoPagina();
$pagina->setTitulo("Portada");
$pagina->setDescripcion($this->getParameter('proyecto')['descripcion']);
$pagina->setRobots("Index, Follow");
$pagina->setKeyworks($this->getParameter('proyecto')['keyworks']);
$pagina->setAutor($this->getParameter('proyecto')['autor']);
$repository = $this->getDoctrine()->getRepository(SaquitoNoticia::class);
$noticias = $repository->findAll();
if ( $dispositivo->isMobile()) {
$template = "/portada/desktop.html.twig";
} else {
$template = "/portada/desktop.html.twig";
}
return $this->render(
$template,
array('pagina' => $pagina, 'noticias' =>$noticias));
}
/**
* Renderiza una página con el listado de documentos disponibles con un tipo
*
* @Route("/documentos/tipo/{tipo}/", name="ipa_documentos_listar_tipo")
*
* @author Andrés Pieruccioni <andrespieruccioni@gmail.com>
*
* @category function
* @param Request $request Utiliza knp_paginator, por eso necesita el rango de documentos a mostrar
* @return string Código HTML de la página con el listado de documentos
*/
public function listarTipoDocumento($tipo, PaginatorInterface $paginator, Request $request): Response
{
$em = $this->getDoctrine()->getManager();
$pagina = new saquitoPagina;
$pagina->setTitulo('Listado de documentos');
$repository = $this->getDoctrine()->getRepository(IpaDocumento::class);
$documentos = $repository->findAll();
//$documentos = $em->getRepository('APDIpaPropioBundle:ipaDocumentos')
// ->verTodosTipo($tipo,$this->get('security.authorization_checker')->isGranted('ROLE_USER'));
$pagination = $paginator->paginate(
$documentos,
$request->query->get('pagina', 1),
$this->getParameter('proyecto')['noticias']['porpagina']
);
return $this->render('/documentos/listar-tipo.html.twig',
array(
'pagina' => $pagina,
'tipo' => $documentos,
'pagination' => $pagination
));
}
/**
* Armar Menu
*
* @Route("/documentos/{tipo}/{id}/{slug}", name="ipa_documentos_ver")
*
* @author Andrés Pieruccioni <andrespieruccioni@gmail.com>
*
* @category function
* @param ipaDocumentos $documento Documento a mostrar
* @return string Código HTML de la página con el documento
*/
public function verDocumento(IpaDocumento $documento)
{
$pagina = new saquitoPagina;
if ($this->get('security.authorization_checker')->isGranted('ROLE_USER') or ($documento->isPrivado() == false)) {
$pagina->setTitulo($documento->getTitulo());
$pagina->setDescripcion($documento->getDescripcion());
return $this->render(
'/documentos/ver.html.twig',array(
'documento' => $documento,
'pagina' => $pagina
));
} else {
throw new \Exception('Esta información es sólo de uso interno del Instituto Provincial del Agua!');
}
}
/**
* @Route("/{_locale}/informe", name="saquito_informe_ameghino_listar")
*
* @category function
* @param Request $request Utiliza knp_paginator, por eso necesita el rango de noticias a mostrar
*/
public function informe(PaginatorInterface $paginator, Request $request): Response
{
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(IpaInforme::class);
$query = $repository->todos();
$pagination = $paginator->paginate(
$query, /* query NOT result */
$request->query->get('pagina', 1),
10/*limit per page*/
);
return $this->render(
'informes/renderizar.html.twig',
array('pagination' => $pagination)
);
}
// /**
// *
// * @Route("/{_locale}/informe/pdf/ameghino", name="ipa_informe_ameghino_pdf")
// *
// * @category function
// * @return string Código HTML del informe
// */
// public function pdfInformeAmeghinoAction(Request $request)
// {
//
// $miPdf = new utilesPDF();
// $miPdf->SetCreator(PDF_CREATOR);
// $miPdf->SetAuthor('Instituto Provincial del Agua Chubut');
// $miPdf->SetTitle('Informe Diario Hidroeléctrica Ameghino');
// $miPdf->SetSubject('Informe Diario');
// $miPdf->Image('bundles/web/images/isologo.png',240,10,33);
// $miPdf->line(15,23,280,23);
// // set auto page breaks
// $miPdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// // set default header data
// $miPdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
// $miPdf->SetHeaderMargin(PDF_MARGIN_HEADER);
// $miPdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//
// $miPdf->AddPage();
//
// $em = $this->getDoctrine()->getManager();
// $query = $em->getRepository('APDSaquitoInformesBundle:saquitoInforme')
// ->listExport(365);
// $html = $this->renderView('APDSaquitoInformesBundle:Informe:pdf_render.html.twig', array(
// 'informes' => $query
// ));
//
// $miPdf->WriteHTML( '<h1 align="center">Informe Diario Hidroeléctrica Ameghino</h1><p align="right"> (ultimos 365 días) </p>' . $html );
// $miPdf->Output('ipa_informe_ameghino.pdf', 'I');
// }
}