<?php
require("../../../database/dbConection.php");
$dataHoje   = date("Y-m-d");

# -- LIMPAR TABELA DE DADOS TEMPORÁRIOS DE VAGAS RESTAURADAS --#
$stmLimparVagasRestauradas  = $rsConexao->prepare("DELETE FROM reg_tb_vagasrestauradas");
$stmLimparVagasRestauradas  -> execute();
$stmLimparVagasRestauradas  = $rsConexao->prepare("ALTER TABLE reg_tb_vagasrestauradas AUTO_INCREMENT=1");
$stmLimparVagasRestauradas  -> execute();

# -- BUSCAR TODOS OS AGENDAMENTOS COM PRAZO DE RETIDADA VENCIDOS -- #
$stmAgendamentos  = "SELECT *,
reg_tb_agenda.codigoestabelecimento_cnes,
reg_tb_agenda.codigoprofissional_cnes
FROM reg_tb_agendamentos 
INNER JOIN reg_tb_agenda ON (reg_tb_agenda.id_agenda=reg_tb_agendamentos.id_agenda)
WHERE (id_agenda_sub IS NOT NULL AND id_agenda_sub!='')
AND ((status_agendamento='A' AND date_format(dataprazo_retirada,'%Y-%m-%d')<'$dataHoje') OR (status_agendamento='X'))
ORDER BY tipo_vagaocupada";

echo $stmAgendamentos;
exit;
$stmAgendamentos  = $rsConexao->prepare($stmAgendamentos);
$stmAgendamentos->execute();

