<?php
session_start();
require("../../database/dbConection.php");
$idUsuarioLogado = $_SESSION['idUsuarioLogado'];

$_SESSION['mostrarDadosPaciente'] = $_POST['dadosPaciente'];
$_SESSION['opcaoRelatorio']       = $_POST['opcaoRelatorio'];

$opcaoRelatorio     = $_POST['opcaoRelatorio'];
$documentoPaciente  = $_POST['documentoPaciente'];
$dataInicial        = $_POST['dataInicial'];
$dataFinal          = $_POST['dataFinal'];
$operadorSistema    = $_POST['operadorSistema']=="todos" ? "" : $_POST['operadorSistema'];
$grupoProcedimento  = $_POST['grupoProcedimento'];
$nomeProcedimento   = $_POST['nomeProcedimento'];
$dadosPaciente      = $_POST['dadosPaciente'];

if($dataInicial!=""){
  $inicioPeriodo  = explode("-",$dataInicial);
  $inicioPeriodo  = $inicioPeriodo[2]."/".$inicioPeriodo[1]."/".$inicioPeriodo[0];
  $fimPeriodo     = explode("-",$dataFinal);
  $fimPeriodo     = $fimPeriodo[2]."/".$fimPeriodo[1]."/".$fimPeriodo[0];
  $_SESSION['periodoSelecionado'] = "<b>PERÍODO ANALISADO: ENTRE ".$inicioPeriodo." E ".$fimPeriodo."</b>";
}else{
  $_SESSION['periodoSelecionado'] = "";
}


//* LIMPAR DADOS TEMPORÁRIOS *//
  $stmLimparDados       = $rsConexao->prepare("DELETE FROM reg_dados_relatorio WHERE id_usuario_relatorio='$idUsuarioLogado'");
  $stmLimparDados       -> execute();
  $stmReiniciaContador  = $rsConexao->prepare("ALTER TABLE reg_dados_relatorio AUTO_INCREMENT=1");
  $stmReiniciaContador  -> execute();  
//***************************//

switch($opcaoRelatorio){
  case "agendamentos":
    $campoFiltroDada        = "reg_tb_solicitacoes.datahora_registroagendamento";
    $campoFiltroUsuario     = "idusuario_registrouagendamento";
    if($operadorSistema==""){
      $_SESSION['funcionarioSelecionado'] = "AGENDADOR SELECIONADO: TODOS";
    }else{
      $buscarAgendador  = $rsConexao->prepare("SELECT nome_usuario FROM reg_tb_usuario WHERE id_usuario='$operadorSistema'");
      $buscarAgendador  ->execute();
      $rsAgendador      = $buscarAgendador->fetch(PDO::FETCH_OBJ);
      $_SESSION['funcionarioSelecionado'] = "AGENDADOR SELECIONADO: ".mb_strtoupper($rsAgendador->nome_usuario);
    }
    case "analises":
    $campoFiltroDada        = "reg_tb_solicitacoes.datahora_analise";
    $campoFiltroUsuario     = "id_usuario_analisou";
    if($operadorSistema==""){
      $_SESSION['funcionarioSelecionado'] = "AGENDADOR SELECIONADO: TODOS";
    }else{
      $buscarAgendador  = $rsConexao->prepare("SELECT nome_usuario FROM reg_tb_usuario WHERE id_usuario='$operadorSistema'");
      $buscarAgendador  ->execute();
      $rsAgendador      = $buscarAgendador->fetch(PDO::FETCH_OBJ);
      $_SESSION['funcionarioSelecionado'] = "AGENDADOR SELECIONADO: ".mb_strtoupper($rsAgendador->nome_usuario);
    }    
  break;
  case "cancelamentos":
    $campoFiltroDada        = "reg_tb_solicitacoes.datahora_cancelamento";
    $campoFiltroUsuario     = "id_usuario_cancelou";
    if($operadorSistema==""){
      $_SESSION['funcionarioSelecionado'] = "OPERADOR SELECIONADO: TODOS";
    }else{
      $buscarAgendador  = $rsConexao->prepare("SELECT nome_usuario FROM reg_tb_usuario WHERE id_usuario='$operadorSistema'");
      $buscarAgendador  ->execute();
      $rsAgendador      = $buscarAgendador->fetch(PDO::FETCH_OBJ);
      $_SESSION['funcionarioSelecionado'] = "OPERADOR SELECIONADO: ".mb_strtoupper($rsAgendador->nome_usuario);
    }
  break;
  case "entregas":
    $campoFiltroDada        = "reg_tb_solicitacoes.datahora_entrega";
    $campoFiltroUsuario     = "id_usuario_entregou";
    if($operadorSistema==""){
      $_SESSION['funcionarioSelecionado'] = "OPERADOR SELECIONADO: TODOS";
    }else{
      $buscarAgendador  = $rsConexao->prepare("SELECT nome_usuario FROM reg_tb_usuario WHERE id_usuario='$operadorSistema'");
      $buscarAgendador  ->execute();
      $rsAgendador      = $buscarAgendador->fetch(PDO::FETCH_OBJ);
      $_SESSION['funcionarioSelecionado'] = "OPERADOR SELECIONADO: ".mb_strtoupper($rsAgendador->nome_usuario);
    }
  break;
  case "solicitacoes":
    $campoFiltroDada    = "reg_tb_solicitacoes.datahora_cadastro";
    $campoFiltroUsuario = "id_usuario_cadastrou";
    if($operadorSistema==""){
      $_SESSION['funcionarioSelecionado'] = "SOLICITANTE SELECIONADO: TODOS";
    }else{
      $buscarAgendador  = $rsConexao->prepare("SELECT nome_usuario FROM reg_tb_usuario WHERE id_usuario='$operadorSistema'");
      $buscarAgendador  ->execute();
      $rsAgendador      = $buscarAgendador->fetch(PDO::FETCH_OBJ);
      $_SESSION['funcionarioSelecionado'] = "SOLICITANTE SELECIONADO: ".mb_strtoupper($rsAgendador->nome_usuario);
    }    
  break;  
}

