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

# -- variáveis da listagem de vagas
$htmlRetorno          = "";
$codigoUnidadeHeader  = "";
$contadorUnidades     = 0;
$styleMarginTop       = "";
$setCorlinhaData      = "";
$dataAgendaCor        = "";
$contadorLinhasVagas  = 0;
$idProcedimento       = $_POST['idProcedimento'];
$idGrupoProcedimento  = $_POST['idGrupoProcedimento'];
$tipoVaga             = $_POST['tipoVaga'];

$stmAgendaProcedimento  = $rsConexao->prepare("SELECT COUNT(id_agenda_sub) AS temProcedimento FROM reg_tb_agenda_sub WHERE id_procedimento='$idProcedimento'");
$stmAgendaProcedimento  -> execute();
$rsAgendaProcedimento   = $stmAgendaProcedimento->fetch(PDO::FETCH_OBJ);

switch($tipoVaga){
  case "PVez":
    $whareTipoVaga      = "AND (quantidadevagas_pvez-quantidadegendada_pvez)>0 ";
    $complementoSQLVagaDisponivel = " (reg_tb_agenda_sub.quantidadevagas_pvez-reg_tb_agenda_sub.quantidadegendada_pvez) AS vagasDiponiveis ";
    $whareTipoVagaDisponivel  = "AND (quantidadevagas_pvez>0 AND quantidadevagas_pvez IS NOT NULL) AND (quantidadevagas_pvez-quantidadegendada_pvez)>0 ";
    $descricaoVagasDiponiveis = "1ª Vez - disponível";
  break;
  case "retorno":
    $whareTipoVaga      = "AND (quantidadevagas_retorno-quantidadeagendada_retorno)>0";
    $complementoSQLVagaDisponivel = " (reg_tb_agenda_sub.quantidadevagas_retorno-reg_tb_agenda_sub.quantidadeagendada_retorno) AS vagasDiponiveis ";
    $whareTipoVagaDisponivel  = "AND (quantidadevagas_retorno>0 AND quantidadeagendada_retorno IS NOT NULL) AND (quantidadevagas_retorno-quantidadeagendada_retorno)>0 ";
    $descricaoVagasDiponiveis = "Retorno - disponível";
  break;
  case "reserva":
    $whareTipoVaga      = "AND (quantidadevagas_reserva-quantidadeagendada_reserva)>0 ";
    $complementoSQLVagaDisponivel = " (reg_tb_agenda_sub.quantidadevagas_reserva-reg_tb_agenda_sub.quantidadeagendada_reserva) AS vagasDiponiveis ";
    $whareTipoVagaDisponivel  = "AND (quantidadevagas_reserva>0 AND quantidadeagendada_reserva IS NOT NULL) AND (quantidadevagas_reserva-quantidadeagendada_reserva)>0 ";    
    $descricaoVagasDiponiveis = "Reserva - disponível";
  break;
}

if($rsAgendaProcedimento->temProcedimento>0){
  $preparaWhere = "WHERE (reg_tb_agenda_sub.id_procedimento='$idProcedimento') ";
}else{
  $preparaWhere = "WHERE (reg_tb_agenda_sub.id_grupo_procedimento='$idGrupoProcedimento') ";
}
  $sqlUnidadesVagas = "SELECT reg_tb_agenda_sub.id_agenda_sub,
  reg_tb_agenda.codigoestabelecimento_cnes,
  ucase(tb_estabelecimento.nfantasia_estabelecimento) AS nomeUnidade
  FROM reg_tb_agenda
  INNER JOIN tb_estabelecimento ON (reg_tb_agenda.codigoestabelecimento_cnes=tb_estabelecimento.codigoestabelecimento_cnes)
  INNER JOIN reg_tb_agenda_sub ON (reg_tb_agenda_sub.id_agenda = reg_tb_agenda.id_agenda)
  $preparaWhere
  $whareTipoVaga
  AND (reg_tb_agenda.status_agenda='A')
  AND (reg_tb_agenda_sub.profissional_afastado='N')
  GROUP BY reg_tb_agenda.codigoestabelecimento_cnes
  ORDER BY tb_estabelecimento.nfantasia_estabelecimento";
  $stmUnidadesVagas  = $rsConexao->prepare($sqlUnidadesVagas);
  $stmUnidadesVagas  -> execute();

