<?php
session_start();
require("../../database/dbConection.php");
require("../include/funcoes_gsaudereg.php");

$UsuarioLogado  = $_SESSION['idUsuarioLogado'];
$htmlTabela     = "";
$htmlTFoot      = "";

$unidadeSaude           = $_POST['unidadeSaude'];
$profissinoalSaude      = $_POST['profissinoalSaude'];
$grupoProcedimento      = $_POST['grupoProcedimento'];
$idProcedimento         = $_POST['nomeProcedimento'];
$mesAgenda              = $_POST['mesAgenda'];
$anoAgenda              = $_POST['anoAgenda'];
$statusAgenda           = $_POST['statusAgenda'];
$disponibilidadeAgenda  = $_POST['disponibilidadeAgenda'];

$selectedAtiva    = "";
$selectedInativa  = "";
$selectedEspirada = "";
# -- criar condição where para os itens selecionados --#
$setWhare = " WHERE (reg_tb_agenda.id_agenda>0) AND (reg_tb_agenda.codigoestabelecimento_cnes='$unidadeSaude') AND (reg_tb_agenda.ano_agenda='$anoAgenda')";
$setWhare = $profissinoalSaude  == "" ? $setWhare : $setWhare . " AND (reg_tb_agenda.codigoprofissional_cnes='$profissinoalSaude')";
$setWhare = $grupoProcedimento  == "" ? $setWhare : $setWhare . " AND (reg_tb_agenda.id_grupo_procedimento='$grupoProcedimento')";
$setWhare = $idProcedimento     == "" ? $setWhare : $setWhare . " AND (reg_tb_agenda.id_procedimento='$idProcedimento')";
$setWhare = $mesAgenda          == "" ? $setWhare : $setWhare . " AND (reg_tb_agenda.mes_agenda='$mesAgenda')";
$setWhare = $statusAgenda       == "" ? $setWhare : $setWhare . " AND (reg_tb_agenda.status_agenda='$statusAgenda')";
$setWhare = $disponibilidadeAgenda  == "" ? $setWhare : $setWhare . " AND (reg_tb_agenda.disponibilidade_agenda='$disponibilidadeAgenda')";

$sqlAgendas = "SELECT 
  reg_tb_agenda.id_agenda,
  tb_profissional.nome_profissional,
  rl_cbo.nome_cbo,
  reg_tb_agenda.mes_agenda,
  reg_tb_agenda.horario_inicioagenda,
  reg_tb_agenda.disponibilidade_agenda,
  date_format(reg_tb_agenda.datahora_cadastro,'%d/%m/%Y %H:%i') as dataHoraInclusao,
  date_format(reg_tb_agenda.datahora_alteracao,'%d/%m/%Y %H:%i') as dataHoraAlteracao,
  ucase(reg_tb_procedimento_grupo.nome_grupo_procedimento) as nomeGrupoProcedimento,
  ucase(reg_tb_procedimento.nome_procedimento) as nomeProcedimento,
  reg_tb_agenda.status_agenda,
  tb_usuario_cadastrou.nome_usuario AS usuarioCadastrou,
  tb_usuario_alterou.nome_usuario AS usuarioAlterou
  FROM reg_tb_agenda
  INNER JOIN reg_tb_procedimento_grupo ON (reg_tb_agenda.id_grupo_procedimento = reg_tb_procedimento_grupo.id_grupo_procedimento)
  LEFT OUTER JOIN reg_tb_procedimento ON (reg_tb_agenda.id_procedimento=reg_tb_procedimento.id_procedimento)  
  INNER JOIN tb_profissional ON (reg_tb_agenda.codigoprofissional_cnes = tb_profissional.codigoprofissional_cnes)
  INNER JOIN tb_profissional_vinculo ON (tb_profissional_vinculo.codigoprofissional_cnes = tb_profissional.codigoprofissional_cnes)
  INNER JOIN rl_cbo ON (tb_profissional_vinculo.codigo_cbo = rl_cbo.codigo_cbo) 
  INNER JOIN reg_tb_usuario tb_usuario_cadastrou ON (reg_tb_agenda.id_usuario_cadastrou=tb_usuario_cadastrou.id_usuario)
  LEFT OUTER JOIN reg_tb_usuario tb_usuario_alterou ON (reg_tb_agenda.id_usuario_alterou=tb_usuario_alterou.id_usuario)
  $setWhare 
  GROUP BY tb_profissional.nome_profissional, reg_tb_agenda.mes_agenda, reg_tb_agenda.horario_inicioagenda,reg_tb_agenda.id_agenda
  ORDER BY reg_tb_agenda.id_agenda";