# ----- PARAMETRIZAÇÃO DA CLÁUSULA WHERE ----- #
$setWhere = "WHERE (reg_tb_solicitacoes.id_solicitacao>0) AND (id_statussolicitacao='1' OR id_statussolicitacao='2')";
$setWhere = $documentoPaciente  == "" ? $setWhere : $setWhere . " AND (tb_paciente.cns_paciente='$documentoPaciente' OR tb_paciente.cpf_paciente='$documentoPaciente')";
$setWhere = $dataInicial        == "" ? $setWhere : $setWhere . " AND (date_format($campoFiltroDada,'%Y-%m-%d') BETWEEN '$dataInicial' AND '$dataFinal')";
$setWhere = $operadorSistema    == "" ? $setWhere : $setWhere . " AND (reg_tb_solicitacoes.$campoFiltroUsuario='$operadorSistema')";
$setWhere = $grupoProcedimento  == "" ? $setWhere : $setWhere . " AND (reg_tb_solicitacoes.id_grupo_procedimento='$grupoProcedimento')";
$setWhere = $nomeProcedimento   == "" ? $setWhere : $setWhere . " AND (reg_tb_solicitacoes.id_procedimento='$nomeProcedimento')";
# ----- -------------------------------- ----- #

if($dadosPaciente=="S"){
  $sqlPegarDadosRelatorio = "SELECT $campoFiltroDada, tb_paciente.nome_paciente, tb_paciente.cns_paciente, tb_paciente.cpf_paciente, 
  TIMESTAMPDIFF(YEAR, tb_paciente.datanasc, NOW()) AS idadePaciente, CONCAT(celular1,' | ',celular2,' | ',celular3) as telefonesPacientes, 
  reg_tb_procedimento.nome_procedimento, reg_tb_usuario.nome_usuario, tb_estabelecimento.nfantasia_estabelecimento,
  '$idUsuarioLogado' AS usuarioRelatorio
  FROM reg_tb_solicitacoes 
  INNER JOIN tb_paciente ON (reg_tb_solicitacoes.id_paciente= tb_paciente.id_paciente) 
  INNER JOIN reg_tb_usuario ON (reg_tb_usuario.id_usuario = reg_tb_solicitacoes.$campoFiltroUsuario)
  INNER JOIN tb_estabelecimento ON (tb_estabelecimento.codigoestabelecimento_cnes = reg_tb_solicitacoes.id_unidade_cadastrou)
  INNER JOIN reg_tb_procedimento ON (reg_tb_solicitacoes.id_procedimento = reg_tb_procedimento.id_procedimento) $setWhere 
  ORDER BY $campoFiltroDada";
  $sqlGerarDadosRelatorio = "INSERT INTO reg_dados_relatorio(datahora_registro, nome_paciente,cns_paciente,cpf_paciente,idade_paciente,telefones_pacientes,nome_procedimento,nome_usuario_dados,unidade_lotacao_usuario,id_usuario_relatorio) $sqlPegarDadosRelatorio";
}else{
  $sqlPegarDadosRelatorio = "SELECT $campoFiltroDada, reg_tb_procedimento.nome_procedimento, reg_tb_usuario.nome_usuario, tb_estabelecimento.nfantasia_estabelecimento, 
  '$idUsuarioLogado' AS usuarioRelatorio
  FROM reg_tb_solicitacoes 
  INNER JOIN reg_tb_usuario ON (reg_tb_usuario.id_usuario = reg_tb_solicitacoes.$campoFiltroUsuario) 
  INNER JOIN tb_estabelecimento ON (tb_estabelecimento.codigoestabelecimento_cnes = reg_tb_solicitacoes.id_unidade_cadastrou) 
  INNER JOIN reg_tb_procedimento ON (reg_tb_solicitacoes.id_procedimento = reg_tb_procedimento.id_procedimento) $setWhere 
  ORDER BY $campoFiltroDada";
  $sqlGerarDadosRelatorio = "INSERT INTO reg_dados_relatorio(datahora_registro, nome_procedimento,nome_usuario_dados,unidade_lotacao_usuario,id_usuario_relatorio) $sqlPegarDadosRelatorio";  
}

$stmGeraRelatorio = $rsConexao->prepare($sqlGerarDadosRelatorio);
$stmGeraRelatorio ->execute();

if($stmGeraRelatorio->rowCount()){
  echo "dados-gerados-comsucesso";
}else{
  echo "sem-dados-encontrados";
}

?>