src/Controller/Admin/DashboardController.php line 4993
<?phpnamespace App\Controller\Admin;use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Aws\S3\S3Client;use Symfony\Component\Uid\Uuid;use Doctrine\Persistence\ManagerRegistry;use Symfony\Component\HttpFoundation\Request;use App\Entity\Caixa;use App\Entity\Documento;use App\Entity\Tipo;use App\Entity\Classificacao;use App\Entity\Cliente;use App\Entity\User;use App\Entity\Cx;use App\Entity\ClienteAll;use App\Entity\Registro;use App\Entity\Fluxo;use App\Entity\Etapa;use App\Entity\MessengerMessages;use Doctrine\ORM\EntityManagerInterface;use setasign\Fpdi\Tcpdf\Fpdi;use setasign\Fpdi\PdfReader;use propa\tcpdi\tcpdi;use Symfony\Component\Dotenv\Dotenv;use Symfony\Component\HttpFoundation\Session\SessionInterface;use Symfony\Component\String\Slugger\AsciiSlugger;use App\Form\UploadType;use PhpOffice\PhpSpreadsheet\IOFactory;use Symfony\Component\Mime\Email;use Symfony\Component\Mailer\MailerInterface;use Knp\Component\Pager\PaginatorInterface;use Dompdf\Dompdf;use Dompdf\Options;use Endroid\QrCode\Builder\Builder;use Endroid\QrCode\Encoding\Encoding;use Twig\Environment;use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Writer\Xlsx;use PhpOffice\PhpSpreadsheet\Shared\Date;use PhpOffice\PhpSpreadsheet\Style\Color;use PhpOffice\PhpSpreadsheet\Style\Fill;use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;use Endroid\QrCode\Writer\PngWriter;use App\Message\UploadMultipartMessage;use Symfony\Component\Messenger\MessageBusInterface;use Symfony\Component\HttpFoundation\JsonResponse;use DateTime;class DashboardController extends AbstractDashboardController{#[Route('/', name: 'inicial')]public function home(): Response{return $this->redirectToRoute('home');}#[Route('/login_sucess', name: 'login_sucess')]public function login_sucess(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager): Response{$user_logado = $this->getUser();$enabled = $user_logado->getEnabled();if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$ip_cliente = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];} else {$ip_cliente = $_SERVER['REMOTE_ADDR'];}if($enabled == false){$error ="Tentativa de login de usuário desativado";$user_logado_nome=$user_logado->getNome();$hoje = new \DateTimeImmutable('America/Sao_Paulo');$registro = new Registro();$registro->setOperacao($error);$registro->setUser($user_logado_nome);$registro->setData($hoje);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();return $this->redirectToRoute('app_logout');}$error ="Login Realizado";$user_logado_nome=$user_logado->getNome();$hoje = new \DateTimeImmutable('America/Sao_Paulo');$registro = new Registro();$registro->setOperacao($error);$registro->setUser($user_logado_nome);$registro->setData($hoje);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();return $this->redirectToRoute('home');}#[Route('/index/home', name: 'home')]public function inicial(PaginatorInterface $paginator,Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session, MailerInterface $mailer): Response{$user_logado = $this->getUser();$user_logado_id = $user_logado->getId();$cliente = $doctrine->getRepository(User::class)->findClientsByUserId($user_logado_id);$erro = '';$pagina = 'home';$p ='';$etapas = null;if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');$etapas = $doctrine->getRepository(Etapa::class)->findByUserAndUpdatedAt($user_logado);return $this->render('index/index6.html.twig', ['p'=>$p,'erro'=>$erro,'pagina' => $pagina,'etapas'=>$etapas,'cliente' => $cliente,'clienteId' => $clienteId]);}#[Route('/index/troca', name: 'troca')]public function troca(SessionInterface $session): Response{$session->remove('cliente_id');$session->invalidate();return $this->redirectToRoute('home');}#[Route('/index/export', name: 'export')]public function export(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session,MessageBusInterface $bus): Response{$pendingMessages = $entityManager->getRepository(MessengerMessages::class)->countPendingMessages();#dd($pendingMessages);$user_logado = $this->getUser();$user_logado_id = $user_logado->getId();$userId = $user_logado_id;$cliente = $doctrine->getRepository(User::class)->findClientsByUserId($user_logado_id);$dotenv = new Dotenv();$dotenv->load(__DIR__.'/.env');$hoje = new \DateTimeImmutable('America/Sao_Paulo');$hoje_formt=$hoje->format('Y-m-d') ;$doc = $entityManager->getRepository(Documento::class)->findByUserAndDate($user_logado_id, $hoje_formt);$dia_prod = 'de hoje';if(isset($_POST["date_perio"])){$startDate = $_POST["de"];$endDate = $_POST["ate"];$de = new \DateTimeImmutable($startDate);$ate = new \DateTimeImmutable($endDate);$de_formt=$de->format('d/m/Y') ;$ate_formt=$ate->format('d/m/Y') ;if($endDate != ""){$doc = $entityManager->getRepository(Documento::class)->findByUserAndDateRange($user_logado_id, $startDate, $endDate);$dia_prod = 'de '. $de_formt.' até '.$ate_formt;}if($endDate == ""){$doc = $entityManager->getRepository(Documento::class)->findByUserAndDate($user_logado_id, $startDate);$dia_prod = 'de '. $de_formt;}}if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');if ($clienteId == null ) {$caixas = "";$index_all ="";$documentos="";$cliente_session = "";$cliente_alls = "";} else {$index_all = $doctrine->getRepository(Tipo::class)->findBy(['cliente' => $clienteId]);$caixas = $entityManager->getRepository(Cliente::class)->findCaixasByClienteId($clienteId);$documentos = $doctrine->getRepository(Documento::class)->findBy(['tipo' => null ,'cliente' => $clienteId]);$cliente_session = $doctrine->getRepository(Cliente::class)->find($clienteId);$cliente_alls = $cliente_session->getClienteAll()->getId();}$erro = '';$ii=0;$pagina = 'export';$p = '';$link = '';$mx = 0;$xy = 0 ;$yz = 0 ;$ay = 0 ;$ky = 0 ;$pdf ='';$pagina_h4 ='Documento(s) para indexar';$nome_menu_ = '';$index_tipo='';$user = $this->getUser();$user_nome= $user->getEmail();$user_nome_name= $user->getNome();$pasta_user=$user_nome.'/';$arr = [];$arrr=0;$index_find = null;$dt = '';$clientS3 = new S3Client(['region' => 'sa-east-1','version' => 'latest','credentials' => ['key' => $_ENV['AWS_KEY'],'secret' => $_ENV['AWS_SECRET'],],]);if (isset($_POST["botao_export"])) {$caixaId = $_POST["caixas"];$caixa_id = $doctrine->getRepository(Caixa::class)->find($_POST["caixas"]);$cliente_id = $doctrine->getRepository(Cliente::class)->find($clienteId);$clientes_status= $cliente_id->getExtraFields();if(!$clientes_status){$clientes_status="ged";}$cliente_nome = $cliente_id->getNome();$clientes = $cliente_id->getId();$conteiner = $_POST["conteiner"];$cont_file = 0;$umlautString = $cliente_nome;$slugger = new AsciiSlugger();$teste = $slugger->slug($umlautString, $seperator = '-')->toString();$caminho = strtolower($teste . '/');if ($clientes == 14) { $caminho = 'cartorio-1deg-oficio-de-volta-redonda-rj/'; }if ($clientes == 83) { $caminho = 'casf-corretora-apolice-diversos/'; }if ($clientes == 35) { $caminho = 'pmecj-sp-saude/'; }if ($clientes == 107) { $caminho = 'pmecj-sp-execucao-fiscal/'; }if ($clientes == 4) { $caminho = 'cartorio-souza-reis-barra-mansa/'; }if ($clientes == 112) { $caminho = 'saae-cartao-de-ponto/'; }if ($clientes == 15) { $caminho = 'cbsi-dossies/'; }if ($clientes == 55) { $caminho = 'casf-gerep-contratos-de-prestadores-de-saude-pj/'; }if ($clientes == 13) { $caminho = 'casa-de-saude-santa-maria-c-s-s.M/'; }if ($clientes == 40) { $caminho = 'fasf-atas-e-diarios/'; }$filesTmp = $_FILES['file']['tmp_name'];$filesName = $_FILES['file']['name'];foreach ($filesTmp as $index => $file) {$uuid = Uuid::v4();$cont_file++;// nome original do arquivo$originalName = pathinfo($filesName[$index], PATHINFO_FILENAME);// sanitiza o nome (remove acentos, espaços estranhos etc.)$slugger = new AsciiSlugger();$safeName = strtolower($slugger->slug($originalName)->toString());// 🔹 Se cliente for local, usa nome originalif ($clientes_status === 'local') {$filename = $safeName . '.pdf';} else {if ($cliente_alls === 42) {$filename = $originalName . '.pdf';}else{$filename = $uuid . '.pdf';}}$tempDir = __DIR__ . '/../../var/uploads/messenger';if (!is_dir($tempDir)) {mkdir($tempDir, 0777, true);}$tempFilePath = $tempDir . '/' . $filename;move_uploaded_file($file, $tempFilePath);chmod($tempFilePath, 0644);if (!file_exists($tempFilePath) || filesize($tempFilePath) === 0) {throw new \RuntimeException('Falha ao gravar PDF temporário: ' . $tempFilePath);}// evita race condition de filesystemclearstatcache(true, $tempFilePath);$bus->dispatch(new UploadMultipartMessage($tempFilePath,$filename,$caminho,'',$caixaId,$clienteId,$userId,0,$conteiner,$clientes,$clientes_status,$safeName,$originalName,$cliente_alls));}$log = new Registro();$log->setOperacao('EXPORTOU ' . $cont_file . ' DOCUMENTO(S)');$log->setUser($user_nome_name);$log->setCliente($cliente_nome);$entityManager->persist($log);$entityManager->flush();return $this->redirectToRoute('export');}return $this->render('index/index.html.twig', ['documentos' => $documentos,'xy' => $xy,'yz' => $yz,'ay'=>$ay,'link' => $link,'pdf'=>$pdf,'p'=>$p,'erro'=>$erro,'index_all'=>$index_all,'index_tipo'=>$index_tipo,'ky'=>$ky,'pagina' => $pagina,'pagina_h4' =>$pagina_h4,'index_find'=>$index_find,'mx'=>$mx,'caixas' => $caixas,'user_logado' => $user_logado,'cliente' => $cliente,'cliente_session' => $cliente_session,'doc'=>$doc,'dia_prod' => $dia_prod]);}#[Route('/index/planilha', name: 'planilha')]public function planilha(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session): Response{$form = $this->createForm(UploadType::class);$user_logado= $this->getUser();$user_logado_id = $user_logado->getId();$user_nome_name= $user_logado->getNome();$cliente = $doctrine->getRepository(User::class)->findClientsByUserId($user_logado_id);$form->handleRequest($request);$dotenv = new Dotenv();$dotenv->load(__DIR__.'/.env');$erro = '';$excel = 0;$pagina = 'index';$p = '';$clientS3 = new S3Client(['region' => 'sa-east-1','version' => 'latest','credentials' => ['key' => $_ENV['AWS_KEY'],'secret' => $_ENV['AWS_SECRET'],],]);if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');if ($clienteId == null ) {$caixas = "";$index_all ="";$documentos="";$cliente_session = "";} else {$index_all = $doctrine->getRepository(Tipo::class)->findBy(['cliente' => $clienteId]);$caixas = $entityManager->getRepository(Cliente::class)->findCaixasByClienteId($clienteId);$documentos = $doctrine->getRepository(Documento::class)->findBy(['tipo' => null ,'cliente' => $clienteId]);$cliente_session = $doctrine->getRepository(Cliente::class)->find($clienteId);$cliente_nome= $cliente_session->getNome();}if ($form->isSubmitted() && $form->isValid()) {$list =[];$file = $form['file']->getData();$spreadsheet = IOFactory::load($file->getPathname());$sheetData = $spreadsheet->getActiveSheet()->toArray();foreach ($sheetData as $row) {$excel ++;$id_cx = null ;$selections = $_POST["selections"];$nome = array_search('0', $selections);$caixa = array_search('1', $selections);$assunto = array_search('2', $selections);$keywod = array_search('3', $selections);$data_documento = array_search('4', $selections);$data_vecimento = array_search('5', $selections);$descricao = array_search('6', $selections);if ($caixa != false ) {$numerosExcel = preg_replace('/\D/', '', $row[$caixa]);foreach ($caixas as $key) {$nome_cx = $key->getNome();$numerosCaixa = preg_replace('/\D/', '', $nome_cx);if ($numerosCaixa == $numerosExcel ) {$id_cx = $key->getId();}}if ($id_cx == null) {echo '<script>alert("ERRO NA LINHA '.$excel.' NÃO EXISTE ESSA CAIXA CADASTRADA")</script>';return $this->render('index/index2.html.twig', ['documentos' => $documentos,'p'=>$p,'erro'=>$erro,'index_all'=>$index_all,'pagina' => $pagina,'caixas' => $caixas,'user_logado' => $user_logado,'cliente' => $cliente,'cliente_session' => $cliente_session,'form' => $form->createView(),]);}}$yourEntity = new Documento();// Ajuste conforme necessário$yourEntity->setUser($user_logado);$yourEntity->setCliente($cliente_session);$yourEntity->setClassificacao($doctrine->getRepository(Classificacao::class)->find(1));$yourEntity->setTipo($doctrine->getRepository(Tipo::class)->find($_POST["tipo"]));$yourEntity->setNome($row[$nome]);if ($assunto != false ) {$yourEntity->setAssunto($row[$assunto]);}if ($caixa != false ) {$yourEntity->setCaixa($doctrine->getRepository(Caixa::class)->find($id_cx));}if ($keywod != false ) {$yourEntity->setKeywords($row[$keywod]);}if (!empty(trim($row[$data_documento])) && strtoupper(trim($row[$data_documento])) !== "NULL") {$yourEntity->setDataDocumento(new \DateTimeImmutable($row[$data_documento]));}#if (!empty(trim($row[$data_vecimento])) && strtoupper(trim($row[$data_vecimento])) !== "NULL") {# $yourEntity->setVencimentoDocumento(new \DateTimeImmutable($row[$data_vecimento]));#}if ($descricao != false ) {$yourEntity->setExtraFields($row[$descricao]);}$entityManager->persist($yourEntity);$entityManager->flush();$erro = "ok";}$log = new Registro();$log->setOperacao('PLANILHA EXPORTADA, '.$excel .' CADASTROS INSERIDOS.' );$log->setUser($user_nome_name);$log->setCliente($cliente_nome);$entityManager->persist($log);$entityManager->flush();$erro = "ok";if ($excel>1) {$p = 'PLANILHA EXPORTADA COM SUCESSO, '.$excel .' CADASTROS INSERIDOS , .' ;}if ($excel==1) {$p = 'PLANILHA EXPORTADA COM SUCESSO, '.$excel .' CADASTRO INSERIDO ,' ;}}return $this->render('index/index2.html.twig', ['documentos' => $documentos,'p'=>$p,'erro'=>$erro,'index_all'=>$index_all,'pagina' => $pagina,'caixas' => $caixas,'user_logado' => $user_logado,'cliente' => $cliente,'cliente_session' => $cliente_session,'form' => $form->createView(),]);}#[Route('/index/planilha/classificacao', name: 'planilha_classificacao')]public function planilha_classificacao(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session): Response{$form = $this->createForm(UploadType::class);$user_logado= $this->getUser();$user_logado_id = $user_logado->getId();$user_nome_name= $user_logado->getNome();$cliente = $doctrine->getRepository(User::class)->findClientsByUserId($user_logado_id);$form->handleRequest($request);$erro = '';$excel = 0;$pagina = 'index';$p = '';if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');if ($clienteId == null ) {$caixas = "";$cliente_session = "";} else {$cliente_session = $doctrine->getRepository(Cliente::class)->find($clienteId);$cliente_nome= $cliente_session->getNome();}if ($form->isSubmitted() && $form->isValid()) {$list =[];$file = $form['file']->getData();$spreadsheet = IOFactory::load($file->getPathname());$sheetData = $spreadsheet->getActiveSheet()->toArray();foreach ($sheetData as $row) {$excel ++;$id_cx = null ;$selections = $_POST["selections"];$nome = array_search('0', $selections);$fase_corrente = array_search('1', $selections);$fase_intermediaria = array_search('2', $selections);$destinacao_final = array_search('3', $selections);$observacoes = array_search('4', $selections);$descricao = array_search('5', $selections);if($row[$nome] != null){$yourEntity = new Classificacao();$yourEntity->setNome($row[$nome]);$yourEntity->setFaseCorrente($row[$fase_corrente]);$yourEntity->setFaseIntermediaria($row[$fase_intermediaria]);$yourEntity->setDestinacaoFinal($row[$destinacao_final]);$yourEntity->setObservacoes($row[$observacoes]);$yourEntity->setExtraFields($row[$descricao]);$yourEntity->setCliente($cliente_session);$entityManager->persist($yourEntity);$entityManager->flush();$erro = "ok";}}$log = new Registro();$log->setOperacao('PLANILHA EXPORTADA, '.$excel .' CADASTROS INSERIDOS.' );$log->setUser($user_nome_name);$log->setCliente($cliente_nome);$entityManager->persist($log);$entityManager->flush();$erro = "ok";if ($excel>1) {$p = 'PLANILHA EXPORTADA COM SUCESSO, '.$excel .' CADASTROS INSERIDOS , .' ;}if ($excel==1) {$p = 'PLANILHA EXPORTADA COM SUCESSO, '.$excel .' CADASTRO INSERIDO ,' ;}}return $this->render('index/index_classificao.html.twig', ['p'=>$p,'erro'=>$erro,'pagina' => $pagina,'user_logado' => $user_logado,'cliente' => $cliente,'cliente_session' => $cliente_session,'form' => $form->createView(),]);}#[Route('/index', name: 'index')]public function indexar(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager , SessionInterface $session): Response{$dotenv = new Dotenv();$dotenv->load(__DIR__.'/.env');$user_logado = $this->getUser();$form = $this->createForm(UploadType::class);$form->handleRequest($request);$user_logado_tipoAcesso = $user_logado->getTipoAcesso();$user_logado_nome = $user_logado->getNome();$user_logado_id = $user_logado->getId();$cliente = $doctrine->getRepository(User::class)->findClientsByUserId($user_logado_id);$hoje = new \DateTimeImmutable('America/Sao_Paulo');$hoje_formt=$hoje->format('Y-m-d');$doc = $entityManager->getRepository(Documento::class)->findByUserIndexAndDate($user_logado_nome, $hoje_formt);$dia_prod = 'de hoje';$permissao = [];$list_indexador = [];if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');if ($clienteId == null ) {$caixas = "";$index_all ="";$documentos="";$cliente_session = "";} else {$index_all = $doctrine->getRepository(Tipo::class)->findBy(['cliente' => $clienteId]);$caixas = $entityManager->getRepository(Cliente::class)->findCaixasByClienteId($clienteId);$documentos = $doctrine->getRepository(Documento::class)->findBy(['tipo' => null ,'cliente' => $clienteId]);$cliente_session = $doctrine->getRepository(Cliente::class)->find($clienteId);}if(isset($_POST["date_perio"])){$startDate = $_POST["de"];$endDate = $_POST["ate"];$de = new \DateTimeImmutable($startDate);$ate = new \DateTimeImmutable($endDate);$de_formt=$de->format('d/m/Y') ;$ate_formt=$ate->format('d/m/Y') ;if($endDate != ""){$doc = $entityManager->getRepository(Documento::class)->findByUserAndDateIndexRange($user_logado_nome, $startDate, $endDate);$dia_prod = 'de '. $de_formt.' até '.$ate_formt;}if($endDate == ""){$doc = $entityManager->getRepository(Documento::class)->findByUserIndexAndDate($user_logado_nome, $startDate);$dia_prod = 'de '. $de_formt;}}foreach ($user_logado_tipoAcesso["new"] as $value) {foreach ($index_all as $key) {if ( $key->getId() == $value) {$permissao[] = $value;}}}$documentos = $doctrine->getRepository(Documento::class)->findBy(['tipo' => null , 'cliente' => $clienteId]);$class = $doctrine->getRepository(Classificacao::class)->findBy(['cliente' => $clienteId]);$cliente_id = $doctrine->getRepository(Cliente::class)->findBy(['id' => $clienteId]);foreach ($cliente_id as $cliente_ids) {$cliente_nome= $cliente_ids->getNome();$clientes= $cliente_ids->getId();$umlautString =$cliente_nome;$slugger = new AsciiSlugger();$teste=$slugger->slug($umlautString, $seperator = '-')->toString();$caminho = strtolower ($teste.'/');if($clientes == 14){$caminho='cartorio-1deg-oficio-de-volta-redonda-rj/';}if($clientes == 83){$caminho='casf-corretora-apolice-diversos/';}if($clientes == 35){$caminho='pmecj-sp-saude/';}if($clientes == 107){$caminho='pmecj-sp-execucao-fiscal/';}if($clientes == 4){$caminho='cartorio-souza-reis-barra-mansa/';}if($clientes == 112){$caminho='saae-cartao-de-ponto/';}if($clientes == 15){$caminho='cbsi-dossies/';}if($clientes == 55){$caminho='casf-gerep-contratos-de-prestadores-de-saude-pj/';}if($clientes == 13){$caminho='casa-de-saude-santa-maria-c-s-s.M/';}}if ($clienteId == null ) {$caixas = "";} else {$caixas = $entityManager->getRepository(Cliente::class)->findCaixasByClienteId($clienteId);}$erro = '';$ii=0;$pagina = 'index';$p = '';$link = '';$mx = 0;$xy = 0 ;$yz = 0 ;$ay = 0 ;$ky = 0 ;$pdf ='';$pagina_h4 ='Documento(s) para indexar';$nome_menu_ = '';$index_tipo='';$uuid = Uuid::v4();$user = $this->getUser();$user_nome= $user->getEmail();$user_nome_name= $user->getNome();$pasta_user=$user_nome.'/';$arr = [];$arrr=0;$index_find = null;$dt = '';$clientS3 = new S3Client(['region' => 'sa-east-1','version' => 'latest','credentials' => ['key' => $_ENV['AWS_KEY'],'secret' => $_ENV['AWS_SECRET'],],]);if(isset($_POST["dt"])){$documentos = $doctrine->getRepository(Documento::class)->findBy(['tipo' => $_POST["dt"]]);$index_find = $doctrine->getRepository(Tipo::class)->find($_POST["dt"]);$pagina =$index_find->getNome();$pagina_h4 ='Documento(s) do tipo ( '.$pagina.' )';}if(isset($_POST["botao_index"])){$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id"]);$link = $pdf->getImage();$xy = 1 ;}if(isset($_POST["botao_doc"])){$yz = 0 ;$xy = 1 ;$ay = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["id_index"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["id_index"]);$index_tipo_tipo = $index_tipo->getNome();$link = $pdf->getImage();$fase=$_POST["fase"];$data = $_POST["data"];$cx = $_POST["caixas"];$classifica = $_POST["classifica"];$fase = $_POST["fase"];$desc = $_POST["desc"];$assunto = $_POST["assunto"];$chave = $_POST["chave"];$nome = $_POST["nome"];$conteiner = $_POST["conteiner"];$caixa_id = $doctrine->getRepository(Caixa::class)->find($cx);// Encontra todos os números na frasepreg_match_all('/\d+/', $fase, $matches);// $matches[0] agora contém todos os números encontrados na frase$numeros = array_map('intval', $matches[0]);// Exibe os números encontradosif ($clientes != 7) {if ($data != "") {if ($fase != "") {// Número inteiro que você deseja somar ao ano$numeroParaSomar = $numeros[0];// Extrair o ano da datalist($ano, $mes, $dia) = explode('-', $data);// Converter o ano para um número inteiro$ano = intval($ano);// Somar o número ao ano$data_vecimento = $ano + $numeroParaSomar.'-'.$mes.'-'. $dia;$pdf->setVencimentoDocumento(new \DateTimeImmutable($data_vecimento));}$pdf->setDataDocumento(new \DateTimeImmutable($data));}}if ($clientes == 7) {$pdf->setVencimentoDocumento(new \DateTimeImmutable($fase));$pdf->setDataDocumento(new \DateTimeImmutable($data));}$pdf->setAssunto($assunto);if ($classifica != "") {$classifica_id = $doctrine->getRepository(Classificacao::class)->find($classifica);$pdf->setClassificacao($classifica_id);}$pdf->setCaixa($caixa_id);$pdf->setExtraFields($desc);$pdf->setNome($nome);$pdf->setKeywords($chave);$pdf->setUserIndex($user_nome_name);$pdf->setConteiner($conteiner);$pdf->setIndexAt(new \DateTimeImmutable('America/Sao_Paulo'));$pdf->setTipo($index_tipo);$entityManager->flush();$id_pd = $pdf->getId();$log = new Registro();$log->setOperacao('Indexou o Documento com id '.$id_pd);$log->setUser($user_nome_name);$log->setCliente($cliente_nome);$entityManager->persist($log);$entityManager->flush();$erro = 'ok';$p = $index_tipo_tipo.' indexado com sucesso';}if(isset($_POST["botao_index_edit"])){$yz = 0 ;$xy = 1 ;$ay = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["id_index"]);$link = $pdf->getImage();}if(isset($_POST["botao_volta"])){$xy = 0 ;$yz = 0 ;}if(isset($_POST["index_button"])){$yz = 0 ;$xy = 1 ;$ay = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["index_button"]);$link = $pdf->getImage();}if(isset($_POST["botao_cancel"])){$yz = 0 ;$xy = 1 ;$ay = 0 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$link = $pdf->getImage();}if(isset($_POST["delet"])){$ky = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["delet"]);$documentos = $doctrine->getRepository(Documento::class)->findBy(['id' => $_POST["delet"]]);if($pdf->getTipo()!= null){$index_find = $doctrine->getRepository(Tipo::class)->find($pdf->getTipo());$pagina =$index_find->getTipo();$pagina_h4 ='Documento(s) do tipo ( '.$index_find->getTipo().' )';}}if(isset($_POST["delet_cancel"])){$ky = 0 ;}if(isset($_POST["delet_sim"])){$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id"]);$id_pd = $pdf->getId();$entityManager->remove($pdf);$entityManager->flush();$log = new Registro();$log->setOperacao('Excluiu Documento com id '.$id_pd);$log->setUser($user_nome_name);$log->setCliente($cliente_nome);$entityManager->persist($log);$entityManager->flush();$erro = 'ok';$p = 'Documento com id '.$id_pd.' excluido com sucesso ';}if(isset($_POST["index_edit"])){$yz = 0 ;$xy = 1 ;$ay = 2 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["id_index"]);$link = $pdf->getImage();}$cmd = $clientS3->getCommand('GetObject', ['Bucket' => 'arquivosdoc','Key' => $caminho. $link,]);$req = $clientS3->createPresignedRequest($cmd, '+30 minutes');$all_Url = (string) $req->getUri();return $this->render('index/index1.html.twig', ['documentos' => $documentos,'xy' => $xy,'yz' => $yz,'ay'=>$ay,'link' => $link,'pdf'=>$pdf,'p'=>$p,'erro'=>$erro,'index_all'=>$index_all,'index_tipo'=>$index_tipo,'ky'=>$ky,'pagina' => $pagina,'pagina_h4' =>$pagina_h4,'index_find'=>$index_find,'mx'=>$mx,'caixas' => $caixas,'class' => $class,'permissao'=>$permissao,'caminho' =>$caminho,'clientes' => $clientes,'doc'=>$doc,'dia_prod' => $dia_prod,'cliente_session' => $cliente_session,'all_Url'=>$all_Url]);}#[Route('/index/novo/fluxo', name: 'fluxo_novo')]public function fluxoNovo(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session, MailerInterface $mailer): Response{$user_logado = $this->getUser();$user_logado_nome = $user_logado->getNome();$user_logado_id = $user_logado->getId();$erro = '';$pagina = 'fluxo';$p ='';$cliente = $doctrine->getRepository(User::class)->findClientsByUserId($user_logado_id);if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');if ($clienteId == null ) {$cli = "";return $this->redirectToRoute('home');} else {$cli = $doctrine->getRepository(Cliente::class)->find($clienteId);}$query = $doctrine->getManager()->createQuery('SELECT uFROM App\Entity\User uJOIN u.clientes cWHERE c.id = :clientIdAND u.enabled = 1')->setParameter('clientId', $clienteId);$usuarios = $query->getArrayResult();if(isset($_POST["fluxo"])){$fluxo = new Fluxo();$nome = $cli->getNome();$fluxo->setNome($nome);$fluxo->setUser($user_logado);$fluxo->setCliente($cli);$fluxo->setObs($_POST["obs"]);$entityManager->persist($fluxo);$entityManager->flush();$id_fluxo = $fluxo->getId();$prazo = $_POST["prazo"];$user_1 = $_POST["user"];foreach ($user_1 as $users) {$etapa = new Etapa();$user = $doctrine->getRepository(User::class)->find($users);$mail = $user->getEmail();$etapa->setNome($_POST["etapa"]);$etapa->setOrdem(1);$etapa->setUser($user);$etapa->setFluxo($doctrine->getRepository(Fluxo::class)->find($id_fluxo));$etapa->setPrazo(new \DateTimeImmutable($prazo));$entityManager->persist($etapa);$entityManager->flush();/*$email = (new Email())->from('arquivosdoc@arquivosdoc.com.br')->to($mail)->subject('Fluxo de Trabalho')->html('<div style="text-align: center;"><h1 style="color:#1e4067;">Recebimento<br>Cliente: '.$nome.'<br>Prazo:'.$prazo.'<br>Enviado por: '.$user_logado_nome.'<br>Acesse sua pagina inicial no <a href="https://ged.arquivosdoc.com.br/login">ArquivosGED</a></h1><img src="cid:logo"><div>')->embed(fopen('C:/xampp8/htdocs/gedemail/public/img/icon.png', 'r'), 'logo', 'image/png');$mailer->send($email);*/}if(isset($_POST["user_2"])){$prazo_2 = $_POST["prazo_2"];$user_2 = $_POST["user_2"];foreach ($user_2 as $users2) {$etapa2 = new Etapa();$etapa2->setNome($_POST["etapa2"]);$etapa2->setOrdem(2);$etapa2->setUser($doctrine->getRepository(User::class)->find($users2));$etapa2->setFluxo($doctrine->getRepository(Fluxo::class)->find($id_fluxo));$etapa2->setPrazo(new \DateTimeImmutable($prazo_2));$entityManager->persist($etapa2);$entityManager->flush();}}if(isset($_POST["user_3"])){$user_3 = $_POST["user_3"];$prazo_3 = $_POST["prazo_3"];foreach ($user_3 as $users3) {$etapa3 = new Etapa();$etapa3->setNome($_POST["etapa3"]);$etapa3->setOrdem(3);$etapa3->setUser($doctrine->getRepository(User::class)->find($users3));$etapa3->setFluxo($doctrine->getRepository(Fluxo::class)->find($id_fluxo));$etapa3->setPrazo(new \DateTimeImmutable($prazo_3));$entityManager->persist($etapa3);$entityManager->flush();}}if(isset($_POST["user_4"])){$user_4 = $_POST["user_4"];$prazo_4 = $_POST["prazo_4"];foreach ($user_4 as $users4) {$etapa4 = new Etapa();$etapa4->setNome($_POST["etapa4"]);$etapa4->setOrdem(4);$etapa4->setUser($doctrine->getRepository(User::class)->find($users4));$etapa4->setFluxo($doctrine->getRepository(Fluxo::class)->find($id_fluxo));$etapa4->setPrazo(new \DateTimeImmutable($prazo_4));$entityManager->persist($etapa4);$entityManager->flush();}}if(isset($_POST["user_5"])){$user_5 = $_POST["user_5"];$prazo_5 = $_POST["prazo_5"];foreach ($user_5 as $users5) {$etapa5 = new Etapa();$etapa5->setNome($_POST["etapa5"]);$etapa5->setOrdem(5);$etapa5->setUser($doctrine->getRepository(User::class)->find($users5));$etapa5->setFluxo($doctrine->getRepository(Fluxo::class)->find($id_fluxo));$etapa5->setPrazo(new \DateTimeImmutable($prazo_5));$entityManager->persist($etapa5);$entityManager->flush();}}$erro = "ok";$p = 'FLUXO ENVIADO' ;}return $this->render('index/index4.html.twig', ['p'=>$p,'erro'=>$erro,'pagina' => $pagina,'usuarios' =>$usuarios,'cliente' => $cliente]);}#[Route('/index/fluxo', name: 'fluxo')]public function fluxo( PaginatorInterface $paginator,Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session, MailerInterface $mailer): Response{$user_logado = $this->getUser();$erro = '';$pagina = 'fluxo';$p ='';$registro = $doctrine->getRepository(Registro::class)->findAll();$a = 0;$clientS3 = new S3Client(['region' => 'sa-east-1','version' => 'latest','credentials' => ['key' => $_ENV['AWS_KEY'],'secret' => $_ENV['AWS_SECRET'],],]);if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');if($clienteId == null){return $this->redirectToRoute('home');}$fluxo = $doctrine->getRepository(Fluxo::class)->findBy(['cliente' => $clienteId],['id'=> 'DESC']);// Paginar os fluxos$fluxos = $paginator->paginate($fluxo, // O queryBuilder ou a query$request->query->getInt('page', 1), // A página atual, padrão é 12 // O número de itens por página);if (isset($_POST["excel"])) {$cx = null;$id_fluxo = $_POST["excel"];$fluxo_excel = $doctrine->getRepository(Fluxo::class)->find($id_fluxo);$nome_fluxo = $fluxo_excel->getNome();$fluxo_caixas = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($fluxo_excel->getId());// Cria uma nova planilha$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();$sheet->setTitle('CAIXA(S)');// Configura o cabeçalho$sheet->setCellValue('A1', 'ID');$sheet->setCellValue('B1', 'REPOSITOR');$sheet->setCellValue('C1', 'DATA DO ENVIO');// Estiliza o cabeçalho (fundo azul, texto branco e negrito)$headerStyle = ['font' => ['bold' => true,'color' => ['rgb' => 'FFFFFF'], // Texto branco],'fill' => ['fillType' => Fill::FILL_SOLID,'startColor' => ['rgb' => '095f99'], // Fundo azul],];$sheet->getStyle('A1:C1')->applyFromArray($headerStyle);// Preenche os dados$rowCount = 2;foreach ($fluxo_caixas as $caixas) {if($caixas->getCx() != null){$nome = $caixas->getNome();$cx = $caixas->getCx()->getNome();$data = $caixas->getCreatedAt();// Insere os valores$sheet->setCellValue('A' . $rowCount, $cx);$sheet->setCellValue('B' . $rowCount, $nome);// Converte a data para o formato Excelif ($data instanceof \DateTime) {$sheet->setCellValue('C' . $rowCount, Date::PHPToExcel($data));} else {$sheet->setCellValue('C' . $rowCount, $data); // Evita erro se não for DateTime}$rowCount++;}}// Formata a coluna C como data (exceto o cabeçalho)$sheet->getStyle('C2:C' . ($rowCount - 1))->getNumberFormat()->setFormatCode('dd/mm/yyyy');// Define largura automática das colunasforeach (range('A', 'C') as $col) {$sheet->getColumnDimension($col)->setAutoSize(true);}// Segunda aba - Outras informações (Exemplo)$sheet2 = $spreadsheet->createSheet(); // Cria uma nova aba$sheet2->setTitle('DOCUMENTO(S)'); // Renomeia a aba$sheet2->setCellValue('A1' , 'ID');$sheet2->setCellValue('B1' , 'NOME');$sheet2->setCellValue('C1' , 'REPOSITOR');$sheet2->setCellValue('D1' , 'TIPO');$sheet2->setCellValue('E1' , 'ASSUNTO');$sheet2->setCellValue('F1' , 'PALAVRA-CHAVE');$sheet2->setCellValue('G1' , 'DIGITALIZAÇÃO');$sheet2->setCellValue('H1' , 'QUEM DIGITALIZOU?');$sheet2->setCellValue('I1' , 'INDEXAÇÃO');$sheet2->setCellValue('J1' , 'QUEM INDEXOU?');$sheet2->setCellValue('K1' , 'IMAGEN(S)');$sheet2->getStyle('A1:K1')->applyFromArray($headerStyle);$rowCount = 2;foreach ($fluxo_caixas as $caixas) {$doc = $caixas->getDocumentos();foreach ($doc as $docs) {$tipo= null;$id = $docs->getId();$nome = $docs->getNome();$caixa = $docs->getCaixa()->getNome();if($docs->getTipo() != null){$tipo = $docs->getTipo()->getNome();}$qtd = $docs->getQtd();$assunto = $docs->getAssunto();$keywords = $docs->getKeywords();$user = $docs->getUser()->getNome();$data = $docs->getCreatedAt();$index = $docs->getIndexAt();$user_index = $docs->getUserIndex();$sheet2->setCellValue('A' . $rowCount,$id);$sheet2->setCellValue('B' . $rowCount,$nome);$sheet2->setCellValue('C' . $rowCount,$caixa);$sheet2->setCellValue('D' . $rowCount,$tipo);$sheet2->setCellValue('E' . $rowCount,$assunto);$sheet2->setCellValue('F' . $rowCount,$keywords);$sheet2->setCellValue('G' . $rowCount,$data);$sheet2->setCellValue('H' . $rowCount,$user);$sheet2->setCellValue('I' . $rowCount,$index);$sheet2->setCellValue('J' . $rowCount,$user_index);$sheet2->setCellValue('K' . $rowCount,$qtd);if ($data instanceof \DateTime) {$sheet2->setCellValue('G' . $rowCount, Date::PHPToExcel($data));} else {$sheet2->setCellValue('G' . $rowCount, $data); // Evita erro se não for DateTime}if ($data instanceof \DateTime) {$sheet2->setCellValue('I' . $rowCount, Date::PHPToExcel($index));} else {$sheet2->setCellValue('I' . $rowCount, $index); // Evita erro se não for DateTime}$rowCount++;}}$sheet2->getStyle('I2:I' . ($rowCount - 1))->getNumberFormat()->setFormatCode('dd/mm/yyyy');$sheet2->getStyle('G2:G' . ($rowCount - 1))->getNumberFormat()->setFormatCode('dd/mm/yyyy');foreach (range('A', 'K') as $col) {$sheet2->getColumnDimension($col)->setAutoSize(true);}// Gera o arquivo para download$writer = new Xlsx($spreadsheet);header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');header('Content-Disposition: attachment; filename="' . $nome_fluxo . '-FLUXO-' . $id_fluxo . '.xlsx"');header('Cache-Control: max-age=0');$writer->save('php://output');exit;}if (isset($_POST["pdf"])) {$id_fluxo = $_POST["pdf"];$fluxo_pdf = $doctrine->getRepository(Fluxo::class)->findWithAllRelations($id_fluxo);$nome_fluxo = $fluxo_pdf->getNome();$html = $this->render('index/pdf.html.twig', ['fluxo_pdf' => $fluxo_pdf,'registro' => $registro]);$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isPhpEnabled', true);$options->set('isRemoteEnabled', true);$dompdf = new Dompdf($options);$dompdf->loadHtml($html);$dompdf->setPaper('A4', 'portrait');// Renderiza o HTML para o PDF$dompdf->render();// Envia o PDF para o navegador para download$dompdf->stream("Relatório_Fluxo_".$id_fluxo."_".$nome_fluxo.".pdf", ["Attachment" => 0]); // 0 para exibir no navegador, 1 para download}if (isset($_POST["etiqueta"])) {try {// reforça limites (pode ajustar conforme necessário)ini_set('max_execution_time', 500);ini_set('memory_limit', '3512M');$id_fluxo = $_POST["etiqueta"];$fluxo_pdf = $doctrine->getRepository(Fluxo::class)->findWithAllRelations($id_fluxo);$cliente_id = $fluxo_pdf->getCliente()->getId();$cliente = $doctrine->getRepository(Cliente::class)->findWithRelations($cliente_id);$nome_fluxo = $fluxo_pdf->getNome();$clienteAll_fluxo = $cliente->getClienteAll()->getLogo();$cmd = $clientS3->getCommand('GetObject', ['Bucket' => 'arquivosdoc','Key' => 'LOGO_CLIENTES/'. $clienteAll_fluxo,]);$req = $clientS3->createPresignedRequest($cmd, '+30 minutes');$cliente_all_Url = (string) $req->getUri();$clienteAll_fluxo_id = $cliente->getClienteAll()->getId();$fluxo_caixas = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($fluxo_pdf->getId());if ($cliente_id == 139 or $cliente_id == 137){$html = '<!DOCTYPE html><html lang="pt-BR"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>FLUXO</title><style>* { margin: 0; padding: 0; font-family: Calibri, Arial, sans-serif; }body { text-transform: uppercase; }.filho { border: 2px solid black; width: 57.2mm; height: 100mm; display: inline-block; margin: 2px; position: relative;}h2 { text-align: center; font-size: 20px; padding: 5px; }h2 img{width: 250px; height: 250px;}h4 { text-align: center; font-size: 12px; padding: 10px; }h5 { text-align: center; font-size: 14px;}h6 { text-align: center; font-size: 14px; padding: 5px; }h5 img { text-align: center;max-height: 40px;width:auto;max-width: 40px}h6 img { text-align: center;margin:auto; max-height: 130px;width:auto;max-width: 130px}p { text-align: center; font-size: 8px; font-weight: bold;}.pai { position: relative; top: 11%; }hr { color: black; }.lis2{font-weight: bold;margin:5px;}.lis3 {position: absolute;bottom: 0;width: 100%;font-weight: bold;text-align: center;margin-bottom:5px;margin-top:5px;}.lis{margin-left:10px;font-weight: bold;}li{margin:5px;font-size: 12px}</style></head><body><div class="pai">';$count = 0;foreach ($fluxo_caixas as $caixa) {$count++;$documento_fluxo = $caixa->getDocumentos()->toArray();$html .= '<div class="filho"><h6><img src="'.$cliente_all_Url.'" class="img"></h6><hr><h2>' . htmlspecialchars($caixa->getNome()) . '</h2><hr>';$docs = [];if (!empty($documento_fluxo)) {foreach ($documento_fluxo as $doc) {if($doc->getTipo() != NULL ){if ($cliente_id != 122) {$docs[] = $doc->getTipo()->getNome();} else {$docs[] = $doc->getNome();}}}$docs = array_unique($docs);}$docs_class = [];if (!empty($documento_fluxo)) {foreach ($documento_fluxo as $doc) {if($doc->getClassificacao() != NULL ){$clss = $entityManager->getRepository(Classificacao::class)->findBy(['id' => $doc->getClassificacao()->getId()]);$class_nome = $clss[0]->getNome();$docs_class[] = $class_nome;}}$docs_class = array_unique($docs_class);}$docs_data = [];$docs_assunto=[];if (!empty($documento_fluxo)) {foreach ($documento_fluxo as $data) {if ($data->getNome() !== null) {$docs_data[] = $data->getNome();}if ($data->getAssunto() !== null) {$docs_assunto[] = $data->getAssunto();}}$docs_data = array_unique($docs_data);$docs_assunto = array_unique($docs_assunto);}if ($cliente_id == 139){$pl_numeros = [];$req_numeros = [];$req_ano = null;foreach ($docs_data as $doc) {if (preg_match('/^PL-(\d{1,3}(?:\.\d{3})*)$/', $doc, $m)) {$numeroLimpo = str_replace('.', '', $m[1]);$pl_numeros[] = (int)$numeroLimpo;}elseif (stripos($doc, 'REQUERIMENTO') !== false&& preg_match('/-(\d+)\.(\d{4})$/', $doc, $m)) {$req_numeros[] = (int)$m[1];$req_ano = $m[2];}}$menorNome = null;$maiorNome = null;$docs_faltantes = [];$tipoAtual = null;if (!empty($pl_numeros)) {sort($pl_numeros);$menor = min($pl_numeros);$maior = max($pl_numeros);$menorNome = 'PL ' . number_format($menor, 0, '', '.');$maiorNome = 'PL ' . number_format($maior, 0, '', '.');$esperado = range($menor, $maior);$faltantes = array_diff($esperado, $pl_numeros);foreach ($faltantes as $f) {$docs_faltantes[] = 'PL ' . number_format($f, 0, '', '.');}$tipoAtual = 'PL';}elseif (!empty($req_numeros)) {sort($req_numeros);$menor = min($req_numeros);$maior = max($req_numeros);$menorNome = str_pad($menor, 2, '0', STR_PAD_LEFT) . '.' . $req_ano;$maiorNome = str_pad($maior, 2, '0', STR_PAD_LEFT) . '.' . $req_ano;$esperado = range($menor, $maior);$faltantes = array_diff($esperado, $req_numeros);foreach ($faltantes as $f) {$docs_faltantes[] = str_pad($f, 2, '0', STR_PAD_LEFT) . '.' . $req_ano;}$tipoAtual = 'REQUERIMENTO';}$html .= '<h6>' . htmlspecialchars(implode(', ', $docs)) . '</h6><hr>';$html .= '<h6>Conteúdo:</h6>';$html .= '<div class="lis">';foreach ($docs_class as $classs_nome) {$html .= '<li>' . $classs_nome. '</li>';}$html .= '</div><br>';if ($menorNome !== null && $maiorNome !== null) {$html .= '<h6>'.$menorNome.' Até '.$maiorNome.'</h6>';}if($docs_faltantes != []){$html .= '<div class="lis2"><p>';$html .= 'Faltantes*</br>';$qtdFaltantes = count($docs_faltantes);if ($qtdFaltantes > 40) {$html .= '<span style="color:red; font-weight:bold;font-size: 8px">Existem ' . $qtdFaltantes . ($tipoAtual === 'PL' ? ' projetos de lei ' : ' requerimentos ') . 'faltantes.Conferir no inventário.</span>';} else {$html .= implode(' | ', $docs_faltantes);}$html .= '</p></div>';}}else{// Remove duplicados$docs_assunto = array_unique($docs_assunto);// Converte para DateTime$datasObj = array_map(function ($data) {return DateTime::createFromFormat('m/Y', $data);}, $docs_assunto);// Remove possíveis datas inválidas$datasObj = array_filter($datasObj);// Ordena por datausort($datasObj, function ($a, $b) {return $a <=> $b;});$resultado = [];if (count($datasObj) > 0) {$inicio = $datasObj[0];$anterior = $datasObj[0];for ($i = 1; $i < count($datasObj); $i++) {$atual = $datasObj[$i];$proximoEsperado = clone $anterior;$proximoEsperado->modify('+1 month');if ($atual->format('m/Y') !== $proximoEsperado->format('m/Y')) {if ($inicio->format('m/Y') === $anterior->format('m/Y')) {$resultado[] = $inicio->format('m/Y');} else {$resultado[] = $inicio->format('m/Y') . ' até ' . $anterior->format('m/Y');}$inicio = $atual;}$anterior = $atual;}// Fecha o último blocoif ($inicio->format('m/Y') === $anterior->format('m/Y')) {$resultado[] = $inicio->format('m/Y');} else {$resultado[] = $inicio->format('m/Y') . ' Até ' . $anterior->format('m/Y');}}$html .= '<h6>Conteúdo:</h6>';$html .= '<div class="lis">';foreach ($docs_class as $classs_nome) {$html .= '<li>' . $classs_nome. '</li>';}$len = count($resultado);if ($len <5 and $len >0) {$html .= '<br>';}foreach ($docs_data as $classs_nome) {$html .= '<h6>' . $classs_nome. '</h6>';}foreach ($resultado as $classs_nome) {if ($len >= 9) {$fontSize = 8;}elseif ($len <10 and $len >5) {$fontSize = 10;}elseif ($len <5 and $len >0) {$fontSize = 12;}else{$fontSize = 8;}$html .= '<p style="font-size: ' . $fontSize . 'px;">' . $classs_nome. '</p>';}$html .= '</div><br>';}$html .='<div class="lis3"><hr><p>ARQUIVOS GESTÃO DOCUMENTAL</p><h5><img src="https://index.arquivosdoc.com.br/img/logo_menu.png" class="img"></h5></div></div>';if ($count % 10 == 0) {$html .= '<div style="page-break-after: always;"></div>';}}$html .= '</div></body></html>';}if($clienteAll_fluxo_id != 17 and $clienteAll_fluxo_id != 40 and $cliente_id != 139 and $cliente_id != 137){// Construção do HTML com os QR Codes$html = '<!DOCTYPE html><html lang="pt-BR"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>FLUXO</title><style>* { margin: 0; padding: 0; font-family: Calibri, Arial, sans-serif; }body { text-transform: uppercase; }.filho { border: 2px solid black; width: 120mm; height: 170mm; display: inline-block; margin-left: 45px; }h2 { text-align: center; font-size: 36px; padding: 5px; }h2 img{width: 200px; height: 200px;}h4 { text-align: center; font-size: 12px; padding: 10px; }h5 { text-align: center; font-size: 22px; padding: 10px; }h6 { text-align: justify; font-size: 26px; padding: 5px; }h6 img { float: right; max-height: 70px;width:auto;max-width: 170px}p { text-align: justify; font-size: 14px; font-weight: bold; padding: 10px; }.pai { position: relative; top: 20%; }hr { color: black; }.lis{width:430px; height: 200px;margin:auto;font-weight: bold;}li{margin-left:10px;}</style></head><body><div class="pai">';$count = 0;foreach ($fluxo_caixas as $caixa) {$count++;$documento_fluxo = $caixa->getDocumentos()->toArray();// Gerar QR Code$qrCode = Builder::create()->writer(new PngWriter())->data("https://ged.arquivosdoc.com.br/info/caixa/" . $caixa->getId())->build();$qrCodeBase64 = base64_encode($qrCode->getString());$html .= '<div class="filho"><h2>' . htmlspecialchars($caixa->getNome()) . '</h2><hr><h6>Arquivos:<img src="'.$cliente_all_Url.'" class="img"></h6><p>' . htmlspecialchars($fluxo_pdf->getNome()) . '</p><hr><h6>Título:</h6>';$docs = [];if (!empty($documento_fluxo)) {foreach ($documento_fluxo as $doc) {if($doc->getTipo() != NULL ){if ($cliente_id != 122) {$docs[] = $doc->getTipo()->getNome();} else {$docs[] = $doc->getNome();}}}$docs = array_unique($docs);}$docs_class = [];if (!empty($documento_fluxo)) {foreach ($documento_fluxo as $doc) {if($doc->getClassificacao() != NULL ){$clss = $entityManager->getRepository(Classificacao::class)->findBy(['id' => $doc->getClassificacao()->getId()]);$class_nome = $clss[0]->getNome();$docs_class[] = $class_nome;}}$docs_class = array_unique($docs_class);}$html .= '<p>' . htmlspecialchars(implode(', ', $docs)) . '</p><hr><h6>Conteúdo:</h6>';if($clienteAll_fluxo_id == 41){$html .= '<div class="lis">';$len = count($docs_class);foreach ($docs_class as $classs_nome) {if ($len <= 9) {$fontSize = 16;}elseif ($len <= 11) {$fontSize = 14;}elseif ($len <= 13) {$fontSize = 12;}elseif ($len <= 16) {$fontSize = 10;}elseif ($len <= 18) {$fontSize = 9;}elseif ($len <= 21) {$fontSize =8;}elseif ($len <= 23) {$fontSize = 7;}else {$fontSize = 6;}$html .= '<li style="font-size: ' . $fontSize . 'px;">' . $classs_nome . '</li>';}$html .= '</div>';}else{$html .= '<h2><img src="data:image/png;base64,' . $qrCodeBase64 . '" alt="QR Code"></h2>';}$html .= '<hr><h4>ARQUIVOS GESTÃO DOCUMENTAL</h4><h5><img src="https://index.arquivosdoc.com.br/img/arquivos_mini.png" class="img"></h5><hr><h4>Etiqueta gerada automaticamente pelo ArquivosGED</h4></div>';if ($count % 2 == 0) {$html .= '<div style="page-break-after: always;"></div>';}}$html .= '</div></body></html>';}if($clienteAll_fluxo_id == 17 ){// Construção do HTML com os QR Codes$html = '<!DOCTYPE html><html lang="pt-BR"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>FLUXO</title><style>* { margin: 0; padding: 0; font-family: Calibri, sans-serif; }.filho { border: 2px solid black; width: 125mm; height: 170mm; display: inline-block; margin-left: 45px; }h2 { font-size: 36px; padding: 5px; }h2 img{width: 200px; height: 200px;}.img_footer{width: 60px; height: 60px;position:relative;top:20px}h4 { text-align: center; font-size: 12px; padding: 10px; }h5 { text-align: center; font-size: 22px; padding: 10px; }h6 { text-align: justify; font-size: 26px; padding: 5px; }h6 img { float: right; max-height: 77px;width:auto;max-width: 250px}p { text-align: justify; font-size: 18px; font-weight: bold; padding: 10px; }.pai { position: relative; top: 20%; }hr { color: black; }.rodape {position:relative;bottom:15px}</style></head><body><div class="pai">';$count = 0;$codigo = "";$info = "";$prazo = "";if($cliente_id == 113){$codigo = "23.182";$info = "PROCESSOS DIVERSOS";$prazo = "57 ANOS";}if($cliente_id == 114){$codigo = "23.11";$info = "PROCESSOS DE RECURSOS HUMANOS";$prazo = "100 ANOS";}foreach ($fluxo_caixas as $caixa) {$texto = $caixa->getNome();preg_match_all('/\d+/', $texto, $matches);if (count($matches[0]) >= 2) {$numero = str_pad($matches[0][0], 3, '0', STR_PAD_LEFT);$ano = substr($texto, strpos($texto, $matches[0][0]) + strlen($matches[0][0]));$ano = trim(str_replace('-', '', $ano));} else {echo "Formato inválido!";}$count++;$documento_fluxo = $caixa->getDocumentos()->toArray();// Gerar QR Code$qrCode = Builder::create()->writer(new PngWriter())->data("https://ged.arquivosdoc.com.br/info/caixa/" . $caixa->getId())->build();$qrCodeBase64 = base64_encode($qrCode->getString());$html .= '<div class="filho"><h2> Caixa nº '. htmlspecialchars($numero) . '</h2><hr><h6>ARQUIVO:<img src="'.$cliente_all_Url. '" class="img"></h6><p>SAAE VOLTA REDONDA-RJ</p><hr><h6>CÓDIGO TEMPORALIDADE:</h6><p>'.$codigo.'</p><hr><h6>TÍTULO:</h6>';$html .= '<p>' . htmlspecialchars('PROCESSOS ADMINISTRATIVOS') . '</p><hr><h6>INFORMAÇÕES:</h6><p>'.$info.'</p><hr><h6>PRAZO DE GUARDA:</h6><p>'.$prazo.'</p><hr><h6>DATA:</h6><p>'.$ano.'</p><hr><p class="rodape"> ARQUIVOS GESTÃO DOCUMENTAL <img src="https://index.arquivosdoc.com.br/img/arquivos_mini.png" class="img_footer"></p></div>';if ($count % 2 == 0) {$html .= '<div style="page-break-after: always;"></div>';}}$html .= '</div></body></html>';}if($clienteAll_fluxo_id == 40 ){$documento_all_sebrae = $doctrine->getRepository(Documento::class)->findBy(['cliente' => $cliente_id], // filtros['id' => 'DESC'], // ordenação (opcional)100, // LIMIT0 // OFFSET);$html = '<!DOCTYPE html><html lang="pt-BR"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>FLUXO</title><style>* { margin: 0; padding: 0; font-family: Calibri, Arial, sans-serif; }body { text-transform: uppercase; }.filho { border: 2px solid black; width: 120mm; height: 160mm; display: inline-block; margin-left: 20px;padding:10px;}h2 { text-align: center; font-size: 36px; padding: 5px; }h2 img{width: 200px; height: 200px;}h4 { text-align: center; font-size: 12px; padding: 10px; }h5 { text-align: center; font-size: 22px; padding: 10px; }h6 { text-align: justify; font-size: 26px; padding: 5px; }}p { text-align: justify; font-size: 18px; font-weight: bold; padding: 10px; }.pai { position: relative; top: 20%;text-align:center; }hr { color: black; }.linha {margin-bottom: 1mm;font-size: 10pt;}.box-label {background: #f1f1f1;border: 1px solid black;padding: 1mm;font-size: 8pt;text-align: center;margin-top: 1mm;}.box-value {text-align: center;font-size: 10pt;margin: 2mm 0 2mm 0;}.box-value_conteudo {margin: 2mm 0 2mm 0;text-align: justify;}img{width: 120px;height:80px;margin: 2mm 0 2mm 0;}.titulo{margin: 2mm 0 2mm 0;font-size: 10pt;}.bloco-conteudo {position: relative;height: 100%;}.hr-fixo {position: absolute;bottom: 0;left: 0;width: 100%;margin: 0 0 0 0;}</style></head><body><div class="pai">';$count = 0;foreach ($documento_all_sebrae as $caixa) {$count++;$conteudo = htmlspecialchars(str_replace('?', '', $caixa->getExtraFields()));$tamanho = strlen($conteudo);$dates="";if ($tamanho <= 300) {$fontSize = '8pt';} elseif ($tamanho <= 600) {$fontSize = '7pt';} elseif ($tamanho <= 900) {$fontSize = '6pt';} else {$fontSize = '4pt';}if($caixa->getDataDocumento()){$dates=$caixa->getDataDocumento()->format('d/m/Y');}$html .='<div class="filho"><div class="bloco-conteudo"><img src="'.$cliente_all_Url.'" class="img"></h6><div class="titulo">ARQUIVO INATIVO</div><br><div class="linha">CAIXA Nº: _______________</div><div class="box-label">ÁREA/SIGLA:</div><div class="box-value">'. htmlspecialchars($caixa->getAssunto()) .'</div><div class="box-label">RESPONSÁVEL:</div><div class="box-value">'. htmlspecialchars($caixa->getConteiner()) .'</div><div class="box-label">DATA 1º ENVIO:</div><div class="box-value">'. htmlspecialchars($dates) .'</div><div class="box-label">Conteúdo</div><div class="box-value_conteudo" style="font-size: '. $fontSize .'">'. $conteudo .'</div><div class="hr-fixo"><hr><div>CXRBM:'. htmlspecialchars($caixa->getNome()) .'</div></div></div></div>';$docs = [];if ($count % 2 == 0) {$html .= '<div style="page-break-after: always;"></div>';}}$html .= '</div></body></html>';}// Configurar o Dompdf$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isPhpEnabled', true);$options->set('isRemoteEnabled', true);$dompdf = new Dompdf($options);$dompdf->loadHtml($html);$dompdf->setPaper('A4', 'landscape');// LIMPA TODOS OS BUFFERS ANTES DE RENDERIZARwhile (ob_get_level()) {ob_end_clean();}// Tenta renderizar e, em vez de stream() direto, grava em arquivo temporário e enviatry {$dompdf->render();} catch (Throwable $e) {// registra o erro e lança para cair no catch externoerror_log('Dompdf render failed: ' . $e->getMessage());throw $e;}// Gera arquivo temporário seguro$tempFile = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'etiqueta_fluxo_' . $id_fluxo . '_' . uniqid() . '.pdf';$output = $dompdf->output();if (file_put_contents($tempFile, $output) === false) {throw new Exception('Falha ao escrever arquivo temporário do PDF.');}// Força headers corretos para download/visualizaçãoheader('Content-Type: application/pdf');// Se quiser forçar download use attachment; se quiser abrir no browser use inlineheader('Content-Disposition: inline; filename="Etiqueta_Fluxo_' . preg_replace('/[^A-Za-z0-9_\-\.]/', '_', $id_fluxo . '_' . $nome_fluxo) . '.pdf"');header('Content-Length: ' . filesize($tempFile));header('Cache-Control: private, max-age=0, must-revalidate');// Envia o arquivo binário ao navegadorreadfile($tempFile);// Remove o arquivo temporário com segurança@unlink($tempFile);// finaliza execuçãoexit;} catch (Exception $e) {// Loga para diagnóstico e mostra mensagem amigávelerror_log('Erro ao gerar o PDF: ' . $e->getMessage());echo 'Erro ao gerar o PDF: ' . htmlspecialchars($e->getMessage());}}if (isset($_POST["qrcode"])) {$id_fluxo = $_POST["qrcode"];$fluxo_qrcode = $doctrine->getRepository(Fluxo::class)->findWithAllRelations($_POST["qrcode"]);$nome_fluxo = $fluxo_qrcode->getNome();$fluxo_caixas_qrcode = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($fluxo_qrcode->getId());$clienteAll_id = $fluxo_qrcode->getCliente()->getId();if ($fluxo_caixas_qrcode != null ) {$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isPhpEnabled', true);$dompdf = new Dompdf($options);$html = '<html><head><style>@page {margin: 35px 18.9px 0px 18.9px;size: 210mm 297mm; /* Ajuste de tamanho do papel */}body {margin: 0;padding: 0;}.qr-item {border: 2px dotted #000;text-align: center;width: 32.27mm;height: 34.9mm;display: inline-block;}.qr-item img {width: 115px;height: 112px;}.qr-title {font-size: 16px;font-weight: bold;}.leo {display: flex;flex-wrap: wrap;}</style></head><body>';$count = 0; // Contador de QR Codesforeach ($fluxo_caixas_qrcode as $cx) {$id_cx_ultimo = $cx->getCx();if ($id_cx_ultimo !== null) {$nome = $id_cx_ultimo->getNome();// Gerar QR Code com imagem no centro$result = Builder::create()->writer(new PngWriter())->writerOptions([])->data('https://logistica.arquivosdoc.com.br/'.$clienteAll_id.'/'.$nome)->encoding(new Encoding('UTF-8'))->size(500)->margin(5)->logoPath(__DIR__ . '/logo.png') // Caminho do logo central->build();// Salvar QR Code como arquivo temporário$tempFile = tempnam(sys_get_temp_dir(), 'qr_') . '.png';$result->saveToFile($tempFile);// Adicionar QR Code ao HTMLif ($count % 48 == 0) {$html .= '<div class="leo">';}$html .= '<div class="qr-item">';$html .= '<div class="qr-title">' . $nome . '</div>';$html .= '<img src="data:image/png;base64,' . base64_encode(file_get_contents($tempFile)) . '">';$html .= '</div>';$count++;// Fechar a div e inserir quebra de página a cada 63 QR Codesif ($count % 48 == 0) {$html .= '</div><div style="page-break-after: always;"></div>';}}}// Fechar qualquer div aberta sem completar 63 itensif ($count % 48 != 0) {$html .= '</div>';}$html .= '</body></html>';// Carregar o HTML e gerar o PDF$dompdf->loadHtml($html);$dompdf->setPaper([0, 0, 210, 297], 'portrait'); // Configurar o tamanho de página para A4$dompdf->render();$dompdf->stream("Qrcode_" . $id_fluxo . "_" . $nome_fluxo . ".pdf", ["Attachment" => 1 ]);} else {echo "<script>alert('ERROR, ESSE FLUXO NÃO TEM SETOR DE GUARDA!');</script>";}}if (isset($_POST["container"])) {$id_fluxo = $_POST["container"];$fluxo_caixas = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($id_fluxo);$fluxo_container = $doctrine->getRepository(Fluxo::class)->findWithAllRelations($id_fluxo);$clienteAll_id = $fluxo_container->getCliente()->getId();$containers = [];foreach ($fluxo_caixas as $caixa) {$documentos = $caixa->getDocumentos();foreach ($documentos as $documento) {$container = $documento->getConteiner();$caixaId = $documento->getCaixa()->getId();if ($container != null and $caixaId != null) {if (!isset($containers[$container])) {$containers[$container] = [];}if (!in_array($caixaId, $containers[$container])) {$containers[$container][] = $caixaId;}}}}$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isPhpEnabled', true);$dompdf = new Dompdf($options);$html = '<html><head><style>@page {margin: 35px 18.9px 0px 18.9px;size: 210mm 297mm; /* Ajuste de tamanho do papel */}body {margin: 0;padding: 0;}.qr-item {border: 2px dotted #000;width: 200mm;height: 80mm;margin-top:15px;text-align: center;}.img_qrcode h2{position:relative;top:25px;}.img_qrcode h3{position:relative;bottom:25px;font-size: 20px;}.img_qrcode{display: inline-block;margin: 5px 30px 5px 30px;}.qr-item img {width: 170px;height: 170px;}.qr-title {font-size: 70px;font-weight: bold;}.leo {display: flex;flex-wrap: wrap;}</style></head><body>';$count = 0; // Contador de QR Codes// Exibir resultadoforeach ($containers as $container => $caixas) {#echo "Container $container => " . implode(", ", $caixas) . "<br>";if ($count % 3 == 0) {$html .= '<div class="leo">';}$html .= '<div class="qr-item">';$html .= '<div class="qr-title">' . $container . '</div><hr>';foreach($caixas as $caixa ){$caix = $doctrine->getRepository(Caixa::class)->find($caixa);$caix_nome =$caix->getNome();$caix_cx =$caix->getCx()->getNome();$result = Builder::create()->writer(new PngWriter())->writerOptions([])->data('https://logistica.arquivosdoc.com.br/'.$clienteAll_id.'/'.$caix_cx)->encoding(new Encoding('UTF-8'))->size(350)->margin(5)->logoPath(__DIR__ . '/logo.png')->build();$tempFile = tempnam(sys_get_temp_dir(), 'qr_') . '.png';$result->saveToFile($tempFile);$html .= '<div class="img_qrcode"><h2>'.$caix_cx.'</h2><img src="data:image/png;base64,' . base64_encode(file_get_contents($tempFile)) . '"><h3>'.$caix_nome.'</h3></div>';}$html .= '</div>';$count++;if ($count % 3 == 0) {$html .= '</div><div style="page-break-after: always;"></div>';}}// Fechar qualquer div aberta sem completar 63 itensif ($count % 3 != 0) {$html .= '</div>';}$html .= '</body></html>';// Carregar o HTML e gerar o PDF$dompdf->loadHtml($html);$dompdf->setPaper([0, 0, 210, 297], 'portrait'); // Configurar o tamanho de página para A4$dompdf->render();$dompdf->stream("Qrcode.pdf", ["Attachment" => 1 ]);}if (isset($_POST["pasta"])) {// reforça limites (pode ajustar conforme necessário)ini_set('max_execution_time', 500);ini_set('memory_limit', '3512M');$id_fluxo = $_POST["pasta"];$fluxo_pdf = $doctrine->getRepository(Fluxo::class)->findWithAllRelations($id_fluxo);$cliente_id = $fluxo_pdf->getCliente()->getId();$cliente = $doctrine->getRepository(Cliente::class)->findWithRelations($cliente_id);$nome_fluxo = $fluxo_pdf->getNome();$clienteAll_fluxo = $cliente->getClienteAll()->getLogo();$cmd = $clientS3->getCommand('GetObject', ['Bucket' => 'arquivosdoc','Key' => 'LOGO_CLIENTES/'. $clienteAll_fluxo,]);$req = $clientS3->createPresignedRequest($cmd, '+30 minutes');$cliente_all_Url = (string) $req->getUri();$clienteAll_fluxo_id = $cliente->getClienteAll()->getId();$fluxo_caixas = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($fluxo_pdf->getId());$html = '<!DOCTYPE html><html lang="pt-BR"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>FLUXO</title><style>* { margin: 0; padding: 0; font-family: Calibri, Arial, sans-serif; }body { text-transform: uppercase; }.filho { border: 2px solid black; width: 50mm; height: 144mm; display: inline-block; margin: 2px; position: relative;}h2 { text-align: center; font-size: 20px; padding: 5px; }h2 img{width: 250px; height: 250px;}h4 { text-align: center; font-size: 12px; padding: 10px; }h5 { text-align: center; font-size: 14px;}h6 { text-align: center; font-size: 14px; padding: 5px; }h5 img { text-align: center;max-height: 40px;width:auto;max-width: 40px}h6 img { text-align: center;margin:auto; max-height: 130px;width:auto;max-width: 130px}p { text-align: center; font-size: 8px; font-weight: bold;}.pai { position: relative; top: 11%; }hr { color: black; }.lis2{font-weight: bold;}.lis3 {position: absolute;bottom: 0;width: 100%;font-weight: bold;text-align: center;margin-bottom:5px;margin-top:5px;}.lis{margin-left:10px;font-weight: bold;}li{font-size: 12px;margin-left:2px;}</style></head><body><div class="pai">';$count = 0;foreach ($fluxo_caixas as $caixa) {$count++;$documento_fluxo = $caixa->getDocumentos()->toArray();$html .= '<div class="filho"><h6><img src="'.$cliente_all_Url.'" class="img"></h6><hr><h2>' . htmlspecialchars($caixa->getNome()) . '</h2><hr>';$docs = [];if (!empty($documento_fluxo)) {foreach ($documento_fluxo as $doc) {if($doc->getTipo() != NULL ){if ($cliente_id != 122) {$docs[] = $doc->getTipo()->getNome();} else {$docs[] = $doc->getNome();}}}$docs = array_unique($docs);}$docs_class = [];if (!empty($documento_fluxo)) {foreach ($documento_fluxo as $doc) {if($doc->getClassificacao() != NULL ){$clss = $entityManager->getRepository(Classificacao::class)->findBy(['id' => $doc->getClassificacao()->getId()]);$class_nome = $clss[0]->getNome();$docs_class[] = $class_nome;}}$docs_class = array_unique($docs_class);}$docs_data = [];if (!empty($documento_fluxo)) {foreach ($documento_fluxo as $data) {if ($data->getAssunto() !== null) {$docs_data[] = $data->getAssunto();}}$docs_data = array_unique($docs_data);}$html .= '<h6>' . htmlspecialchars(implode(', ', $docs)) . '</h6><hr>';$html .= '<h6>Conteúdo:</h6>';$html .= '<div class="lis">';foreach ($docs_class as $classs_nome) {if($classs_nome == '028.11-COM ÔNUS'){$html .= '<li>SOLICITAÇÃO DE DIÁRIAS</li>';}$html .= '<li>' . $classs_nome. '</li>';}$html .= '</div><br>';$html .= '<h6>Descrição:</h6>';$html .= '<div class="lis">';$len = count($docs_data);foreach ($docs_data as $assunto_nome) {$qtd_letra = mb_strlen($assunto_nome, 'UTF-8');if ($len <= 20) {$fontSize = 12;}else{$fontSize = 9;}if($qtd_letra > 25 ){$fontSize = 10;}$html .= '<li style="font-size: ' . $fontSize . 'px;">' . $assunto_nome. '</li>';}$html .= '</div><br><div class="lis3"><hr><p>ARQUIVOS GESTÃO DOCUMENTAL</p><h5><img src="https://index.arquivosdoc.com.br/img/logo_menu.png" class="img"></h5></div></div>';#if ($count == 4) {# $html .= '<div style="page-break-after: always;"></div>';#}}$html .= '</div></body></html>';// Configurar o Dompdf$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isPhpEnabled', true);$options->set('isRemoteEnabled', true);$dompdf = new Dompdf($options);$dompdf->loadHtml($html);$dompdf->setPaper('A4', 'portrait');// LIMPA TODOS OS BUFFERS ANTES DE RENDERIZARwhile (ob_get_level()) {ob_end_clean();}// Tenta renderizar e, em vez de stream() direto, grava em arquivo temporário e enviatry {$dompdf->render();} catch (Throwable $e) {// registra o erro e lança para cair no catch externoerror_log('Dompdf render failed: ' . $e->getMessage());throw $e;}// Gera arquivo temporário seguro$tempFile = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'etiqueta_fluxo_' . $id_fluxo . '_' . uniqid() . '.pdf';$output = $dompdf->output();if (file_put_contents($tempFile, $output) === false) {throw new Exception('Falha ao escrever arquivo temporário do PDF.');}// Força headers corretos para download/visualizaçãoheader('Content-Type: application/pdf');// Se quiser forçar download use attachment; se quiser abrir no browser use inlineheader('Content-Disposition: inline; filename="Etiqueta_Fluxo_' . preg_replace('/[^A-Za-z0-9_\-\.]/', '_', $id_fluxo . '_' . $nome_fluxo) . '.pdf"');header('Content-Length: ' . filesize($tempFile));header('Cache-Control: private, max-age=0, must-revalidate');// Envia o arquivo binário ao navegadorreadfile($tempFile);// Remove o arquivo temporário com segurança@unlink($tempFile);// finaliza execuçãoexit;}return $this->render('index/index5.html.twig', ['fluxos' => $fluxos,'p'=>$p,'erro'=>$erro,'pagina' => $pagina,'a' => $a,]);}#[Route('/index/fluxo/diagrama/{id}', name: 'diagrama')]public function diagrama( PaginatorInterface $paginator,Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session, MailerInterface $mailer,$id): Response{$user_logado = $this->getUser();$erro = '';$pagina = 'fluxo';$p ='';$clienteId = $session->get('cliente_id');if($clienteId == null){return $this->redirectToRoute('home');}$fluxo_diagrama = $doctrine->getRepository(Fluxo::class)->find($id);$fluxo_caixas_diagrama = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($fluxo_diagrama->getId());return $this->render('index/diagrama.html.twig', ['p'=>$p,'erro'=>$erro,'pagina' => $pagina,"fluxo_diagrama" => $fluxo_diagrama,"fluxo_caixas_diagrama" => $fluxo_caixas_diagrama]);}#[Route('/index/recebimento/{id}', name: 'recebimento')]public function recebimento( PaginatorInterface $paginator,Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session, MailerInterface $mailer,$id): Response{$user_logado = $this->getUser();$user_nome = $user_logado->getNome();$ip_cliente = $_SERVER['REMOTE_ADDR'];$erro = '';$pagina = 'home';$p ='';$ged = "";$log = "";$caixa_manual = "";$caixa_auto = "";$cx_ultimo = $doctrine->getRepository(Cx::class)->findUltimo();$etapa = $doctrine->getRepository(Etapa::class)->findWithAllRelations($id);$fluxo = $etapa->getFluxo();$cliente_fluxo = $fluxo->getCliente()->getId();$clienteId = $session->get('cliente_id');$cliente = $doctrine->getRepository(Cliente::class)->findWithRelations($cliente_fluxo);$clienteAll = $cliente->getClienteAll();$cliente_nome = $cliente->getNome();$clienteAll_id = $clienteAll->getId();$count = 0; // Contador de QR Codes$id_cx_ultimo = 0;$date_hoje = new \DateTimeImmutable('America/Sao_Paulo');$caixas_setor = $entityManager->getRepository(Cliente::class)->findCaixasByClienteId($cliente_fluxo);$query = $entityManager->createQuery("SELECT c FROM App\Entity\Cx cLEFT JOIN c.caixas cxWHERE c.cliente = :clienteIdAND cx.id IS NULL");$query->setParameter('clienteId', $clienteAll_id);$cx_setor = $query->getResult();foreach ($cx_ultimo as $key_id) {$id_cx_ultimo = $key_id->getNome();}if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}if($clienteId == null){return $this->redirectToRoute('home');}if ($request->isMethod('POST')) {if(isset($_POST["tipo"])){$tp = $_POST["tipo"];if($tp =='caixa'){if($_POST["qtd_caixa"] != ""){if (isset($_POST["ged"]) || isset($_POST["log"])) {if (isset($_POST["ged"])) {$ged = "ok";if (isset($_POST["caixa_manual"]) || isset($_POST["caixa_auto"])) {if (isset($_POST["caixa_manual"])) {$caixa_manual = "ok";}if (isset($_POST["caixa_auto"])) {$caixa_auto = "ok";}}else{echo "<script>alert('ERROR , Selecione o modo de Identificação do ArquivosGED (Manual ou Automático)!');</script>";}}if (isset($_POST["log"])) {$log = "ok";}if ($ged == "ok" and $caixa_manual =="ok") {$caixa = $_POST["caixa"];$qtd_caixas = 0;$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isPhpEnabled', true);$dompdf = new Dompdf($options);$html = '<html><head><style>@page {margin: 35px 18.9px 0px 18.9px;size: 210mm 297mm; /* Ajuste de tamanho do papel */}body {margin: 0;padding: 0;}.qr-item {border: 2px dotted #000;text-align: center;width: 32.27mm;height: 34.9mm;display: inline-block;}.qr-item img {width: 115px;height: 112px;}.qr-title {font-size: 16px;font-weight: bold;}.leo {display: flex;flex-wrap: wrap;}</style></head><body>';foreach ($caixa as $key) {if ($key != "" ) {$qtd_caixas ++ ;$caixas = new Caixa();if ($ged == "ok" and $log =="ok") {$cx = new Cx();$id_cx_ultimo ++;$cx->setNome($id_cx_ultimo);$cx->setStatus(2);$cx->setTexto($key);$cx->setImage('ArquivosGED');$cx->setCliente($clienteAll);$entityManager->persist($cx);$entityManager->flush();$id_cx=$cx->getId();$caixas->setCx($entityManager->getRepository(Cx::class)->find($id_cx));// Gerar QR Code com imagem no centro$result = Builder::create()->writer(new PngWriter())->writerOptions([])->data('https://logistica.arquivosdoc.com.br/'.$clienteAll_id.'/'.$id_cx_ultimo)->encoding(new Encoding('UTF-8'))->size(500)->margin(5)->logoPath(__DIR__ . '/logo.png') // Caminho do logo central->build();// Salvar QR Code como arquivo temporário$tempFile = tempnam(sys_get_temp_dir(), 'qr_') . '.png';$result->saveToFile($tempFile);// Adicionar QR Code ao HTMLif ($count % 48 == 0) {$html .= '<div class="leo">';}// Adicionar QR Code ao HTML$html .= '<div class="qr-item">';$html .= '<div class="qr-title">' . $id_cx_ultimo . '</div>';$html .= '<img src="data:image/png;base64,' . base64_encode(file_get_contents($tempFile)) . '">';$html .= '</div>';$count++;// Fechar a div e inserir quebra de página a cada 63 QR Codesif ($count % 48 == 0) {$html .= '</div><div style="page-break-after: always;"></div>';}}$caixas->setNome($key);$caixas->addCliente($cliente);$caixas->setFluxo($fluxo);$entityManager->persist($caixas);$entityManager->flush();$id_caixa = $caixas->getId();}}if ($ged == "ok" and $log =="ok") {// Fechar qualquer div aberta sem completar 63 itensif ($count % 48 != 0) {$html .= '</div>';}$html .= '</div></body></html>';// Carregar o HTML e gerar o PDF$dompdf->loadHtml($html);$dompdf->setPaper([0, 0, 210, 297], 'portrait'); // Configurar o tamanho de página para A4$dompdf->render();#file_put_contents('sample1.pdf', $dompdf->output());$dompdf->stream('dompdf', array('Attachment' => 0));}$registro = new Registro();$registro->setOperacao('RECEBIMENTO DE '.$qtd_caixas. ' CAIXA(S)');$registro->setUser($user_nome);$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();$etapa->setRegistro($registro);$etapa->setObs($_POST["obs_caixa"]);$etapa->setUpdatedAt($date_hoje);$entityManager->flush();$erro = 'ok';$p = "Recbimento com sucesso";}if ($ged == "ok" and $caixa_auto =="ok") {if (isset($_POST["auto_ged"])) {$qtd_nome_caixa = $_POST["qtd_caixa"];$nome_caixa_parti = $_POST["auto_ged"];$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isPhpEnabled', true);$dompdf = new Dompdf($options);$html = '<html><head><style>@page {margin: 35px 18.9px 0px 18.9px;size: 210mm 297mm; /* Ajuste de tamanho do papel */}body {margin: 0;padding: 0;}.qr-item {border: 2px dotted #000;text-align: center;width: 32.27mm;height: 34.9mm;display: inline-block;}.qr-item img {width: 115px;height: 112px;}.qr-title {font-size: 16px;font-weight: bold;}.leo {display: flex;flex-wrap: wrap;}</style></head><body>';for ($i=0; $i < $qtd_nome_caixa; $i++) {$caixas = new Caixa();if ($ged == "ok" and $log =="ok") {$cx = new Cx();$id_cx_ultimo ++;$cx->setNome($id_cx_ultimo);$cx->setStatus(2);$cx->setTexto('Caixa '.$nome_caixa_parti);$cx->setImage('ArquivosGED');$cx->setCliente($clienteAll);$entityManager->persist($cx);$entityManager->flush();$id_cx=$cx->getId();$caixas->setCx($entityManager->getRepository(Cx::class)->find($id_cx));// Gerar QR Code com imagem no centro$result = Builder::create()->writer(new PngWriter())->writerOptions([])->data('https://logistica.arquivosdoc.com.br/'.$clienteAll_id.'/'.$id_cx_ultimo)->encoding(new Encoding('UTF-8'))->size(500)->margin(5)->logoPath(__DIR__ . '/logo.png') // Caminho do logo central->build();// Salvar QR Code como arquivo temporário$tempFile = tempnam(sys_get_temp_dir(), 'qr_') . '.png';$result->saveToFile($tempFile);// Adicionar QR Code ao HTMLif ($count % 48 == 0) {$html .= '<div class="leo">';}// Adicionar QR Code ao HTML$html .= '<div class="qr-item">';$html .= '<div class="qr-title">' . $id_cx_ultimo . '</div>';$html .= '<img src="data:image/png;base64,' . base64_encode(file_get_contents($tempFile)) . '">';$html .= '</div>';$count++;// Fechar a div e inserir quebra de página a cada 63 QR Codesif ($count % 48 == 0) {$html .= '</div><div style="page-break-after: always;"></div>';}}$caixas->setNome('Caixa '.$nome_caixa_parti);$caixas->addCliente($cliente);$caixas->setFluxo($fluxo);$entityManager->persist($caixas);$entityManager->flush();$nome_caixa_parti++;}if ($ged == "ok" and $log =="ok") {// Fechar qualquer div aberta sem completar 63 itensif ($count % 48 != 0) {$html .= '</div>';}$html .= '</div></body></html>';// Carregar o HTML e gerar o PDF$dompdf->loadHtml($html);$dompdf->setPaper([0, 0, 210, 297], 'portrait'); // Configurar o tamanho de página para A4$dompdf->render();#file_put_contents('sample1.pdf', $dompdf->output());$dompdf->stream('dompdf', array('Attachment' => 0));}$registro = new Registro();$registro->setOperacao('RECEBIMENTO DE '.$qtd_nome_caixa. ' CAIXA(S)');$registro->setUser($user_nome);$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();$etapa->setUpdatedAt($date_hoje);$etapa->setRegistro($registro);$entityManager->flush();$erro = 'ok';$p = "Recbimento com sucesso";}}if ($ged != "ok" and $log =="ok") {$qtd_caixa_ = $_POST["qtd_caixa"];$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isPhpEnabled', true);$dompdf = new Dompdf($options);$html = '<html><head><style>@page {margin: 35px 18.9px 0px 18.9px;size: 210mm 297mm; /* Ajuste de tamanho do papel */}body {margin: 0;padding: 0;}.qr-item {border: 2px dotted #000;text-align: center;width: 27.5mm;height: 30.5mm;display: inline-block;}.qr-item img {width: 105px;height: 100px;}.qr-title {font-size: 16px;font-weight: bold;}.leo {display: flex;flex-wrap: wrap;}</style></head><body><div class="leo">';for ($i=0; $i < $qtd_caixa_; $i++) {$id_cx_ultimo ++;// Gerar QR Code com imagem no centro$result = Builder::create()->writer(new PngWriter())->writerOptions([])->data('https://logistica.arquivosdoc.com.br/'.$clienteAll_id.'/'.$id_cx_ultimo)->encoding(new Encoding('UTF-8'))->size(300)->margin(10)->logoPath(__DIR__ . '/logo.png') // Caminho do logo central->build();// Salvar QR Code como arquivo temporário$tempFile = tempnam(sys_get_temp_dir(), 'qr_') . '.png';$result->saveToFile($tempFile);// Adicionar QR Code ao HTML$html .= '<div class="qr-item">';$html .= '<div class="qr-title">' . $id_cx_ultimo . '</div>';$html .= '<img src="data:image/png;base64,' . base64_encode(file_get_contents($tempFile)) . '">';$html .= '</div>';}$html .= '</div></body></html>';// Carregar o HTML e gerar o PDF$dompdf->loadHtml($html);$dompdf->setPaper([0, 0, 210, 297], 'portrait'); // Configurar o tamanho de página para A4$dompdf->render();file_put_contents('sample1.pdf', $dompdf->output());$dompdf->stream('dompdf', array('Attachment' => 1));$registro = new Registro();$registro->setOperacao('RECEBIMENTO DE '.$qtd_caixa_. ' CAIXA(S)');$registro->setUser($user_nome);$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();$etapa->setUpdatedAt($date_hoje);$etapa->setRegistro($registro);$entityManager->flush();$erro = 'ok';$p = "Recbimento com sucesso";}} else {echo "<script>alert('ERROR , Selecione a Identificação!');</script>";}}else {echo "<script>alert('ERROR , Selecione a Quantidade!');</script>";}}if($tp =='doc'){if(isset($_POST["check_cx_e"])){$yz = "yes";$checkBoxes = $request->request->all('inputs_cx_e');$xy = 0;$qtd_caixas=0;foreach ($checkBoxes as $id => $nome) {$cx_ = $doctrine->getRepository(Cx::class)->find($id);$_nome = $cx_->getNome();if ($nome =="") {echo "<script>alert('ERROR, Digite no campo gerado acima da tabela qual será repositorio do ID: $_nome!');</script>";}if ($nome != "" ) {$id_cx_ultimo = $_nome ;$qtd_caixas++;$xy = 1;$caixas = new Caixa();$caixas->setNome($nome);$caixas->addCliente($cliente);$caixas->setFluxo($fluxo);$caixas->setCx($cx_);$entityManager->persist($caixas);$entityManager->flush();$registro = new Registro();$registro->setOperacao('RECEBIMENTO DA ID EXISTENTE '.$_nome);$registro->setUser($user_nome);$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();}}if($xy==1){$etapa->setRegistro($registro);$etapa->setObs($_POST["obs_caixa"]);$etapa->setUpdatedAt($date_hoje);$entityManager->flush();$registro = new Registro();$registro->setOperacao('RECEBIMENTO DE '.$qtd_caixas. ' CAIXA(S) ');$registro->setUser($user_nome);$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();$erro = 'ok';$p = "Recbimento com sucesso";}}else{$zy = "not";}if(isset($_POST["check_caixa_e"])){$zy = "yes";$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('debugKeepTemp', true);$options->set('isPhpEnabled', true);$dompdf = new Dompdf($options);$html = '<html><head><style>@page {margin: 35px 18.9px 0px 18.9px;size: 210mm 297mm; /* Ajuste de tamanho do papel */}body {margin: 0;padding: 0;}.qr-item {border: 2px dotted #000;text-align: center;width: 32.27mm;height: 34.9mm;display: inline-block;}.qr-item img {width: 115px;height: 112px;}.qr-title {font-size: 16px;font-weight: bold;}.leo {display: flex;flex-wrap: wrap;}</style></head><body>';$ckeck = $_POST["caixa_e"];$xy = 0;$qtd_caixas=0;foreach ($ckeck as $key) {$nome_k = NULL;$caixa_k = $doctrine->getRepository(Caixa::class)->find($key);if($caixa_k != NULL ){$nome_k = $caixa_k->getNome();}if ($clienteAll_id != 18) {$cx = new Cx();$id_cx_ultimo ++;$cx->setNome($id_cx_ultimo);$cx->setStatus(2);$cx->setTexto($nome_k);$cx->setImage('ArquivosGED');$cx->setCliente($clienteAll);$entityManager->persist($cx);$entityManager->flush();$caixa_k->setCx($cx);}$caixa_k->setFluxo($fluxo);$entityManager->flush();$registro = new Registro();$registro->setOperacao('RECEBIMENTO DA CAIXA EXISTENTE '.$nome_k);$registro->setUser($user_nome);$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();// Gerar QR Code com imagem no centro$result = Builder::create()->writer(new PngWriter())->writerOptions([])->data('https://logistica.arquivosdoc.com.br/'.$clienteAll_id.'/'.$id_cx_ultimo)->encoding(new Encoding('UTF-8'))->size(500)->margin(5)->logoPath(__DIR__ . '/logo.png') // Caminho do logo central->build();// Salvar QR Code como arquivo temporário$tempFile = tempnam(sys_get_temp_dir(), 'qr_') . '.png';$result->saveToFile($tempFile);// Adicionar QR Code ao HTMLif ($count % 48 == 0) {$html .= '<div class="leo">';}// Adicionar QR Code ao HTML$html .= '<div class="qr-item">';$html .= '<div class="qr-title">' . $id_cx_ultimo . '</div>';$html .= '<img src="data:image/png;base64,' . base64_encode(file_get_contents($tempFile)) . '">';$html .= '</div>';$count++;// Fechar a div e inserir quebra de página a cada 63 QR Codesif ($count % 48 == 0) {$html .= '</div><div style="page-break-after: always;"></div>';}}// Fechar qualquer div aberta sem completar 63 itensif ($count % 48 != 0) {$html .= '</div>';}$html .= '</div></body></html>';if ($clienteAll_id != 18) {// Carregar o HTML e gerar o PDF$dompdf->loadHtml($html);$dompdf->setPaper([0, 0, 210, 297], 'portrait'); // Configurar o tamanho de página para A4$dompdf->render();#file_put_contents('sample1.pdf', $dompdf->output());$dompdf->stream('dompdf', array('Attachment' => 0));}if($xy==1){$etapa->setRegistro($registro);$etapa->setUpdatedAt($date_hoje);$etapa->setObs($_POST["obs_caixa"]);$entityManager->flush();$registro = new Registro();$registro->setOperacao('RECEBIMENTO DE '.$qtd_caixas. ' CAIXA(S) ');$registro->setUser($user_nome);$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();$erro = 'ok';$p = "Recbimento com sucesso";}}else{$yz = "not";}if ($yz == "not" and $zy="not") {echo "<script>alert('ERROR , Preencha corretamente o formulario, está sem valor , selecione todas as opções necessaria!');</script>";}}}else {echo "<script>alert('ERROR , Selecione o tipo!');</script>";}}return $this->render('index/recebimento.html.twig', ['p'=>$p,'erro'=>$erro,'pagina' => $pagina,'etapa'=>$etapa,'caixas_setor' => $caixas_setor,'cx_setor' => $cx_setor]);}#[Route('/index/higienizacao/{id}', name: 'higienizacao')]public function higienizacao( PaginatorInterface $paginator,Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session, MailerInterface $mailer,$id): Response{$user_logado = $this->getUser();$user_nome = $user_logado->getNome();$date_hoje = new \DateTimeImmutable('America/Sao_Paulo');$ip_cliente = $_SERVER['REMOTE_ADDR'];$erro = '';$pagina = 'home';$p ='';$a = 0 ;$clienteAll = null;$cx = null;$caixa = null;$etapa = $doctrine->getRepository(Etapa::class)->findWithAllRelations($id);$fluxo = $etapa->getFluxo();$etapa_caixas = $etapa->getCaixa()->toArray();$fluxo_caixas = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($fluxo->getId());$e = 0;$f = 0;$clienteId = $session->get('cliente_id');if($clienteId == null){return $this->redirectToRoute('home');}foreach ($etapa_caixas as $key) {$e++;}foreach ($fluxo_caixas as $key) {$f++;}if(isset($_POST["a"])){$a = 2;}$qrCodeData = $request->request->get('qrcode');if(isset($_POST["id_caixas"])){$a = 1 ;$caixa = $doctrine->getRepository(Caixa::class)->findBy(['id' => $_POST["id_caixas"]]);foreach ($caixa as $key) { $caixa_cx_id = $key->getClientes()->toArray();}$cx = $caixa_cx_id ;foreach ($cx as $key) {$cliente_cx_id = $key->getClienteAll()->getId();}$clienteAll = $doctrine->getRepository(ClienteAll::class)->findClienteWithRelations($cliente_cx_id);}if($qrCodeData != null){$url = $qrCodeData;preg_match('/(\d+)\/(\d+)$/', $url, $matches);if (!empty($matches)) {$numero1 = $matches[1];$numero2 = $matches[2];$clienteAll = $doctrine->getRepository(ClienteAll::class)->find($numero1);$cx = $doctrine->getRepository(Cx::class)->findBy(['nome' => $numero2]);foreach ($cx as $key) {$cx_id = $key->getId();}$caixa = $doctrine->getRepository(Caixa::class)->findBy(['cx' => $cx_id ]);$a = 1 ;} else {}}if(isset($_POST["cx"])){$clienteAll = $doctrine->getRepository(ClienteAll::class)->findClienteWithRelations($_POST["clienteAll"]);$clienteAll_nome = $clienteAll->getNome();$cx = $doctrine->getRepository(Cx::class)->find($_POST["cx"]);$caixa = $doctrine->getRepository(Caixa::class)->find($_POST["caixas"]);$cliente = $doctrine->getRepository(Cliente::class)->find($_POST["cliente"]);if ($cx != null) {$cx_nome = 'ID: '.$cx->getNome();}else{$cx_nome = 'GED: '.$caixa->getNome();}$cliente_nome = $clienteAll_nome;if ($cliente_nome == NULL){$cliente_nome = $cliente->getNome();}$registro = new Registro();$registro->setOperacao('HIGIENIZAÇÃO '.$cx_nome);$registro->setUser($user_nome);$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();if($cx != null){$etapa->addCx($cx);}$etapa->addCaixa($caixa);$caixa->setHigienizaAt($date_hoje);$e++;if ($e == $f) {$registro = new Registro();$registro->setOperacao('HIGIENIZAÇÃO DE '.$f. ' CAIXA(S)');$registro->setUser('CONCLUIDO PELA EQUIPE');$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();$etapa->setRegistro($registro);$etapa->setUpdatedAt($date_hoje);$entityManager->flush();}$entityManager->flush();$erro = 'ok';$p = "Etapa concluída com sucesso";}return $this->render('index/higienizacao.html.twig', ['id'=>$id,'p'=>$p,'erro'=>$erro,'pagina' => $pagina,'a'=>$a,'clienteAll' => $clienteAll,'cx' =>$cx ,'caixa' => $caixa,'fluxo_caixas'=>$fluxo_caixas]);}#[Route('/index/digitalizacao/{id}', name: 'digitalizacao')]public function digitalizacao(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session,MessageBusInterface $bus,$id): Response{$ip_cliente = $_SERVER['REMOTE_ADDR'];$etapa = $doctrine->getRepository(Etapa::class)->findWithAllRelations($id);$fluxo = $doctrine->getRepository(Fluxo::class)->findWithAllRelations($etapa->getFluxo()->getId());$cliente_nome = $fluxo->getCliente()->getNome();$cliente_id = $fluxo->getCliente();$fluxo_caixas = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($fluxo->getId());$form = $this->createForm(UploadType::class);$user_logado = $this->getUser();$user_logado_id = $user_logado->getId();$userId = $user_logado_id;$cliente = $doctrine->getRepository(User::class)->findClientsByUserId($user_logado_id);$form->handleRequest($request);$dotenv = new Dotenv();$dotenv->load(__DIR__.'/.env');$hoje = new \DateTimeImmutable('America/Sao_Paulo');$hoje_formt=$hoje->format('Y-m-d') ;$dia_prod = 'de hoje';$erro = '';$ii=0;$pagina = 'export';$p = '';$uuid = Uuid::v4();$user = $this->getUser();$user_nome= $user->getEmail();$user_nome_name= $user->getNome();$pasta_user=$user_nome.'/';$cliente_alls = "";$arr = [];$arrr=0;$f = 0;$dt = '';$clientS3 = new S3Client(['region' => 'sa-east-1','version' => 'latest','credentials' => ['key' => $_ENV['AWS_KEY'],'secret' => $_ENV['AWS_SECRET'],],]);foreach ($fluxo_caixas as $key) {$f++;}if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');if ($clienteId == null ) {$caixas = "";$cliente_session = "";return $this->redirectToRoute('home');} else {$caixas = $fluxo_caixas;$cliente_session = $doctrine->getRepository(Cliente::class)->find($clienteId);}if(isset($_POST["botao_export"])){$caixaId = $_POST["caixas"];$caixa_id = $doctrine->getRepository(Caixa::class)->find($_POST["caixas"]);$clientes= $cliente_id->getId();$clienteId=$clientes;$clientes_status= $cliente_id->getExtraFields();if(!$clientes_status){$clientes_status="ged";}$conteiner = $_POST["conteiner"];$cont_file = 0 ;$umlautString =$cliente_nome;$slugger = new AsciiSlugger();$teste=$slugger->slug($umlautString, $seperator = '-')->toString();$caminho = strtolower ($teste.'/');if($clientes == 14){$caminho='cartorio-1deg-oficio-de-volta-redonda-rj/';}if($clientes == 83){$caminho='casf-corretora-apolice-diversos/';}if($clientes == 35){$caminho='pmecj-sp-saude/';}if($clientes == 107){$caminho='pmecj-sp-execucao-fiscal/';}if($clientes == 4){$caminho='cartorio-souza-reis-barra-mansa/';}if($clientes == 112){$caminho='saae-cartao-de-ponto/';}if($clientes == 15){$caminho='cbsi-dossies/';}if($clientes == 55){$caminho='casf-gerep-contratos-de-prestadores-de-saude-pj/';}if($clientes == 13){$caminho='casa-de-saude-santa-maria-c-s-s.M/';}if($clientes == 40){$caminho='fasf-atas-e-diario/';}if($clientes == 127){$caminho='pmecj-s-a.A) - ALMOXARIFADO E PATRIMÔNIO/';}$filesTmp = $_FILES['file']['tmp_name'];$filesName = $_FILES['file']['name'];foreach ($filesTmp as $index => $file) {$uuid = Uuid::v4();$cont_file++;// nome original do arquivo$originalName = pathinfo($filesName[$index], PATHINFO_FILENAME);// sanitiza o nome (remove acentos, espaços estranhos etc.)$slugger = new AsciiSlugger();$safeName = strtolower($slugger->slug($originalName)->toString());// 🔹 Se cliente for local, usa nome originalif ($clientes_status === 'local') {$filename = $safeName . '.pdf';} else {// padrão: UUID$filename = $uuid . '.pdf';}$tempDir = __DIR__ . '/../../var/uploads/messenger';if (!is_dir($tempDir)) {mkdir($tempDir, 0777, true);}$tempFilePath = $tempDir . '/' . $filename;move_uploaded_file($file, $tempFilePath);chmod($tempFilePath, 0644);if (!file_exists($tempFilePath) || filesize($tempFilePath) === 0) {throw new \RuntimeException('Falha ao gravar PDF temporário: ' . $tempFilePath);}// evita race condition de filesystemclearstatcache(true, $tempFilePath);$bus->dispatch(new UploadMultipartMessage($tempFilePath,$filename,$caminho,'',$caixaId,$clienteId,$userId,0,$conteiner,$clientes,$clientes_status,$safeName,$originalName,$cliente_alls));}$log = new Registro();$log->setOperacao('EXPORTOU '.$cont_file.' DOCUMENTO(S)');$log->setUser($user_nome_name);$log->setCliente($cliente_nome);$entityManager->persist($log);$entityManager->flush();return $this->redirectToRoute('digitalizacao', ['id' => $id]);}if(isset($_POST["caixa_total"])){$caixa_total = $_POST["caixa_total"];$documento_total =$_POST["documento_total"];$qtd_total =$_POST["qtd_total"];$registro = new Registro();$registro->setOperacao('DIGITALIZAÇÃO: '.$caixa_total. ' CAIXA(S) / '.$documento_total.' DOCUMENTO(S) / '.$qtd_total.' IMAGEN(S)');$registro->setUser('CONCLUIDO PELA EQUIPE');$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();$etapa->setRegistro($registro);$etapa->setUpdatedAt($hoje);$entityManager->flush();$erro = 'ok';$p = "Etapa concluída com sucesso";}return $this->render('index/digitalizacao.html.twig', ['id'=>$id,'p'=>$p,'erro'=>$erro,'pagina' => $pagina,'caixas' => $caixas,'user_logado' => $user_logado,'cliente' => $cliente,'cliente_session' => $cliente_session,'form' => $form->createView(),'dia_prod' => $dia_prod,'fluxo' => $fluxo]);}#[Route('/index/indexacao/{id}', name: 'indexacao')]public function indexacao(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager , SessionInterface $session,$id): Response{$ip_cliente = $_SERVER['REMOTE_ADDR'];$etapa = $doctrine->getRepository(Etapa::class)->findWithAllRelations($id);$fluxo = $doctrine->getRepository(Fluxo::class)->findWithAllRelations($etapa->getFluxo()->getId());$cliente_nome = $fluxo->getCliente()->getNome();$cliente_etapa = $fluxo->getCliente();$fluxo_caixas = $doctrine->getRepository(Caixa::class)->findByFluxoWithRelations($fluxo->getId());$caixaIds = array_map(fn($caixa) => $caixa->getId(), $fluxo_caixas);$documentoRepository = $entityManager->getRepository(Documento::class);$query = $documentoRepository->createQueryBuilder('d')->where('d.caixa IN (:caixaIds)')->setParameter('caixaIds', $caixaIds)#->orderBy('d.qtd', 'ASC') // Ordenando pelo ID da caixa em ordem crescente->getQuery();// Executa a query$documentos = $query->getResult();$caixas = $fluxo_caixas;$dotenv = new Dotenv();$dotenv->load(__DIR__.'/.env');$user_logado = $this->getUser();$form = $this->createForm(UploadType::class);$form->handleRequest($request);$user_logado_tipoAcesso = $user_logado->getTipoAcesso();$user_logado_nome = $user_logado->getNome();$user_logado_id = $user_logado->getId();$cliente = $doctrine->getRepository(User::class)->findClientsByUserId($user_logado_id);$hoje = new \DateTimeImmutable('America/Sao_Paulo');$hoje_formt=$hoje->format('Y-m-d');$doc = $entityManager->getRepository(Documento::class)->findByUserIndexAndDate($user_logado_nome, $hoje_formt);$dia_prod = 'de hoje';$permissao = [];$list_indexador = [];$index_all = $doctrine->getRepository(Tipo::class)->findBy(['cliente' => $cliente_etapa]);$class = $doctrine->getRepository(Classificacao::class)->findBy(['cliente' => $cliente_etapa]);$cliente_ids =$cliente_etapa ;$cliente_nome= $cliente_ids->getNome();$clientes= $cliente_ids->getId();$umlautString =$cliente_nome;$slugger = new AsciiSlugger();$teste=$slugger->slug($umlautString, $seperator = '-')->toString();$caminho = strtolower ($teste.'/');if($clientes == 14){$caminho='cartorio-1deg-oficio-de-volta-redonda-rj/';}if($clientes == 83){$caminho='casf-corretora-apolice-diversos/';}if($clientes == 35){$caminho='pmecj-sp-saude/';}if($clientes == 107){$caminho='pmecj-sp-execucao-fiscal/';}if($clientes == 4){$caminho='cartorio-souza-reis-barra-mansa/';}if($clientes == 112){$caminho='saae-cartao-de-ponto/';}if($clientes == 15){$caminho='cbsi-dossies/';}if($clientes == 55){$caminho='casf-gerep-contratos-de-prestadores-de-saude-pj/';}if($clientes == 13){$caminho='casa-de-saude-santa-maria-c-s-s.M/';}if($clientes == 127){$caminho='pmecj-s-a.A) - ALMOXARIFADO E PATRIMÔNIO/';}if(isset($_POST["btn_cliente"])){$session->set('cliente_id', $_POST["btn_cliente"]);return $this->redirectToRoute('home');}$clienteId = $session->get('cliente_id');if ($clienteId == null ) {$caixas = "";$cliente_session = "";return $this->redirectToRoute('home');}$erro = '';$ii=0;$pagina = 'index';$p = '';$link = '';$mx = 0;$xy = 0 ;$yz = 0 ;$ay = 0 ;$ky = 0 ;$pdf ='';$pagina_h4 ='Documento(s) para indexar';$nome_menu_ = '';$index_tipo='';$uuid = Uuid::v4();$user = $this->getUser();$user_nome= $user->getEmail();$user_nome_name= $user->getNome();$pasta_user=$user_nome.'/';$arr = [];$arrr=0;$index_find = null;$dt = '';$clientS3 = new S3Client(['region' => 'sa-east-1','version' => 'latest','credentials' => ['key' => $_ENV['AWS_KEY'],'secret' => $_ENV['AWS_SECRET'],],]);if(isset($_POST["botao_index"])){$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id"]);$link = $pdf->getImage();$xy = 1 ;}if(isset($_POST["botao_doc"])){$yz = 0 ;$xy = 1 ;$ay = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["id_index"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["id_index"]);$index_tipo_tipo = $index_tipo->getNome();$link = $pdf->getImage();$fase=$_POST["fase"];$data = $_POST["data"];$cx = $_POST["caixas"];$classifica = $_POST["classifica"];$desc = $_POST["desc"];$assunto = $_POST["assunto"];$chave = $_POST["chave"];$nome = $_POST["nome"];$conteiner = $_POST["conteiner"];$caixa_id = $doctrine->getRepository(Caixa::class)->find($cx);// Exibe os números encontradosif ($clientes != 7) {preg_match_all('/\d+/', $fase, $matches);$numeros = array_map('intval', $matches[0]);if ($data != "") {if ($numeros != [] ) {if ($fase != "") {// Número inteiro que você deseja somar ao ano$numeroParaSomar = $numeros[0];// Extrair o ano da datalist($ano, $mes, $dia) = explode('-', $data);// Converter o ano para um número inteiro$ano = intval($ano);// Somar o número ao ano$data_vecimento = $ano + $numeroParaSomar.'-'.$mes.'-'. $dia;$pdf->setVencimentoDocumento(new \DateTimeImmutable($data_vecimento));}}$pdf->setDataDocumento(new \DateTimeImmutable($data));}}if ($clientes == 7) {$pdf->setVencimentoDocumento(new \DateTimeImmutable($fase));$pdf->setDataDocumento(new \DateTimeImmutable($data));}$pdf->setAssunto($assunto);if ($classifica != "") {$classifica_id = $doctrine->getRepository(Classificacao::class)->find($classifica);$pdf->setClassificacao($classifica_id);}$pdf->setCaixa($caixa_id);$pdf->setExtraFields($desc);$pdf->setNome($nome);$pdf->setKeywords($chave);$pdf->setUserIndex($user_nome_name);$pdf->setConteiner($conteiner);$pdf->setIndexAt(new \DateTimeImmutable('America/Sao_Paulo'));$pdf->setTipo($index_tipo);$entityManager->flush();$id_pd = $pdf->getId();$log = new Registro();$log->setOperacao('Indexou o Documento com id '.$id_pd);$log->setUser($user_nome_name);$log->setCliente($cliente_nome);$entityManager->persist($log);$entityManager->flush();$erro = 'ok';$p = $index_tipo_tipo.' indexado com sucesso';}if(isset($_POST["botao_index_edit"])){$yz = 0 ;$xy = 1 ;$ay = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["id_index"]);$link = $pdf->getImage();}if(isset($_POST["botao_volta"])){$xy = 0 ;$yz = 0 ;}if(isset($_POST["index_button"])){$yz = 0 ;$xy = 1 ;$ay = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["index_button"]);$link = $pdf->getImage();}if(isset($_POST["botao_cancel"])){$yz = 0 ;$xy = 1 ;$ay = 0 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$link = $pdf->getImage();}if(isset($_POST["delet"])){$ky = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["delet"]);$documentos = $doctrine->getRepository(Documento::class)->findBy(['id' => $_POST["delet"]]);if($pdf->getTipo()!= null){$index_find = $doctrine->getRepository(Tipo::class)->find($pdf->getTipo());$pagina =$index_find->getTipo();$pagina_h4 ='Documento(s) do tipo ( '.$index_find->getTipo().' )';}}if(isset($_POST["delet_cancel"])){$ky = 0 ;}if(isset($_POST["delet_sim"])){$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id"]);$id_pd = $pdf->getId();$entityManager->remove($pdf);$entityManager->flush();$log = new Registro();$log->setOperacao('Excluiu Documento com id '.$id_pd);$log->setUser($user_nome_name);$log->setCliente($cliente_nome);$entityManager->persist($log);$entityManager->flush();$erro = 'ok';$p = 'Documento com id '.$id_pd.' excluido com sucesso ';}if(isset($_POST["index_edit"])){$yz = 0 ;$xy = 1 ;$ay = 2 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($_POST["id_index"]);$link = $pdf->getImage();}if(isset($_POST["caixa_total"])){$caixa_total = $_POST["caixa_total"];$documento_total =$_POST["documento_total"];$qtd_total =$_POST["qtd_total"];$registro = new Registro();$registro->setOperacao('INDEXADO: '.$caixa_total. ' CAIXA(S) / '.$documento_total.' DOCUMENTO(S) / ');$registro->setUser('CONCLUIDO PELA EQUIPE');$registro->setCliente($cliente_nome);$registro->setIp($ip_cliente);$entityManager->persist($registro);$entityManager->flush();$etapa->setRegistro($registro);$etapa->setUpdatedAt($hoje);$entityManager->flush();$erro = 'ok';$p = "Etapa concluída com sucesso";}$cmd = $clientS3->getCommand('GetObject', ['Bucket' => 'arquivosdoc','Key' => $caminho. $link,]);$req = $clientS3->createPresignedRequest($cmd, '+30 minutes');$all_Url = (string) $req->getUri();return $this->render('index/indexacao.html.twig', ['documentos' => $documentos,'xy' => $xy,'yz' => $yz,'ay'=>$ay,'link' => $link,'pdf'=>$pdf,'p'=>$p,'erro'=>$erro,'index_all'=>$index_all,'index_tipo'=>$index_tipo,'ky'=>$ky,'pagina' => $pagina,'pagina_h4' =>$pagina_h4,'index_find'=>$index_find,'mx'=>$mx,'class'=>$class,'caixas' => $caixas,'permissao'=>$permissao,'doc'=>$doc,'dia_prod' => $dia_prod,'fluxo' => $fluxo,'id' => $id,'caminho' =>$caminho,'clientes'=>$clientes,'all_Url'=>$all_Url]);}#[Route('/kpis', name: 'kpis')]public function kpis(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager): Response{$hoje = new \DateTimeImmutable('America/Sao_Paulo');$hoje_formt=$hoje->format('Y-m-d') ;$pagina="kpis";$motivo ='';$error='';$user_logado = $this->getUser();$de_="";$ate_= "";$h4 ="TOTAL";if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$ip_cliente = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];} else {$ip_cliente = $_SERVER['REMOTE_ADDR'];}$payload = json_encode(['data_inicio' => null,'data_fim' => null]);$options = ['http' => ['header' => "Content-Type: application/json\r\n",'method' => 'POST','content' => $payload,],];$context = stream_context_create($options);$response = file_get_contents('https://produtive.arquivosdoc.com.br/api/tjrj', false, $context);if ($response === false) {return new Response("Erro ao consumir API", 500);}$data = json_decode($response, true);$conn = $entityManager->getConnection();$sql = "SELECTc.nome AS cliente_nome,(SELECT COUNT(cx.id)FROM cx cxWHERE cx.caminho IS NOT NULLAND cx.cliente_id = c.id) AS total_caixas,(SELECT COUNT(d.id)FROM documento dJOIN cliente s ON s.id = d.cliente_idWHERE s.cliente_all_id = c.id) AS total_documentos,(SELECT SUM(d.qtd)FROM documento dJOIN cliente s ON s.id = d.cliente_idWHERE s.cliente_all_id = c.id) AS imagens_totalFROM cliente_all cORDER BY c.nome ASC";$stmt = $conn->prepare($sql);$stmt->execute();$fed_cliente = $stmt->executeQuery()->fetchAllAssociative();// 🔹 Adicionando TJRJ no array de clientesif (is_array($data)) {$fed_cliente[] = ['cliente_nome' => 'TRIBUNAL DE JUSTICA DO ESTADO DO RIO DE JANEIRO',#'total_caixas' => $data['total_caixas'] ?? 0,'total_caixas' => 0,'total_documentos' => $data['total_documentos'] ?? 0,'imagens_total' => $data['imagens_total'] ?? 0];}//IMAGENS$sql1 = "SELECT SUM(d.qtd) AS total_imagens FROM documento d";$totalImagens = $conn->fetchOne($sql1);$totalImagens += $data['imagens_total'] ?? 0;//DOCUMENTOS$sql2 = "SELECT COUNT(d.id) AS total_documentos FROM documento d";$documento = $conn->fetchOne($sql2);$documento += $data['total_documentos'] ?? 0;//CX (com filtro de status != 0)$sql3 = "SELECT COUNT(d.id) AS total_cx FROM cx d WHERE d.status != 0 AND d.caminho != ''";$cx = $conn->fetchOne($sql3);if(isset($_POST["pesq"])){$de = $_POST["de"];$ate = $_POST["ate"]." 23:59:59";// IMAGENS$queryStr = 'SELECT SUM(d.qtd) AS total_imagensFROM App\Entity\Documento dWHERE d.createdAt >= :de';if ($ate) {$queryStr .= ' AND d.createdAt <= :ate';}$query = $entityManager->createQuery($queryStr);$query->setParameter('de', $de);if ($ate) {$query->setParameter('ate', $ate);}$result = $query->getSingleResult();$totalImagens = $result['total_imagens'];//// DOCUMENTOS$queryStr = 'SELECT COUNT(d.id) AS total_documentosFROM App\Entity\Documento dWHERE d.createdAt >= :de';if ($ate) {$queryStr .= ' AND d.createdAt <= :ate';}$query = $entityManager->createQuery($queryStr);$query->setParameter('de', $de);if ($ate) {$query->setParameter('ate', $ate);}$result = $query->getSingleResult();$documento = $result['total_documentos'];//// CX$queryStr = 'SELECT COUNT(d.id) AS total_cxFROM App\Entity\Cx dWHERE d.createdAt >= :de AND d.caminho IS NOT NULL';if ($ate) {$queryStr .= ' AND d.createdAt <= :ate';} else {$queryStr .= ' AND DATE(d.createdAt) = DATE(:de)';}$query = $entityManager->createQuery($queryStr);$query->setParameter('de', $de);if ($ate) {$query->setParameter('ate', $ate);}$result = $query->getSingleResult();$cx = $result['total_cx'];//$queryStr = "SELECTc.nome AS cliente_nome,(SELECT COUNT(cx.id)FROM App\Entity\Cx cxWHERE cx.status != 0AND cx.caminho != ''AND cx.cliente = cAND cx.createdAt >= :de";if ($ate) {$queryStr .= " AND cx.createdAt <= :ate";} else {$queryStr .= " AND DATE(cx.createdAt) = DATE(:de)";}$queryStr .= ") AS total_caixas,(SELECT COUNT(d1.id)FROM App\Entity\Documento d1JOIN d1.cliente c1WHERE c1.clienteAll = cAND d1.createdAt >= :de";if ($ate) {$queryStr .= " AND d1.createdAt <= :ate";} else {$queryStr .= " AND DATE(d1.createdAt) = DATE(:de)";}$queryStr .= ") AS total_documentos,(SELECT SUM(d2.qtd)FROM App\Entity\Documento d2JOIN d2.cliente c2WHERE c2.clienteAll = cAND d2.createdAt >= :de";if ($ate) {$queryStr .= " AND d2.createdAt <= :ate";} else {$queryStr .= " AND DATE(d2.createdAt) = DATE(:de)";}$queryStr .= ") AS imagens_totalFROM App\Entity\ClienteAll cORDER BY c.nome ASC";// Preparar a consulta com os parâmetros de data$query = $entityManager->createQuery($queryStr);$query->setParameter('de', $de);if ($ate) {$query->setParameter('ate', $ate);}$result = $query->getResult();$fed_cliente = $result;// 🔹 Chamada API TJRJ$payload = json_encode(['data_inicio' => $_POST["de"] ?? null,'data_fim' => $_POST["ate"] ?? null]);$options = ['http' => ['header' => "Content-Type: application/json\r\n",'method' => 'POST','content' => $payload,],];$context = stream_context_create($options);$response = file_get_contents('https://produtive.arquivosdoc.com.br/api/tjrj', false, $context);$data = $response ? json_decode($response, true) : [];// 🔹 Adiciona TJRJ na lista final (igual no geral)if (is_array($data)) {$fed_cliente[] = ['cliente_nome' => 'TRIBUNAL DE JUSTICA DO ESTADO DO RIO DE JANEIRO','total_caixas' => 0,'total_documentos' => $data['total_documentos'] ?? 0,'imagens_total' => $data['imagens_total'] ?? 0];}}return $this->render('index/kpis.html.twig',array('error' =>$error,'motivo' => $motivo,'pagina'=>$pagina,'user_logado'=> $user_logado ,'cx' => $cx,'documento' => $documento,'de' =>$de_,'ate' =>$ate_,'h4' => $h4,//'documentosPorMes' => $documentosPorMes,//'cxPorMes'=>$cxPorMes,//'totalImagensPorMes' => $totalImagensPorMes,'totalImagens'=>$totalImagens,'fed_cliente'=> $fed_cliente));}#[Route('/fila/count', name: 'fila_count', methods: ['GET'])]public function count(EntityManagerInterface $entityManager): JsonResponse{$user_logado = $this->getUser();$user_logado_id = $user_logado->getId();$count = $entityManager->getRepository(MessengerMessages::class)->countPendingMessagesByUser($user_logado_id);return new JsonResponse(['count' => $count]);}#[Route('/index/qualidade', name: 'qualidade')]public function qualidade(Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager , SessionInterface $session): Response{$clienteId = $session->get('cliente_id');$ip_cliente = $_SERVER['REMOTE_ADDR'];$caixaIds = "LEONARDO DE SOUZA CRUZEIRO";$documentoRepository = $entityManager->getRepository(Documento::class);$query = $documentoRepository->createQueryBuilder('d')->where('d.user_index IN (:caixaIds)')->andWhere('d.cliente = :clienteId')->andWhere('d.situacao = :situacao OR d.situacao IS NULL')->setParameter('situacao', '')->setParameter('caixaIds', $caixaIds)->setParameter('clienteId', $clienteId)->orderBy('d.caixa', 'ASC') // Ordenando pelo ID da caixa em ordem crescente->getQuery();// Executa a query$documentos = $query->getResult();#dd($documentos);$dotenv = new Dotenv();$dotenv->load(__DIR__.'/.env');$user_logado = $this->getUser();$form = $this->createForm(UploadType::class);$form->handleRequest($request);$user_logado_tipoAcesso = $user_logado->getTipoAcesso();$user_nome_name = $user_logado->getNome();$user_logado_id = $user_logado->getId();$hoje = new \DateTimeImmutable('America/Sao_Paulo');$hoje_formt=$hoje->format('Y-m-d');$dia_prod = 'de hoje';$permissao = [];$list_indexador = [];$slugger = new AsciiSlugger();$erro = '';$ii=0;$pagina = 'qualidade';$p = '';$link = '';$xy = 0 ;$pdf ='';$umlautString = '';$clientes = 0;$caminho ='';$class ="";$all_Url="";$clientS3 = new S3Client(['region' => 'sa-east-1','version' => 'latest','credentials' => ['key' => $_ENV['AWS_KEY'],'secret' => $_ENV['AWS_SECRET'],],]);if(isset($_POST["botao_index"])){$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id"]);$clientes = $pdf->getCliente()->getId();$clienteRepository = $entityManager->getRepository(Cliente::class);$class = $doctrine->getRepository(Classificacao::class)->findBy(['cliente' => $clientes]);$query = $clienteRepository->createQueryBuilder('c')->where('c.id = :caixaIds')->setParameter('caixaIds', $clientes)->getQuery();$cl = $query->getSingleResult();$link = $pdf->getImage();$xy = 1 ;$umlautString = $cl->getNome();$teste=$slugger->slug($umlautString, $seperator = '-')->toString();$caminho = strtolower ($teste.'/');if($clientes == 14){$caminho='cartorio-1deg-oficio-de-volta-redonda-rj/';}if($clientes == 83){$caminho='casf-corretora-apolice-diversos/';}if($clientes == 35){$caminho='pmecj-sp-saude/';}if($clientes == 107){$caminho='pmecj-sp-execucao-fiscal/';}if($clientes == 4){$caminho='cartorio-souza-reis-barra-mansa/';}if($clientes == 112){$caminho='saae-cartao-de-ponto/';}if($clientes == 15){$caminho='cbsi-dossies/';}if($clientes == 55){$caminho='casf-gerep-contratos-de-prestadores-de-saude-pj/';}if($clientes == 13){$caminho='casa-de-saude-santa-maria-c-s-s.M/';}if($clientes == 127){$caminho='pmecj-s-a.A) - ALMOXARIFADO E PATRIMÔNIO/';}$cmd = $clientS3->getCommand('GetObject', ['Bucket' => 'arquivosdoc','Key' => $caminho. $link,]);$req = $clientS3->createPresignedRequest($cmd, '+30 minutes');$all_Url = (string) $req->getUri();}if(isset($_POST["botao_doc"])){$yz = 0 ;$xy = 1 ;$ay = 1 ;$pdf = $doctrine->getRepository(Documento::class)->find($_POST["id_pdf"]);$index_tipo = $doctrine->getRepository(Tipo::class)->find($pdf->getTipo());$index_tipo_tipo = $index_tipo->getNome();$link = $pdf->getImage();$data = $_POST["data"];$desc = $_POST["desc"];$assunto = $_POST["assunto"];$chave = $_POST["chave"];$nome = $_POST["nome"];$conteiner = $_POST["conteiner"];$classifica = $_POST["classifica"];$fase = $_POST["fase"];preg_match_all('/\d+/', $fase, $matches);$numeros = array_map('intval', $matches[0]);if ($clientes != 7) {if ($data != "") {if ($fase != "") {$numeroParaSomar = $numeros[0];list($ano, $mes, $dia) = explode('-', $data);$ano = intval($ano);$data_vecimento = $ano + $numeroParaSomar.'-'.$mes.'-'. $dia;$pdf->setVencimentoDocumento(new \DateTimeImmutable($data_vecimento));}$pdf->setDataDocumento(new \DateTimeImmutable($data));}}if ($classifica != "") {$classifica_id = $doctrine->getRepository(Classificacao::class)->find($classifica);$pdf->setClassificacao($classifica_id);}$pdf->setAssunto($assunto);$pdf->setExtraFields($desc);$pdf->setNome($nome);$pdf->setKeywords($chave);$pdf->setUserIndex($user_nome_name);$pdf->setConteiner($conteiner);$pdf->setIndexAt(new \DateTimeImmutable('America/Sao_Paulo'));$pdf->setSituacao('OK');$entityManager->flush();$id_pd = $pdf->getId();$log = new Registro();$log->setOperacao('Conferiu o Documento com id '.$id_pd);$log->setUser($user_nome_name);$log->setCliente($umlautString);$entityManager->persist($log);$entityManager->flush();$erro = 'ok';$p = $index_tipo_tipo.' FOI CONFERIDO COM SUCESSO';}if(isset($_POST["botao_volta"])){$xy = 0 ;$yz = 0 ;}return $this->render('index/qualidade.html.twig', ['documentos' => $documentos,'xy' => $xy,'link' => $link,'pdf'=>$pdf,'p'=>$p,'erro'=>$erro,'pagina' => $pagina,'caminho' =>$caminho,'class' => $class,'all_Url'=>$all_Url,]);}#[Route('/metas', name: 'metas')]public function metas( PaginatorInterface $paginator,Request $request,ManagerRegistry $doctrine, EntityManagerInterface $entityManager, SessionInterface $session, MailerInterface $mailer): Response{$fluxos_abertos = $entityManager->getRepository(Fluxo::class)->fluxosAbertosComMaiorPrazo();$fluxos_mes = $entityManager->getRepository(Fluxo::class)->findMes();$totalFluxos = 0;$clientesUnicos = [];$totalCaixas = 0;$totalDocumentos = 0;$totalImagens = 0;foreach ($fluxos_mes as $fluxo) {$totalFluxos++;// 👇 garante cliente únicoif ($fluxo->getCliente()) {$clienteId = $fluxo->getCliente()->getId();$clientesUnicos[$clienteId] = true;}foreach ($fluxo->getCaixas() as $caixa) {$totalCaixas++;foreach ($caixa->getDocumentos() as $documento) {$totalDocumentos++;$totalImagens += $documento->getQtd();}}}$formatter = new \IntlDateFormatter('pt_BR',\IntlDateFormatter::NONE,\IntlDateFormatter::NONE,'America/Sao_Paulo',\IntlDateFormatter::GREGORIAN,'MMMM');$nomeMes = ucfirst($formatter->format(new \DateTime()));$resumo = ['fluxos' => $totalFluxos,'clientes' => count($clientesUnicos), // ✅ não duplica'caixas' => $totalCaixas,'documentos' => $totalDocumentos,'imagens' => $totalImagens,'nomeMes' => $nomeMes];$a = [];foreach ($fluxos_abertos as $item) {$fluxo = $item[0];$maiorData = $item['prazo'];$cx = 0;$doc = 0;$img = 0;$cliente_id = $fluxo->getCliente()->getId();$cliente = $doctrine->getRepository(Cliente::class)->createQueryBuilder('c')->where('c.id = :id')->setParameter('id', $cliente_id)->getQuery()->getOneOrNullResult();foreach ($fluxo->getCaixas() as $caixas) {$cx++;foreach ($caixas->getDocumentos() as $docs) {$doc++;$img += $docs->getQtd();}}$a[] = ['fluxo' => $fluxo->getId(),'cliente' => $cliente->getNome(),'caixas' => $cx,'documentos' => $doc,'imagens' => $img,'prazo' => $maiorData,];}return $this->render('index/metas_fluxos.html.twig', ['data'=>$a,'resumo'=>$resumo]);}public function configureDashboard(): Dashboard{return Dashboard::new()->setTitle('IndexDoc')->setFaviconPath('./img/icon.png');}public function configureMenuItems(): iterable{// yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');// yield MenuItem::linkToCrud('The Label', 'fas fa-list', EntityClass::class);}}