<?php
session_start();
if (!isset($_SESSION['idUsuarioLogado']) || $_SESSION['idPerfilLogado'] != 1) {
  header("location: ../sair.php");
}
require("../../database/dbConection.php");
$idUsuarioLogado    = $_SESSION['idUsuarioLogado'];
$nomeUsuarioLogado  = $_SESSION['nomeUsuarioLogado'];
$dataHoje           = date("d/m/Y");
$dataHojeAgenda     = date("Y-m-d");
$totalProcedimentos = 0;

$authorizationID  = explode("##",base64_decode($_GET['authorization']));
$dataAgenda       = $authorizationID[1];

ob_start();

$sqlGrupoVagas = "SELECT reg_tb_agenda.id_agenda,
date_format(CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0')),'%d/%m/%Y') AS dataVaga,
date_format(CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0')),'%Y-%m-%d') AS dataVagaReferencia,
reg_tb_procedimento_grupo.nome_grupo_procedimento,
reg_tb_agenda_sub.dia_agenda,
reg_tb_agenda_sub.mes_agenda,
reg_tb_agenda_sub.ano_agenda,
reg_tb_agenda.id_grupo_procedimento,
IFNULL(SUM(reg_tb_agenda_sub.quantidadevagas_pvez) - SUM(reg_tb_agenda_sub.quantidadegendada_pvez),0) as saldoVagas,
DATEDIFF(date_format(CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0')),'%Y-%m-%d'),CURDATE()) AS diasRestantes
FROM reg_tb_agenda
INNER JOIN reg_tb_agenda_sub ON (reg_tb_agenda_sub.id_agenda = reg_tb_agenda.id_agenda)
INNER JOIN reg_tb_procedimento_grupo ON (reg_tb_agenda.id_grupo_procedimento = reg_tb_procedimento_grupo.id_grupo_procedimento)
WHERE (reg_tb_agenda.id_grupo_procedimento!=1)
AND (reg_tb_agenda_sub.status_agenda = 'A')
AND (reg_tb_agenda.status_agenda = 'A')
AND (reg_tb_agenda_sub.unidade_afastada = 'N')
AND (reg_tb_agenda_sub.profissional_afastado = 'N')
GROUP BY diasRestantes, reg_tb_agenda_sub.id_agenda
HAVING (SUM(reg_tb_agenda_sub.quantidadevagas_pvez)-SUM(reg_tb_agenda_sub.quantidadegendada_pvez)>0 
AND CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0'))>='$dataHoje') 
ORDER BY CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0'))";
$stmGrupoVagas = $rsConexao->prepare($sqlGrupoVagas);
$stmGrupoVagas->execute();
echo "
<table style='width:100%'>
<tr>
  <td>";
      $sqlGrupoVagas = "SELECT reg_tb_agenda.id_agenda,
      date_format(CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0')),'%d/%m/%Y') AS dataVaga,
      date_format(CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0')),'%Y-%m-%d') AS dataVagaReferencia,
      reg_tb_procedimento_grupo.nome_grupo_procedimento,
      reg_tb_agenda_sub.dia_agenda,
      reg_tb_agenda_sub.mes_agenda,
      reg_tb_agenda_sub.ano_agenda,
      reg_tb_agenda.id_grupo_procedimento,
      IFNULL(SUM(reg_tb_agenda_sub.quantidadevagas_pvez) - SUM(reg_tb_agenda_sub.quantidadegendada_pvez),0) as saldoVagas,
      DATEDIFF(date_format(CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0')),'%Y-%m-%d'),CURDATE()) AS diasRestantes
      FROM reg_tb_agenda
      INNER JOIN reg_tb_agenda_sub ON (reg_tb_agenda_sub.id_agenda = reg_tb_agenda.id_agenda)
      INNER JOIN reg_tb_procedimento_grupo ON (reg_tb_agenda.id_grupo_procedimento = reg_tb_procedimento_grupo.id_grupo_procedimento)
      WHERE (reg_tb_agenda.id_grupo_procedimento!=1)
      AND (reg_tb_agenda_sub.status_agenda = 'A')
      AND (reg_tb_agenda.status_agenda = 'A')
      AND (reg_tb_agenda_sub.unidade_afastada = 'N')
      AND (reg_tb_agenda_sub.profissional_afastado = 'N')
      GROUP BY diasRestantes, reg_tb_agenda_sub.id_agenda
      HAVING (SUM(reg_tb_agenda_sub.quantidadevagas_pvez)-SUM(reg_tb_agenda_sub.quantidadegendada_pvez)>0 
      AND CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0'))='$dataAgenda') 
      ORDER BY CONCAT(reg_tb_agenda_sub.ano_agenda,'-',reg_tb_agenda_sub.mes_agenda,'-',LPAD(reg_tb_agenda_sub.dia_agenda, 2, '0'))";
      $stmGrupoVagas = $rsConexao->prepare($sqlGrupoVagas);
      $stmGrupoVagas->execute();
      
      if ($stmGrupoVagas->rowCount() > 0) {
        $rsGrupoVagas = $stmGrupoVagas->fetchAll(PDO::FETCH_ASSOC);
        foreach ($rsGrupoVagas as $fieldGrupoVagas) {
          $idAgendaGrupo    = $fieldGrupoVagas['id_agenda'];
          $dataVagaGrupo    = $fieldGrupoVagas['dataVaga'];
          $dataVagaReferencia = $fieldGrupoVagas['dataVagaReferencia'];
          $diasRestantes    = $fieldGrupoVagas['diasRestantes'];
          $saldoVagas       = $fieldGrupoVagas['saldoVagas'];
          $textoDiasGrupo   = "(DIAS RESTANTES PARA EXPIRAR: " . $fieldGrupoVagas['diasRestantes'] . ")";

          $dadosAutorizaAcessoGrupo   = date("H:i:s d/m/Y") . "##" . $dataVagaReferencia;
          $encriptoAutorizationGrupo  = base64_encode($dadosAutorizaAcessoGrupo);
          $abrirRelatorioGrupo        = 'onClick="' . "window.open('relatorios/relatoriovagas_disponiveis_gp?authorization=$encriptoAutorizationGrupo')" . '"';

          echo "<table width='100%' class='tabela-dados-relatorio' border-collapse: collapse;>
          <tr>
            <td style='line-height:20px; font-size:11pt; padding:5px; background-color: #e9e9e9; border: 1px solid; border-collapse: collapse;'>
              <b>DATA PARA ATENDIMENTO: $dataVagaGrupo -> 
              VAGAS DISPONÍVEIS: $saldoVagas - $textoDiasGrupo
            </td>
          </tr>
          <tr>
            <td>";
              $dadosAutorizaAcesso  = date("H:i:s d/m/Y") . "##" . $dataVagaGrupo;
              $encriptoAutorization = base64_encode($dadosAutorizaAcesso);
              $abrirRelatorio = 'onClick="' . "window.open('relatorios/relatoriovagas_disponiveis?authorization=$encriptoAutorization')" . '"';
              $sqlProcedimentoGrupo = "SELECT ucase(reg_tb_procedimento.nome_procedimento) AS nomeProcedimento,
              ucase(tb_estabelecimento.nfantasia_estabelecimento) AS nomeEstabelecimento,
              ucase(tb_profissional.nome_profissional) AS nomeProfissional
              FROM reg_tb_agenda
              INNER JOIN tb_estabelecimento ON (reg_tb_agenda.codigoestabelecimento_cnes = tb_estabelecimento.codigoestabelecimento_cnes)
              INNER JOIN reg_tb_agenda_grupoprocedimento ON (reg_tb_agenda_grupoprocedimento.id_agenda = reg_tb_agenda.id_agenda)
              INNER JOIN reg_tb_procedimento ON (reg_tb_procedimento.id_procedimento = reg_tb_agenda_grupoprocedimento.id_procedimento)
              INNER JOIN tb_profissional ON (reg_tb_agenda.codigoprofissional_cnes = tb_profissional.codigoprofissional_cnes)
              WHERE reg_tb_agenda_grupoprocedimento.id_agenda='$idAgendaGrupo'
              ORDER BY reg_tb_procedimento.nome_procedimento ASC";

              $stmProcedimentoGrupo = $rsConexao->prepare($sqlProcedimentoGrupo);
              $stmProcedimentoGrupo -> execute();
              if($stmProcedimentoGrupo->rowCount()>0){
                $rsProcedimentoGrupo  = $stmProcedimentoGrupo->fetchAll(PDO::FETCH_ASSOC);
                $contadorLinha = $stmProcedimentoGrupo->rowCount();
                echo "<table width='100%' style='margin-top:-1px; border-collapse: collapse;'>
                <thead style='font-size:10pt; background:#99db99; color:#000;'>
                  <tr>
                    <th style='padding:5px; border:1px #000 solid; width:40%'>NOME DO PROCEDIMENTO</th>
                    <th style='padding:5px; border:1px #000 solid; width:30%'>UNIDADE EXECUTANTE</th>
                    <th style='padding:5px; border:1px #000 solid; width:30%'>PROFISSIONAL EXECUTANTE</th>
                  </tr>
                </thead>
                <tbody>";
                foreach($rsProcedimentoGrupo AS $fieldProcedimentoGrupo){
                  $nomeProcedimentoGrupo    = $fieldProcedimentoGrupo['nomeProcedimento'];
                  $nomeEstabelecimentoGrupo = $fieldProcedimentoGrupo['nomeEstabelecimento'];
                  $nomeProfissionalGrupo    = $fieldProcedimentoGrupo['nomeProfissional'];
                  
                  echo "<tr>
                    <td style='line-height:15px; font-size:8pt; padding:5px; border:1px solid gray;width:40%; '>$nomeProcedimentoGrupo</td>
                    <td style='line-height:20px; font-size:8pt; padding:5px; border:1px solid gray;width:30%'>$nomeEstabelecimentoGrupo</td>
                    <td style='line-height:20px; font-size:8pt; padding:5px; border:1px solid gray;width:30%'>$nomeProfissionalGrupo</td>
                  </tr>";
                }
                echo "</tbody></table>
                </td>
              </tr>
              </table><br>";
              }
        }
      }
    ?>
  </td>
</tr>
</table>

<?php

//require_once __DIR__ . '../../../mpdf/autoload.php';
require_once __DIR__ . '../../../../lib_sistemas/mpdf8/vendor/autoload.php';
$mpdf = new \Mpdf\Mpdf([
  'mode' => 'utf-8',
  'format' => 'A4',
  'orientation' => 'L',
  'margin_header' => 10,
  'margin_top' => 30,
  'default_font' => 'tahoma'
]);

$html = ob_get_clean();
$mpdf->mirrorMargins = 1;
$stylesheet = file_get_contents('relatorio.css');
$mpdf->WriteHTML($stylesheet, 1);

$header = "
  <table align='center' class='tb_header'>
    <tr>
      <td class='logo-rel'>
        <img src='../css/images/logo-dark.png' height='50px'>
      </td>
		  <td class='titulo_relatorio' align='center' style='font-size:10pt'>
        RELATÓRIO DE VAGAS DISPONÍVEIS<br>
      </td>
      <td class='info-emissao-relatorio'>
        EMISSÃO : $dataHoje<br>
        IMPRESSO POR : $nomeUsuarioLogado<br>
      </td>
    </tr>
    </table>
	  <br>
  <div class='sub_titulo_rel'></div><br>";

$headerE = $header;
$footer = "Desenvolvido por: Expansão Tecnologia e Consultoria||Página : {PAGENO} de {nb}";
$footerE = $footer;

$mpdf->SetHTMLHeader($header);
$mpdf->SetHTMLHeader($headerE, 'E');
$mpdf->SetFooter($footer);
$mpdf->SetFooter($footerE, 'E');
$mpdf->SetTitle('Relatório de Vagas');
$mpdf->WriteHTML($html);
$mpdf->Output('RelatorioVagas.pdf', 'I');
exit;