if ($stmAgendamentos->rowCount() > 0) {
  
  $rsAgendamentos = $stmAgendamentos->fetchAll(PDO::FETCH_ASSOC);
  foreach ($rsAgendamentos as $fieldAgendamento) {
    $idAgendamento        = $fieldAgendamento['id_agendamento'];
    $numeroProtocolo      = $fieldAgendamento['protocolo_agendamento'];
    $idAgenda             = $fieldAgendamento['id_agenda'];
    $idAgendaSub          = $fieldAgendamento['id_agenda_sub'];
    $idSolicitacao        = $fieldAgendamento['id_solicitacao'];
    $tipoVagaOcupada      = $fieldAgendamento['tipo_vagaocupada'];
    $prazoRetirada        = $fieldAgendamento['dataprazo_retirada'];
    $origemAgendamento    = $fieldAgendamento['origem_agendamento'];
    $idGrupoProcedimento  = $fieldAgendamento['id_grupo_procedimento'];
    $idProcedimento       = $fieldAgendamento['id_procedimento']=="" ? 'null' : $fieldAgendamento['id_procedimento'];
    $codigoUnidade        = $fieldAgendamento['codigoestabelecimento_cnes'];
    $codigoProfissional   = $fieldAgendamento['codigoprofissional_cnes'];
    $dataAtendimento      = $fieldAgendamento['data_atendimento'];
    $horarioAtendimento   = $fieldAgendamento['horario_atendimento'];
    
    # -- cancelar agendamento -- #
    $sqlCancelarAgendamento = "UPDATE reg_tb_agendamentos 
    SET status_agendamento='C',
    informacoes_cancelamento='CANCELAMENTO AUTOMÁTICO',
    datahora_cancelamento=NOW()
    WHERE (id_agendamento='$idAgendamento')";
    $stmCancelarAgendamento = $rsConexao->prepare($sqlCancelarAgendamento);
    $stmCancelarAgendamento->execute();
    $stmCancelarAgendamento->closeCursor();

    # -- cancelar solicitacoes -- #
    if ($idSolicitacao != "") {
      $sqlCancelarSolicitacao = "UPDATE reg_tb_solicitacoes 
      SET id_statussolicitacao='5',
      informacoes_cancelamento='CANCELAMENTO AUTOMÁTICO',
      datahora_cancelamento=NOW()    
      WHERE (id_solicitacao='$idSolicitacao')";
      $stmCancelarSolicitacao = $rsConexao->prepare($sqlCancelarSolicitacao);
      $stmCancelarSolicitacao->execute();
      $stmCancelarSolicitacao->closeCursor();
    }
    
    # -- restaurar vagas de primeira vez
    $novoTotalOcupado = 0;
    if($tipoVagaOcupada == "PVEZ"){
      $stmTotalOcupado  = $rsConexao->prepare("SELECT quantidadegendada_pvez FROM reg_tb_agenda_sub WHERE id_agenda_sub='$idAgendaSub'");
      $stmTotalOcupado  ->execute();
      $rsTotalOcupado   = $stmTotalOcupado->fetch(PDO::FETCH_OBJ);
      $totalOcupado     = $rsTotalOcupado->quantidadegendada_pvez;
      $novoTotalOcupado = $totalOcupado - 1;
      $stmDevolveVagaAgenda = $rsConexao->prepare("UPDATE reg_tb_agenda_sub SET quantidadegendada_pvez='$novoTotalOcupado' WHERE id_agenda_sub='$idAgendaSub'");
      $stmDevolveVagaAgenda->execute();      

      $stmTotalOcupado->closeCursor();
      $stmDevolveVagaAgenda->closeCursor();

      echo "PRIMEIRA VEZ -> UPDATE reg_tb_agenda_sub SET quantidadegendada_pvez='$novoTotalOcupado' WHERE id_agenda_sub='$idAgendaSub' <br>";
    }
  
    # -- restaurar vagas de retorno
    $novoTotalOcupado = 0;
    if($tipoVagaOcupada == "RETORNO"){
      $stmTotalOcupado  = $rsConexao->prepare("SELECT quantidadeagendada_retorno FROM reg_tb_agenda_sub WHERE id_agenda_sub='$idAgendaSub'");
      $stmTotalOcupado  ->execute();
      $rsTotalOcupado   = $stmTotalOcupado->fetch(PDO::FETCH_OBJ);
      $totalOcupado     = $rsTotalOcupado->quantidadeagendada_retorno;
      $novoTotalOcupado = $totalOcupado - 1;      
      $stmDevolveVagaAgenda = $rsConexao->prepare("UPDATE reg_tb_agenda_sub SET quantidadeagendada_retorno='$novoTotalOcupado' WHERE id_agenda_sub='$idAgendaSub'");
      $stmDevolveVagaAgenda->execute();
      
      $stmTotalOcupado->closeCursor();
      $stmDevolveVagaAgenda->closeCursor();

      echo "RETORNO -> UPDATE reg_tb_agenda_sub SET quantidadeagendada_retorno='$novoTotalOcupado' WHERE id_agenda_sub='$idAgendaSub' <br>";      
    }

    # -- restaurar vagas de reserva
    $novoTotalOcupado = 0;
    if($tipoVagaOcupada == "RESERVA"){
      $stmTotalOcupado  = $rsConexao->prepare("SELECT quantidadeagendada_reserva FROM reg_tb_agenda_sub WHERE id_agenda_sub='$idAgendaSub'");
      $stmTotalOcupado  ->execute();
      $rsTotalOcupado   = $stmTotalOcupado->fetch(PDO::FETCH_OBJ);
      $totalOcupado     = $rsTotalOcupado->quantidadeagendada_reserva;
      $novoTotalOcupado = $totalOcupado - 1; 
      $stmDevolveVagaAgenda = $rsConexao->prepare("UPDATE reg_tb_agenda_sub SET quantidadeagendada_reserva='$novoTotalOcupado' WHERE id_agenda_sub='$idAgendaSub'");
      $stmDevolveVagaAgenda->execute();      

      $stmTotalOcupado->closeCursor();
      $stmDevolveVagaAgenda->closeCursor();

      echo "RETORNO -> UPDATE reg_tb_agenda_sub SET quantidadeagendada_reserva='$novoTotalOcupado' WHERE id_agenda_sub='$idAgendaSub' <br>";      
    }

  # -- adicionar registro temporário de vagas restauradas para envio de notificação -- #
    $sqlGravarVagasrestauradas = "INSERT INTO reg_tb_vagasrestauradas(
      tipo_vaga,
      id_grupoprocedimento,
      id_procedimento,
      codigoestabelecimento_cnes,
      codigoprofissional_cnes,
      data_atendimento,
      horario_agendimento,
      id_agenda_sub
    )VALUES(
      '$tipoVagaOcupada',
      '$idGrupoProcedimento',
      $idProcedimento,
      '$codigoUnidade',
      '$codigoProfissional',
      '$dataAtendimento',
      '$horarioAtendimento',
      '
    )";
    $stmGravarVagasrestauradas  =  $rsConexao->prepare($sqlGravarVagasrestauradas);
    $stmGravarVagasrestauradas  -> execute();
    $stmGravarVagasrestauradas  -> closeCursor();
  
  }
}

# -- CANCELAR TODAS AS SOLICITAÇÕES COM STATUS CANCELAR -- #
$stmSolicitacao = $rsConexao->prepare("UPDATE reg_tb_solicitacoes SET id_statussolicitacao='5' WHERE (id_statussolicitacao='4')");
$stmSolicitacao ->execute();
$stmSolicitacao ->closeCursor();

?>