src/Controller/SubvencaoSocialEController.php line 72
<?php
namespace App\Controller;
use App\Entity\SubvencaoSocialE;
use App\Form\SubvencaoSocialEType;
use App\Repository\SubvencaoSocialERepository;
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;
use App\Entity\SubvencaoSocialEDocumento;
use App\Repository\SubvencaoSocialEDocumentoRepository;
use Dompdf\Dompdf;
#[Route('/subvencao')]
class SubvencaoSocialEController extends AbstractController {
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/arquivo/upload', name: 'app_subvencao_social_e_arquivo', methods: ['POST'])]
public function arquivo(Request $request, SubvencaoSocialERepository $em, SubvencaoSocialEDocumentoRepository $documento): Response {
$subvencao = $em->find($request->get('subvencao'));
if ($subvencao) {
$originalFilename = $_FILES['arquivo']['name'];
$extensao = pathinfo($originalFilename);
$fileName = uniqid() . '.' . $extensao['extension'];
$entity = new SubvencaoSocialEDocumento();
$entity->setDescricao($request->get('descricao'));
$entity->setSubvencao($subvencao);
$entity->setDocumento($fileName);
$uploaddir = 'arquivos/subvencao/';
$uploadfile = $uploaddir . $fileName;
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)) {
$documento->save($entity, true);
return $this->redirectToRoute('app_subvencao_social_e_edit', ['id' => $subvencao->getId(), 'arquivo' => 'insert'], Response::HTTP_SEE_OTHER);
} else {
echo "Não foi possível realizar o upload do arquivo";
die();
}
}
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/', name: 'app_subvencao_social_e_index', methods: ['GET'])]
public function index(SubvencaoSocialERepository $subvencaoSocialERepository, Request $request): Response {
$filter['tipo'] = $request->get('tipo') ?: '';
$filter['descricao'] = $request->get('descricao') ?: '';
$filter['dataInicial'] = $request->get('dataInicial') ?: '';
$filter['dataFinal'] = $request->get('dataFinal') ?: '';
$filter['pagina'] = $request->get('pagina') ?: 1;
$filter['page'] = $request->get('page') ?: 10;
$filter['anterior'] = $this->verifica('anterior', (1 - $filter['pagina']));
$filter['primeira'] = 1;
$filter['total_registros'] = $subvencaoSocialERepository->filterGridTotal($filter);
$filter['page'] = $request->get('page') ?: 10;
$filter['ultima'] = $this->verifica('ultima', $filter['total_registros'], 10);
$filter['proxima'] = $this->verifica('proxima', (1 + $filter['pagina']), $filter['ultima']);
return $this->render('subvencao_social_e/index.html.twig', [
'filtro' => $filter,
'subvencao_social_es' => $subvencaoSocialERepository->filterGrid($filter),
]);
}
#[Route('/ano', name: 'app_subvencao_social_e_ano', methods: ['GET'])]
public function subvencao_ano(SubvencaoSocialERepository $SubvencaoSocialERepository, Request $request): Response {
$lista = $SubvencaoSocialERepository->getAnos();
return $this->render('subvencao_social_e/ano.html.twig', [
'itens' => $lista,
]);
}
#[Route('/relatorio', name: 'app_subvencao_social_e_relatorio', methods: ['GET'])]
public function relatorio(SubvencaoSocialERepository $SubvencaoSocialERepository, Request $request): Response {
$filter['ano'] = $request->get('ano') ?: date('Y');
//$filter['mes'] = $request->get('mes') ?: date('m');
$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'] = $SubvencaoSocialERepository->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('subvencao_social_e/impressao_pdf.html.twig', [
'filtro' => $filter,
'lista' => $SubvencaoSocialERepository->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 = $SubvencaoSocialERepository->filterGrid($filter);
$titulos = array("Nome", "Convênio", "Justificativa", "Estimativa", "Período Inicial", "Período Final", "Valor Mensal", "Valor Total");
$rows[] = implode(';', $titulos);
foreach ($lista as $value) {
$data = array($value->getNome(), $value->getConvenio(), $value->getJustificativa(), $value->getEstimativa(), $value->getPeriodoInicial() ? $value->getPeriodoInicial()->format('d/m/Y') : null, $value->getPeriodoInicial() ? $value->getPeriodoFinal()->format('d/m/Y') : null, $value->getValorMensal(), $value->getValorTotal());
$rows[] = implode(';', $data);
}
$content = implode("\n", $rows);
$response = new Response($content);
$response->headers->set('Content-Type', 'text/csv');
return $response;
} else {
return $this->render('subvencao_social_e/impressao.html.twig', [
'filtro' => $filter,
'lista' => $SubvencaoSocialERepository->filterGrid($filter),
]);
}
}
return $this->render('subvencao_social_e/subvencao_social_e.html.twig', [
'filtro' => $filter,
'lista' => $SubvencaoSocialERepository->filterGrid($filter),
]);
}
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;
}
}
}
private function mesExtenso($value) {
switch ($value) {
case "01" : return "JANEIRO";
case "02" : return "FEVEREIRO";
case "03" : return "MARÇO";
case "04" : return "ABRIL";
case "05" : return "MAIO";
case "06" : return "JUNHO";
case "07" : return "JULHO";
case "08" : return "AGOSTO";
case "09" : return "SETEMBRO";
case "10" : return "OUTUBRO";
case "11" : return "NOVEMBRO";
case "12" : return "DEZEMBRO";
}
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/new', name: 'app_subvencao_social_e_new', methods: ['GET', 'POST'])]
public function new(Request $request, SubvencaoSocialERepository $subvencaoSocialERepository): Response {
$nav['dados'] = 'show active';
$nav['arquivos'] = '';
$subvencaoSocialE = new SubvencaoSocialE();
$form = $this->createForm(SubvencaoSocialEType::class, $subvencaoSocialE);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$subvencaoSocialE->setAno($subvencaoSocialE->getPeriodoInicial()->format('Y'));
$subvencaoSocialE->setMes($this->mesExtenso($subvencaoSocialE->getPeriodoInicial()->format('m')));
$subvencaoSocialERepository->save($subvencaoSocialE, true);
return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('subvencao_social_e/new.html.twig', [
'subvencao_social_e' => $subvencaoSocialE,
'form' => $form,
'nav' => $nav
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}', name: 'app_subvencao_social_e_show', methods: ['GET'])]
public function show(SubvencaoSocialE $subvencaoSocialE): Response {
return $this->render('subvencao_social_e/show.html.twig', [
'subvencao_social_e' => $subvencaoSocialE,
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}/edit', name: 'app_subvencao_social_e_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, SubvencaoSocialE $subvencaoSocialE, SubvencaoSocialERepository $subvencaoSocialERepository): Response {
$form = $this->createForm(SubvencaoSocialEType::class, $subvencaoSocialE);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$subvencaoSocialERepository->save($subvencaoSocialE, true);
return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
}
if ($request->get('arquivo')) {
$nav['dados'] = '';
$nav['arquivos'] = 'show active';
} else {
$nav['dados'] = 'show active';
$nav['arquivos'] = '';
}
return $this->renderForm('subvencao_social_e/edit.html.twig', [
'subvencao_social_e' => $subvencaoSocialE,
'form' => $form,
'nav' => $nav
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/delete/{id}', name: 'app_subvencao_social_e_delete', methods: ['GET'])]
public function delete(Request $request, SubvencaoSocialERepository $em): Response {
if ($entity = $em->find($request->get('id'))) {
try {
$em->remove($entity, true);
$this->addFlash('success', "REGISTRO EXCLUIDO COM SUCESSO.");
return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
} catch (\Exception $e) {
$this->addFlash('errors', "NÃO FOI POSSÍVEL EXCLUIR O REGISTRO. VERIFIQUE SE EXISTE ALGUM DOCUMENTO VINCULADO.");
return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
}
}else{
$this->addFlash('errors', "NÃO FOI POSSÍVEL LOCALIZAR O REGISTRO INFORMADO.");
return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
}
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/delete/documento/{id}', name: 'app_subvencao_social_e_documento_delete', methods: ['GET'])]
public function deleteDocumento(Request $request, SubvencaoSocialEDocumento $documento, SubvencaoSocialEDocumentoRepository $documentoRepository): Response {
if ($documento) {
$subvencao = $documento->getSubvencao();
$documentoRepository->remove($documento, true);
$form = $this->createForm(SubvencaoSocialEType::class, $subvencao);
$form->handleRequest($request);
$nav['dados'] = '';
$nav['arquivos'] = 'show active';
$this->addFlash('success', "DOCUMENTO EXCLUIDO COM SUCESSO.");
}
return $this->renderForm('subvencao_social_e/edit.html.twig', [
'subvencao_social_e' => $subvencao,
'form' => $form,
'nav' => $nav
]);
//return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
}
}