src/Controller/DepartamentoPessoalController.php line 62
<?php
namespace App\Controller;
use App\Entity\DepartamentoPessoal;
use App\Form\DepartamentoPessoalType;
use App\Repository\DepartamentoPessoalRepository;
use App\Repository\DepartamentoPessoalRepositoryView;
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 Dompdf\Dompdf;
#[Route('/departamento/pessoal')]
class DepartamentoPessoalController extends AbstractController
{
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/', name: 'app_departamento_pessoal_index', methods: ['GET'])]
public function index(DepartamentoPessoalRepositoryView $departamentoPessoalRepository,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'] = $departamentoPessoalRepository->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('departamento_pessoal/index.html.twig', [
'filtro' => $filter,
'pessoal' => $departamentoPessoalRepository->filterGrid($filter),
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/movimentacoes', name: 'app_departamento_pessoal_movimentacoes', methods: ['GET'])]
public function movimentacoes(DepartamentoPessoalRepository $departamentoPessoalRepository,Request $request): Response
{
$filter['codigo'] = $request->get('codigo') ?: '';
$lista = $departamentoPessoalRepository->findBy(array('codigo'=>$request->get('codigo')),array('data'=>'ASC'));
return $this->render('departamento_pessoal/index_movimentacoes.html.twig', [
'lista' => $lista,
]);
}
#[Route('/relatorio', name: 'app_departamento_pessoal_relatorio', methods: ['GET'])]
public function relatorio(DepartamentoPessoalRepositoryView $departamentoPessoalRepository, 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'] = $departamentoPessoalRepository->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('departamento_pessoal/impressao_pdf.html.twig', [
'filtro' => $filter,
'lista' => $departamentoPessoalRepository->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 =$departamentoPessoalRepository->filterGrid($filter);
$titulos = array("Nome","Matrícula","Cargo","Carga horária","Atribuição","Ativo");
$rows[] = implode(';', $titulos);
foreach ($lista as $value) {
$data = array($value->getNome(), $value->getMatricula() , $value->getCargo(), $value->getCargaHoraria(),$value->getAtribuicao(),$value->getAtivo());
$rows[] = implode(';', $data);
}
$content = implode("\n", $rows);
$response = new Response($content);
$response->headers->set('Content-Type', 'text/csv');
return $response;
}else{
return $this->render('departamento_pessoal/impressao.html.twig', [
'filtro' => $filter,
'lista' => $departamentoPessoalRepository->filterGrid($filter),
]);
}
}
return $this->render('departamento_pessoal/departamento_pessoal.html.twig', [
'filtro' => $filter,
'lista' => $departamentoPessoalRepository->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;
}
}
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/new', name: 'app_departamento_pessoal_new', methods: ['GET', 'POST'])]
public function new(Request $request, DepartamentoPessoalRepository $departamentoPessoalRepository): Response
{
$departamentoPessoal = new DepartamentoPessoal();
$form = $this->createForm(DepartamentoPessoalType::class, $departamentoPessoal);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$departamentoPessoalRepository->save($departamentoPessoal, true);
return $this->redirectToRoute('app_departamento_pessoal_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('departamento_pessoal/new.html.twig', [
'departamento_pessoal' => $departamentoPessoal,
'form' => $form,
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}', name: 'app_departamento_pessoal_show', methods: ['GET'])]
public function show(DepartamentoPessoal $departamentoPessoal): Response
{
return $this->render('departamento_pessoal/show.html.twig', [
'departamento_pessoal' => $departamentoPessoal,
]);
}
#[Route('/relatorio/movimentacao/', name: 'app_departamento_pessoal_movimentacao', methods: ['GET'])]
public function movimentacao(Request $request, DepartamentoPessoalRepository $departamentoPessoalRepository): Response
{
$lista = $departamentoPessoalRepository->findBy(array('codigo'=>$request->get('codigo')),array('data'=>'ASC'));
return $this->render('departamento_pessoal/impressao_movimentacao.html.twig', [
'lista' => $lista
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}/edit', name: 'app_departamento_pessoal_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, DepartamentoPessoal $departamentoPessoal, DepartamentoPessoalRepository $departamentoPessoalRepository): Response
{
$form = $this->createForm(DepartamentoPessoalType::class, $departamentoPessoal);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$departamentoPessoalRepository->save($departamentoPessoal, true);
return $this->redirectToRoute('app_departamento_pessoal_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('departamento_pessoal/edit.html.twig', [
'departamento_pessoal' => $departamentoPessoal,
'form' => $form,
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}', name: 'app_departamento_pessoal_delete', methods: ['POST'])]
public function delete(Request $request, DepartamentoPessoal $departamentoPessoal, DepartamentoPessoalRepository $departamentoPessoalRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$departamentoPessoal->getId(), $request->request->get('_token'))) {
$departamentoPessoalRepository->remove($departamentoPessoal, true);
}
return $this->redirectToRoute('app_departamento_pessoal_index', [], Response::HTTP_SEE_OTHER);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/importar/dados', name: 'app_departamento_pessoal_inport', methods: ['GET'])]
public function import(Request $request, DepartamentoPessoalRepository $departamentoPessoal): Response {
// if($departamentoPessoal->findOneBy(array('mes'=>$request->get('mes'),$request->get('ano'))) != NULL){
// $this->addFlash('errors', "O MÊS DE " . $request->get('mes') . " DO ANO $request->get('ano') JÁ FOI IMPORTADO ANTERIORMENTE.");
// return $this->redirectToRoute('app_conta_bancaria_index', [], Response::HTTP_SEE_OTHER);
// }
$url = "http://143.255.241.145:8000/api/employees/moviments?institution=1&month=".$request->get('mes')."&year=".$request->get('ano');
$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);
$contador = 0;
if (is_array($lista)) {
foreach ($lista as $item) {
if((($item['mes'] == ltrim(substr($item['admissao'],5,2),0)) and ($item['ano'] == substr($item['admissao'],0,4))) or (($item['mes'] == ltrim(substr($item['exonerado'],5,2),0)) and ($item['ano'] == substr($item['exonerado'],0,4))) ){
$contador++;
$pessoa = new DepartamentoPessoal();
$pessoa->setAdministracao($item["administracao"]);
$pessoa->setNome($item['nome']);
$pessoa->setCodigo($item['id']);
$pessoa->setMatricula($item['matricula']);
$pessoa->setCargo($item['cargo_funcao']);
$pessoa->setVinculo($item['vinculo']);
$pessoa->setCargaHoraria($item['carga_horaria']);
$pessoa->setLotacao($item['lotacao']);
$pessoa->setCedido($item['cedido']);
$pessoa->setJustificativa($item['justificativa']);
if ($item['mes'] == ltrim(substr($item['admissao'],5,2),0)){
$pessoa->setTipo(1);//GRAVA 1 PARA ADMISSÃO
$pessoa->setAtivo("A");
$pessoa->setData(date_create($item['admissao']));
}elseif($item['mes'] == ltrim(substr($item['exonerado'],5,2),0)){
$pessoa->setTipo(2);//GRAVA 2 PARA EXONERAÇÃO
$pessoa->setAtivo("D");
$pessoa->setData(date_create($item['exonerado']));
}
$departamentoPessoal->save($pessoa,false);
}
//$pessoa->setContratoEstagio($item['contratoEstagio']);
//$pessoa->setAposentado($item['aposentado']);
//$pessoa->setAtribuicao($item['atribuicao']);
//$pessoa->setFuncao($item['funcao']);
//$pessoa->setEspecieContratacao($item['especieContratacao']);
//$pessoa->setRegimeAposentadoria($item['regimeAposentadoria']);
// $pessoa->setLeiAtribuicao($item['leiAtribuicao']);
// $pessoa->setGraduacao($item['graduacao']);
// $pessoa->setLeiCargo($item['leiCargo']);
}
$departamentoPessoal->flush();
}
if($contador == 0){
$this->addFlash('warning', "NENHUM REGISTRO FOI IMPORTADO.");
}else{
$departamentoPessoal->flush();
$this->addFlash('success', "OS REGISTROS FORAM IMPORTADOS COM SUCESSO.");
}
return $this->redirectToRoute('app_departamento_pessoal_index', [], Response::HTTP_SEE_OTHER);
}
}