src/Controller/ContratoAdministrativoController.php line 234
<?php
namespace App\Controller;
use App\Entity\ContratoAdministrativo;
use App\Entity\ContratoAdministrativoDocumento;
use App\Form\ContratoAdministrativoType;
use App\Repository\ContratoAdministrativoRepository;
use App\Repository\ContratoAdministrativoDocumentoRepository;
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('/contrato/administrativo')]
class ContratoAdministrativoController extends AbstractController {
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/', name: 'app_contrato_administrativo_index', methods: ['GET'])]
public function index(ContratoAdministrativoRepository $contratoAdministrativoRepository, 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'] = $contratoAdministrativoRepository->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('contrato_administrativo/index.html.twig', [
'filtro' => $filter,
'lista' => $contratoAdministrativoRepository->filterGrid($filter),
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/new', name: 'app_contrato_administrativo_new', methods: ['GET', 'POST'])]
public function new(Request $request, ContratoAdministrativoRepository $contratoAdministrativoRepository): Response {
$nav['dados'] = 'show active';
$nav['arquivos'] = '';
$contratoAdministrativo = new ContratoAdministrativo();
$form = $this->createForm(ContratoAdministrativoType::class, $contratoAdministrativo);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$contratoAdministrativoRepository->save($contratoAdministrativo, true);
return $this->redirectToRoute('app_contrato_administrativo_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('contrato_administrativo/new.html.twig', [
'contrato_administrativo' => $contratoAdministrativo,
'form' => $form,
'nav' => $nav
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/arquivo/upload', name: 'app_contrato_administrativo_arquivo', methods: ['POST'])]
public function arquivo(Request $request, ContratoAdministrativoRepository $em, \App\Repository\ContratoAdministrativoDocumentoRepository $documento): Response {
$contrato = $em->find($request->get('contrato'));
if ($contrato) {
$originalFilename = $_FILES['arquivo']['name'];
$extensao = pathinfo($originalFilename);
$fileName = uniqid() . '.' . $extensao['extension'];
$entity = new ContratoAdministrativoDocumento();
$entity->setDescricao($request->get('descricao'));
$entity->setContratoAdministrativo($contrato);
$entity->setDocumento($fileName);
$uploaddir = 'arquivos/contrato_administrativo/';
$uploadfile = $uploaddir . $fileName;
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)) {
$documento->save($entity, true);
return $this->redirectToRoute('app_convenio_edit', ['id' => $contrato->getId(), 'nav' => 'arquivos'], Response::HTTP_SEE_OTHER);
} else {
echo "Não foi possível realizar o upload do arquivo";
die();
}
}
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}/edit', name: 'app_contrato_administrativo_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, ContratoAdministrativo $contratoAdministrativo, ContratoAdministrativoRepository $contratoAdministrativoRepository): Response {
$form = $this->createForm(ContratoAdministrativoType::class, $contratoAdministrativo);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$contratoAdministrativoRepository->save($contratoAdministrativo, true);
return $this->redirectToRoute('app_contrato_administrativo_index', [], Response::HTTP_SEE_OTHER);
}
if ($request->get('nav')) {
if ($request->get('nav') == 'arquivos') {
$nav['dados'] = '';
$nav['arquivos'] = 'show active';
}
} else {
$nav['dados'] = 'show active';
$nav['arquivos'] = '';
}
return $this->renderForm('contrato_administrativo/edit.html.twig', [
'contrato_administrativo' => $contratoAdministrativo,
'form' => $form,
'nav' => $nav,
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/delete/documento/{id}', name: 'app_convenio_documento_delete', methods: ['GET'])]
public function deleteDocumento(Request $request, ContratoAdministrativoDocumento $documento, ContratoAdministrativoDocumentoRepository $documentoRepository): Response {
if ($documento) {
$contrato = $documento->getContratoAdministrativo();
$documentoRepository->remove($documento, true);
$form = $this->createForm(ConvenioType::class, $contrato);
$form->handleRequest($request);
$nav['dados'] = '';
$nav['arquivos'] = 'show active';
$this->addFlash('success', "DOCUMENTO EXCLUIDO COM SUCESSO.");
}
return $this->renderForm('convenio/edit.html.twig', [
'convenio' => $contrato,
'form' => $form,
'nav' => $nav
]);
//return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/delete/{id}', name: 'app_contrato_administrativo_delete', methods: ['GET'])]
public function delete(Request $request,ContratoAdministrativoRepository $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_contrato_administrativo_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_contrato_administrativo_index', [], Response::HTTP_SEE_OTHER);
}
}else{
$this->addFlash('errors', "NÃO FOI POSSÍVEL LOCALIZAR O REGISTRO INFORMADO.");
return $this->redirectToRoute('app_contrato_administrativo_index', [], Response::HTTP_SEE_OTHER);
}
}
#[Route('/contratos', name: 'app_contrato_administrativo_publico', methods: ['GET'])]
public function contrato(ContratoAdministrativoRepository $contratoAdministrativoRepository, 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'] = $contratoAdministrativoRepository->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('contrato_administrativo/impressao_pdf.html.twig', [
'filtro' => $filter,
'lista' => $contratoAdministrativoRepository->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 = $contratoAdministrativoRepository->filterGrid($filter);
$titulos = array("Número", "Objeto", "Especie", "Exposição", "Valor", "Contratado", "Tipo");
$rows[] = implode(';', $titulos);
foreach ($lista as $value) {
$data = array($value->getAno(), $value->getNumero(), $value->getObjeto(), $value->getEspecie(), $value->getExposicacao(), $value->getValor(), $value->getContratado(), $value->getContratadoTipo());
$rows[] = implode(';', $data);
}
$content = implode("\n", $rows);
$response = new Response($content);
$response->headers->set('Content-Type', 'text/csv');
return $response;
} else {
return $this->render('contrato_administrativo/impressao.html.twig', [
'filtro' => $filter,
'lista' => $contratoAdministrativoRepository->filterGrid($filter),
]);
}
}
return $this->render('contrato_administrativo/contratos.html.twig', [
'filtro' => $filter,
'lista' => $contratoAdministrativoRepository->filterGrid($filter),
]);
}
#[Route('/ano', name: 'app_contrato_administrativo_publico_ano', methods: ['GET'])]
public function ano(ContratoAdministrativoRepository $contratoAdministrativoRepository, Request $request): Response {
$lista = $contratoAdministrativoRepository->getAnos();
return $this->render('contrato_administrativo/ano.html.twig', [
'itens' => $lista,
]);
}
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;
}
}
}
}