$stmAgenda  = $rsConexao->prepare($sqlAgendas);
$stmAgenda->execute();

if ($stmAgenda->rowCount() > 0) {
  $rsAgenda = $stmAgenda->fetchAll(PDO::FETCH_ASSOC);
  $totalVagasPVes     = 0;
  $totalVagasRetorno  = 0;
  $totalVagasReserva  = 0;
  $vagasAlocadas      = 0;
  $vagasUsadas        = 0;
  $saldoVagas         = 0;
  $somaSaldoVagas     = 0;
  $contaRegistro      = 0;

  foreach ($rsAgenda as $fieldAgenda) {
    $idAgenda           = $fieldAgenda['id_agenda'];
    $codigoAgenda       = str_pad($idAgenda, 5, "0", STR_PAD_LEFT);
    $nomeProfissional   = mb_strtoupper($fieldAgenda['nome_profissional']);
    $nomeProcedimento   = $fieldAgenda['nomeProcedimento'] != "" ? $fieldAgenda['nomeProcedimento'] : $fieldAgenda['nomeGrupoProcedimento'];
    $mesAgenda          = $gerarNomeMes[$fieldAgenda['mes_agenda']];
    $horarioAgenda      = $fieldAgenda['horario_inicioagenda'];
    $dataHoraInclusao   = $fieldAgenda['dataHoraInclusao'];
    $usuarioCadastrou   = explode(" ",$fieldAgenda['usuarioCadastrou']);
    $quemCadastrou      = $usuarioCadastrou[0];
    $quemCadastrou      = "<br><font style='color:green; font-weight:bold'>Por: $quemCadastrou</font>";
    if($fieldAgenda['usuarioAlterou']!=""){
      $usuarioAlterou     = explode(" ",$fieldAgenda['usuarioAlterou']);
      $quemAlterou        = $usuarioAlterou[0];
      $quemAlterou        = "<br><font style='color:green; font-weight:bold'>Por: $quemAlterou</font>";
    }else{
      $quemAlterou = "";
    }
    $dataHoraAlteracao  = $fieldAgenda['dataHoraAlteracao'] != "" ? $fieldAgenda['dataHoraAlteracao'] : "";
    $exibirStatusAgenda = $converterStatusAgenda[$fieldAgenda['status_agenda']];
    $statusAgendaCombo  = $fieldAgenda['status_agenda'];
    $disponibilidadeAgenda = $fieldAgenda['disponibilidade_agenda']=="G" ? "GERAL" : "LOCAL";
    $disponibilidade_agenda = $fieldAgenda['disponibilidade_agenda'];
    #-- pegar quantidade de vagas ofertadas na agenda --#
    $sqlVagas = "SELECT SUM(quantidadevagas_pvez) AS vagasPVez, SUM(reg_tb_agenda_sub.quantidadevagas_retorno) AS vagasRetorno, SUM(reg_tb_agenda_sub.quantidadevagas_reserva) AS vagasReserva FROM reg_tb_agenda_sub WHERE id_agenda='$idAgenda' GROUP BY id_agenda";
    $stmVagas = $rsConexao->prepare($sqlVagas);
    $stmVagas->execute();
    $rsVagas  = $stmVagas->fetch(PDO::FETCH_OBJ);
    $vagasPVez    = $rsVagas->vagasPVez     != "" ? $rsVagas->vagasPVez : 0;
    $vagasRetorno = $rsVagas->vagasRetorno  != "" ? $rsVagas->vagasRetorno : 0;
    $vagasReserva = $rsVagas->vagasReserva  != "" ? $rsVagas->vagasReserva : 0;

    #-- totalizar quantitativos de vagas --#
    $totalVagasPVes     = $totalVagasPVes + $vagasPVez;
    $totalVagasRetorno  = $totalVagasRetorno + $vagasRetorno;
    $totalVagasReserva  = $totalVagasReserva + $vagasReserva;

    # -- comando para abrir agenda pesquisada
    $concatenaConteudoEncode  = base64_encode($idAgenda . "#" . $unidadeSaude . "#" . $profissinoalSaude . "#" . $mesAgenda . "#" . $statusAgenda);
    $comandoConsultar         = 'onClick="window.open(' . "'agenda_configurar?authorization=$concatenaConteudoEncode')" . '"';
    $botaoComandoConsultar    = "<i class='icofont icofont-search nova_fonte_blue' title='Visualizar agenda.' $comandoConsultar></i>&nbsp;";
    $comandoExcluirAgenda     = '"excluirAgenda(' . "'$idAgenda')" . '"';
    $botaoExcluirAgenda       = "<i class='icofont icofont-close-squared nova_fonte_delete' title='Excluir agenda.' onclick=$comandoExcluirAgenda></i>&nbsp;";
    # -- definir cor da lista da agenda -- #
    if ($exibirStatusAgenda == "INATIVA") {
      $setCorLinha = "style='background-color:#fcdfdf !important; color: #700000'";
    } else if ($exibirStatusAgenda == "EXPIRADA") {
      $setCorLinha = "style='background-color:#e6ffe2 !important;'";
    } else {
      $setCorLinha = "";
    }

    # ----- #
    $sqlSaldoVaga = "SELECT 
        CASE 
          WHEN DAYOFWEEK(diaSemanaAgenda) = 1 THEN 'Dom'
          WHEN DAYOFWEEK(diaSemanaAgenda) = 2 THEN 'Seg'
          WHEN DAYOFWEEK(diaSemanaAgenda) = 3 THEN 'Ter'
          WHEN DAYOFWEEK(diaSemanaAgenda) = 4 THEN 'Qua'
          WHEN DAYOFWEEK(diaSemanaAgenda) = 5 THEN 'Qui'
          WHEN DAYOFWEEK(diaSemanaAgenda) = 6 THEN 'Sex'
          WHEN DAYOFWEEK(diaSemanaAgenda) = 7 THEN 'Sáb'
          END AS siglaDiaSemana,
          IFNULL(SUM(totalVagasUsadas), 0) AS totalVagasUsadas,          
          IFNULL(SUM(totalVagasAlocadas), 0) AS totalVagasAlocadas
          FROM (
          SELECT 
          IFNULL(SUM(quantidadevagas_pvez),0)+IFNULL(SUM(quantidadevagas_retorno),0)+IFNULL(SUM(quantidadevagas_reserva),0) as totalVagasAlocadas,
          IFNULL(SUM(quantidadegendada_pvez),0)+IFNULL(SUM(quantidadeagendada_retorno),0)+IFNULL(SUM(quantidadeagendada_reserva),0) as totalVagasUsadas,
          CONCAT(ano_agenda,'-',lpad(mes_agenda, 2, '0'),'-',lpad(dia_agenda, 2, '0')) AS diaSemanaAgenda
          FROM reg_tb_agenda_sub tb_AgendaSub
          WHERE id_agenda='$idAgenda' 
          GROUP BY (CONCAT(ano_agenda,'-',lpad(mes_agenda, 2, '0'),'-',lpad(dia_agenda, 2, '0')))
          ) As dadosAgenda
          GROUP BY siglaDiaSemana";
    $stmSaldoVaga = $rsConexao->prepare($sqlSaldoVaga);
    $stmSaldoVaga->execute();
    $rsSaldoVaga  = $stmSaldoVaga->fetchAll(PDO::FETCH_ASSOC);
    $concatenaSaldo = "";
    foreach ($rsSaldoVaga as $fieldSaldoVaga) {
      $contaRegistro  = $contaRegistro + 1;
      $vagasAlocadas  = $fieldSaldoVaga['totalVagasAlocadas'];
      $vagasUsadas    = $fieldSaldoVaga['totalVagasUsadas'];
      $siglaDiaSemana = $fieldSaldoVaga['siglaDiaSemana'];
      $saldoVagas     = intval($fieldSaldoVaga['totalVagasAlocadas']) - intval($fieldSaldoVaga['totalVagasUsadas']);
      $saldoVagas     = $saldoVagas >= 0 ? $saldoVagas : 0;
      $concatenaSaldo = $concatenaSaldo . "$siglaDiaSemana ($saldoVagas/$vagasAlocadas)<br>";
      $somaSaldoVagas = $somaSaldoVagas + (intval($fieldSaldoVaga['totalVagasAlocadas']) - intval($fieldSaldoVaga['totalVagasUsadas']));
    }
    # ----- #
    switch ($statusAgendaCombo) {
      case "A":
        $selectedAtiva    = "selected";
        $selectedInativa  = "";
        $selectedEspirada = "";
        $desativaSelect   = "";
        break;
      case "I":
        $selectedAtiva    = "";
        $selectedInativa  = "selected";
        $selectedEspirada = "";
        $desativaSelect   = "";
        break;
      case "E":
        $selectedAtiva    = "";
        $selectedInativa  = "";
        $selectedEspirada = "selected";
        $desativaSelect   = "disabled";
        break;
    }
    $atualizaStatus = 'onChange=' . "atualizaStatusAgenda(this.value,'$idAgenda')";
    if($statusAgendaCombo=="E"){
      $selectStatusAgenda = "<select id='cboStatusAgenda' class='form-control-personalizado' $atualizaStatus $desativaSelect>
        <option value='A' $selectedAtiva>ATIVA</option>
        <option value='I' $selectedInativa>INATIVA</option>
        <option value='E' $selectedEspirada>EXPIRADA</option>
      </select>";
    }else{
      $selectStatusAgenda = "<select id='cboStatusAgenda' class='form-control-personalizado' $atualizaStatus>
        <option value='A' $selectedAtiva>ATIVA</option>
        <option value='I' $selectedInativa>INATIVA</option>
      </select>";
    }
    //$exibirStatusAgenda
    $htmlTabela .= "<tr $setCorLinha>
        <td style='padding:10px' align='center'>
          $botaoComandoConsultar
          $botaoExcluirAgenda   
        </td>
        <td style='padding:1px' align='center'>
          $selectStatusAgenda
        </td>
        <td style='padding:10px; padding:5px'>
          $nomeProfissional<br><font style='font-size:7pt; color:#0a7ac5'><b>($nomeProcedimento) - $idAgenda</b></font>
        </td>
        <td style='padding:10px' >$mesAgenda</td>
        <td style='padding:10px' align='center'>$horarioAgenda</td>
        <td style='padding:10px' align='center'>$vagasPVez</td>
        <td style='padding:10px' align='center'>$vagasRetorno</td>
        <td style='padding:10px' align='center'>$vagasReserva</td>
        <td style='padding:10px; font-size:8pt' align='center'><b>$concatenaSaldo</b></td>
        <td style='padding:10px' align='center'>$disponibilidadeAgenda</td>
        <td style='padding:10px' align='center'>$dataHoraInclusao $quemCadastrou</td>
        <td style='padding:10px' align='center'>$dataHoraAlteracao $quemAlterou</td>
      </tr>";
  }
  $totalVagasPVes     = number_format($totalVagasPVes, 0, "", ".");
  $totalVagasRetorno  = number_format($totalVagasRetorno, 0, "", ".");
  $totalVagasReserva  = number_format($totalVagasReserva, 0, "", ".");
  $totalVagasGeral    = number_format($totalVagasPVes + $totalVagasRetorno + $totalVagasReserva, 0, "", ".");
  $htmlTFoot  = "<tr>
    <th colspan='5' style='padding:8px'>Total de vagas alocadas de acordo com a pesquisa:</th>
    <th style='text-align:center;padding:8px'>$totalVagasPVes</th>
    <th style='text-align:center;padding:8px'>$totalVagasRetorno</th>
    <th style='text-align:center;padding:8px'>$totalVagasReserva</th>
    <th colspan='4' style='background-color:#046b97; color:#fff;padding:8px'>Total : $somaSaldoVagas / $totalVagasGeral</th>
  </tr>";
  echo "$htmlTabela###$htmlTFoot";
} else {
  $htmlTFoot  = "<tr>
      <th colspan='5' style='padding:8px'>Total de vagas alocadas de acordo com a pesquisa:</th>
      <th style='text-align:center;padding:8px'>0</th>
      <th style='text-align:center;padding:8px'>0</th>
      <th style='text-align:center;padding:8px'>0</th>
      <th colspan='4' style='background-color:#046b97; color:#fff;padding:8px'>Total : 0</th>
    </tr>";
  echo "semRegistros###$htmlTFoot";
}
