src/Controller/PatrimonioController.php line 42
<?php
namespace App\Controller;
use App\Entity\Patrimonio;
use App\Form\PatrimonioType;
use App\Repository\PatrimonioRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
#[Route('/patrimonio')]
class PatrimonioController extends AbstractController
{
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/', name: 'app_patrimonio_index', methods: ['GET'])]
public function index(PatrimonioRepository $patrimonioRepository,Request $request): Response
{
$filter['tipo'] = $request->get('tipo') ?: '';
$filter['descricao'] = $request->get('descricao') ?: '';
$filter['pagina'] = $request->get('pagina') ?: 1;
$filter['anterior'] = $this->verifica('anterior', (1 - $filter['pagina']));
$filter['primeira'] = 1;
$filter['total_registros'] = $patrimonioRepository->filterGridTotal($filter);
$filter['page'] = $request->get('page') ?: 10;
$filter['ultima'] = $this->verifica('ultima', $filter['total_registros'],$filter['page']);
$filter['proxima'] = $this->verifica('proxima', (1 + $filter['pagina']), $filter['ultima']);
$filter['dataInicial'] = '';
$filter['dataFinal'] = '';
return $this->render('patrimonio/index.html.twig', [
'filtro' => $filter,
'lista' => $patrimonioRepository->filterGrid($filter),
]);
}
#[Route('/publico', name: 'app_patrimonio_publico', methods: ['GET'])]
public function publico(PatrimonioRepository $patrimonioRepository, Request $request): Response {
$filter['tipo'] = $request->get('tipo') ?: '';
$filter['descricao'] = $request->get('descricao') ?: '';
$filter['pagina'] = $request->get('pagina') ?: 1;
$filter['anterior'] = $this->verifica('anterior', (1 - $filter['pagina']));
$filter['primeira'] = 1;
$filter['total_registros'] = $patrimonioRepository->filterGridTotal($filter);
$filter['page'] = $request->get('page') ?: 10;
$filter['ultima'] = $this->verifica('ultima', $filter['total_registros'],$filter['page']);
$filter['proxima'] = $this->verifica('proxima', (1 + $filter['pagina']), $filter['ultima']);
$filter['dataInicial'] = '';
$filter['dataFinal'] = '';
if ($request->get('impressao')) {
$filter['page'] = 'all';
if ($request->get('pdf')) {
$html = $this->renderView('patrimonio/patrimonio_pdf.html.twig', [
'filtro' => $filter,
'lista' => $patrimonioRepository->filterGrid($filter),
]);
$dompdf = new Dompdf();
$dompdf->setPaper('A4', 'landscape');
$dompdf->set_option("isPhpEnabled", true);
$options = $dompdf->getOptions();
$options->setDefaultFont('Courier');
$dompdf->setOptions($options);
$dompdf->loadHtml($html);
$dompdf->render();
return new Response(
$dompdf->stream('resume', ["Attachment" => false]),
Response::HTTP_OK,
['Content-Type' => 'application/pdf']
);
}elseif($request->get('excel')){
$lista =$patrimonioRepository->filterGrid($filter);
$titulos = array("Data Aquisição","Origem","Secretaria","Descrição","Patrimônio","Situacao","Localização", "Local Enviado","Justificativa","Valor","Proprietário","Número");
$rows[] = implode(';', $titulos);
foreach ($lista as $value) {
$data = array($value->getDataAquisicao()->format("d/m/Y"), $value->getOrigem() , $value->getSecretaria(), $value->getDescricao(),$value->getPatrimonio(),$value->getSituacao(),$value->getSituacao(), $value->getLocalEnviado(),$value->getJustificativa(),$value->getValor(),$value->getProprietario(),$value->getNumero());
$rows[] = implode(';', $data);
}
$content = implode("\n", $rows);
$response = new Response($content);
$response->headers->set('Content-Type', 'text/csv');
return $response;
}else{
return $this->render('patrimonio/impressao.html.twig', [
'filtro' => $filter,
'lista' => $patrimonioRepository->filterGrid($filter),
]);
}
}
return $this->render('patrimonio/patrimonio.html.twig', [
'filtro' => $filter,
'lista' => $patrimonioRepository->filterGrid($filter),
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/new', name: 'app_patrimonio_new', methods: ['GET', 'POST'])]
public function new(Request $request, PatrimonioRepository $patrimonioRepository): Response
{
$patrimonio = new Patrimonio();
$form = $this->createForm(PatrimonioType::class, $patrimonio);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$patrimonioRepository->save($patrimonio, true);
return $this->redirectToRoute('app_patrimonio_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('patrimonio/new.html.twig', [
'patrimonio' => $patrimonio,
'form' => $form,
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}/edit', name: 'app_patrimonio_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Patrimonio $patrimonio, PatrimonioRepository $patrimonioRepository): Response
{
$form = $this->createForm(PatrimonioType::class, $patrimonio);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$patrimonioRepository->save($patrimonio, true);
return $this->redirectToRoute('app_patrimonio_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('patrimonio/edit.html.twig', [
'patrimonio' => $patrimonio,
'form' => $form,
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}', name: 'app_patrimonio_delete', methods: ['POST'])]
public function delete(Request $request, Patrimonio $patrimonio, PatrimonioRepository $patrimonioRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$patrimonio->getId(), $request->request->get('_token'))) {
$patrimonioRepository->remove($patrimonio, true);
}
return $this->redirectToRoute('app_patrimonio_index', [], Response::HTTP_SEE_OTHER);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/importar/dados', name: 'app_patrimonio_inport', methods: ['POST'])]
public function import(Request $request, PatrimonioRepository $patrimonioRepository): Response {
//$ano = $request->get('ano');
$ultimoId = $patrimonioRepository->getUltimoId() ;
if($ultimoId == null){
$ultimoId = 0;
}else{
$ultimoId = $ultimoId[0]['codigo'];
}
$contador = 0;
$url = "http://143.255.241.145:8000/api/patrimonies?institution=1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$lista = json_decode(curl_exec($ch), true);
curl_close($ch);
if (is_array($lista)) {
foreach ($lista as $item) {
if($item['id'] > $ultimoId){
$contador++;
$patrimonio = new Patrimonio();
$patrimonio->setCodigo($item['id']);
$patrimonio->setDataAquisicao(date_create($item['data_aquisicao']));
$patrimonio->setDescricao($item['descricao']);
$patrimonio->setRegistro($item['registro']);
$patrimonio->setJustificativa($item['justificativa']);
$patrimonio->setLocalEnviado($item['local_envio']);
$patrimonio->setLocalizacao($item["localizacao"]);
$patrimonio->setNumero($item["numero"]);
$patrimonio->setOrigem($item["origem"]);
$patrimonio->setPatrimonio($item["patrimonio"]);
$patrimonio->setProprietario($item["proprietario"]);
$patrimonio->setSecretaria($item["secretaria"]);
$patrimonio->setSituacao($item["situacao"]);
$patrimonio->setValor($item["valor"]);
$patrimonioRepository->save($patrimonio, false);
}
}
}
$patrimonioRepository->flush();
if($contador == 0){
$this->addFlash('warning', "NENHUM REGISTRO FOI IMPORTADO.");
}else{
$this->addFlash('success', $contador . " REGISTROS FORAM IMPORTADOS COM SUCESSO.");
}
return $this->redirectToRoute('app_patrimonio_index', [], Response::HTTP_SEE_OTHER);
}
private function verifica($str, $pagina, $page = null) {
if ($str == "anterior") {
if ($pagina < 1) {
return 1;
}
}
if ($str == "proxima") {
if ($pagina > $page) {
return $page;
}
return $pagina;
}
if ($str == "ultima") {
if($page == "all"){
$page = $pagina;
}
$valor = intdiv($pagina, $page);
if (($pagina % $page) > 0) {
return ++$valor;
} else {
return $valor;
}
}
}
}