if($stmUnidadesVagas->rowCount()>0){
  
  $rsUnidadesVagas = $stmUnidadesVagas->fetchAll(PDO :: FETCH_ASSOC);
  foreach($rsUnidadesVagas AS $fieldUnidade){
    $codigoUnidade    = $fieldUnidade['codigoestabelecimento_cnes'];
    $nomeUnidade      = $fieldUnidade['nomeUnidade'];    
    $unidadeWhere     = $fieldUnidade['codigoestabelecimento_cnes'];
    if($fieldUnidade['codigoestabelecimento_cnes'] != $codigoUnidadeHeader){      
      $contadorUnidades = $contadorUnidades+1;
      if($contadorUnidades>1){
        $styleMarginTop = "style='margin-top:-22px !important;'";
      }
      $htmlRetorno .= "<div id='accordionWrap$contadorUnidades' $styleMarginTop>
      <div class='card collapse-icon accordion-icon-rotate;'>
        <div id='heading42' class='card-header bg-blue' style='padding:10px !important'>
          <a data-toggle='collapse' data-parent='#accordionWrap$contadorUnidades' href='#acordProcedimentos$contadorUnidades' aria-expanded='false' aria-controls='acordProcedimentos$contadorUnidades' class='card-title lead white collapsed'>
            <i class='icofont icofont-hospital'></i> <b>$nomeUnidade</b>
          </a>
        </div>
        <div id='acordProcedimentos$contadorUnidades' role='tabpanel' aria-labelledby='heading42' class='border-blue card-collapse collapse' aria-expanded='false'>
          <div class='card-content'>
            <div class='card-body' style='padding:10px !important; font-weight: bold;'>
              <table>";
                $stmAgendaGrupo = $rsConexao->prepare("SELECT COUNT(id_agenda_sub) AS temProcedimento FROM reg_tb_agenda_sub WHERE id_procedimento='$idProcedimento'");
                $stmAgendaGrupo -> execute();
                $rsAgendaGrupo  = $stmAgendaGrupo->fetch(PDO::FETCH_OBJ);
                if($rsAgendaGrupo->temProcedimento>0){
                  $sqlListarVagas = "SELECT reg_tb_agenda_sub.id_agenda_sub, 
                    reg_tb_agenda.id_agenda,
                    reg_tb_agenda.codigoestabelecimento_cnes,
                    reg_tb_agenda.status_agenda,
                    concat(lpad(reg_tb_agenda_sub.dia_agenda,2,'0'),'/',lpad(reg_tb_agenda_sub.mes_agenda,2,'0'),'/',reg_tb_agenda_sub.ano_agenda) as dataAgenda, 
                    concat(reg_tb_agenda_sub.ano_agenda,'-',lpad(reg_tb_agenda_sub.mes_agenda,2,'0'),'-',lpad(reg_tb_agenda_sub.dia_agenda,2,'0')) as diaSemana, 
                    reg_tb_agenda_sub.horario_inicioagenda,
                    ucase(tb_profissional.nome_profissional) AS nomeProfissinoal, 
                    $complementoSQLVagaDisponivel
                    FROM reg_tb_agenda
                    INNER JOIN tb_profissional ON (reg_tb_agenda.codigoprofissional_cnes = tb_profissional.codigoprofissional_cnes)
                    INNER JOIN reg_tb_agenda_sub ON (reg_tb_agenda_sub.id_agenda = reg_tb_agenda.id_agenda) 
                    WHERE (reg_tb_agenda_sub.id_procedimento='$idProcedimento')
                    AND (reg_tb_agenda.codigoestabelecimento_cnes = '$unidadeWhere')
                    AND (reg_tb_agenda.status_agenda = 'A')
                    AND (reg_tb_agenda_sub.profissional_afastado='N')
                    $whareTipoVagaDisponivel
                    ORDER BY concat(reg_tb_agenda_sub.ano_agenda,'-',lpad(reg_tb_agenda_sub.mes_agenda,2,'0'),'-',lpad(reg_tb_agenda_sub.dia_agenda,2,'0')) ASC,
                    reg_tb_agenda_sub.horario_inicioagenda ASC";
                }else{
                  $sqlListarVagas = "SELECT reg_tb_agenda_sub.id_agenda_sub, 
                  reg_tb_agenda.id_agenda,
                  reg_tb_agenda.codigoestabelecimento_cnes,
                  reg_tb_agenda.status_agenda,
                  concat(lpad(reg_tb_agenda_sub.dia_agenda,2,'0'),'/',lpad(reg_tb_agenda_sub.mes_agenda,2,'0'),'/',reg_tb_agenda_sub.ano_agenda) as dataAgenda, 
                  concat(reg_tb_agenda_sub.ano_agenda,'-',lpad(reg_tb_agenda_sub.mes_agenda,2,'0'),'-',lpad(reg_tb_agenda_sub.dia_agenda,2,'0')) as diaSemana, 
                  reg_tb_agenda_sub.horario_inicioagenda,
                  ucase(tb_profissional.nome_profissional) AS nomeProfissinoal, 
                  $complementoSQLVagaDisponivel
                  FROM reg_tb_agenda
                  INNER JOIN tb_profissional ON (reg_tb_agenda.codigoprofissional_cnes = tb_profissional.codigoprofissional_cnes)
                  INNER JOIN reg_tb_agenda_sub ON (reg_tb_agenda_sub.id_agenda = reg_tb_agenda.id_agenda) 
                  INNER JOIN reg_tb_agenda_grupoprocedimento ON (reg_tb_agenda_grupoprocedimento.id_agenda = reg_tb_agenda.id_agenda) 
                  WHERE (reg_tb_agenda_grupoprocedimento.id_grupo_procedimento='$idGrupoProcedimento')
                  AND (reg_tb_agenda_grupoprocedimento.id_procedimento='$idProcedimento')
                  AND (reg_tb_agenda.codigoestabelecimento_cnes = '$unidadeWhere')
                  AND (reg_tb_agenda.status_agenda = 'A')
                  AND (reg_tb_agenda_sub.profissional_afastado='N')
                  $whareTipoVagaDisponivel
                  ORDER BY concat(reg_tb_agenda_sub.ano_agenda,'-',lpad(reg_tb_agenda_sub.mes_agenda,2,'0'),'-',lpad(reg_tb_agenda_sub.dia_agenda,2,'0')) ASC,
                  reg_tb_agenda_sub.horario_inicioagenda ASC";
                }

                $stmListarVagas = $rsConexao->prepare($sqlListarVagas);
                $stmListarVagas -> execute();

                if($stmListarVagas->rowCount()){
                  $rsListarVagas  = $stmListarVagas->fetchAll(PDO :: FETCH_ASSOC);
                  
                  foreach($rsListarVagas AS $fieldVagas){
                    $contadorLinhasVagas  = $contadorLinhasVagas+1;
                    $nomeProfissinoal = $fieldVagas['nomeProfissinoal'];
                    $idAgenda         = $fieldVagas['id_agenda'];
                    $idAgendaVaga     = $fieldVagas['id_agenda_sub'];
                    $dataAgenda       = $fieldVagas['dataAgenda'];
                    $diaSemana        = traduzirDiaSemanaAgendamento("retorna-nome-completo",date('l', strtotime($fieldVagas['diaSemana'])));
                    $horarioAgenda    = $fieldVagas['horario_inicioagenda'];
                    $vagasDiponiveis  = $fieldVagas['vagasDiponiveis'];
                    $vagasDiponiveis  = "<font style='color:#02aa18'>( $descricaoVagasDiponiveis : $vagasDiponiveis )</font>";
                    
                    if($dataAgendaCor!=$fieldVagas['dataAgenda'] && $contadorLinhasVagas>1){
                      $setCorlinhaData = "style='border-top: 2px solid #2ea6f1'";
                    }else{
                      $setCorlinhaData = "style='border-bottom: 1px solid #e4e4e4; border-top: 1px solid #e4e4e4'";
                    }
                    $htmlRetorno .= "<tr $setCorlinhaData>
                    <td align='center' width='20px' height='30px'>
                      <input type='radio' id='checkProcedimento#$idAgenda#$idAgendaVaga#$tipoVaga' name='checkProcedimento' class='form-control checkbox-seleciona-procedimento-grupo' onchange='pegarIdVagaSelecionada(this.id)'>
                    </td>
                    <td style='padding-left:10px'>
                      $dataAgenda - $diaSemana - $horarioAgenda - $nomeProfissinoal - $vagasDiponiveis
                    </td>
                    </tr>";
                    $dataAgendaCor = $dataAgenda;
                  }                  
                }
        $htmlRetorno .="</table>
              </div>
            </div>
          </div>
        </div>
      </div>";      
    }
    $codigoUnidadeHeader  = $codigoUnidade;
  }
  echo $htmlRetorno;
}else{
  echo "nenhumaVaga";
}
?>