<?php
session_start();
require("../../database/dbConection.php");
$usuarioLogado    = $_SESSION['idUsuarioLogado'];
$chaveConfirmacao = rand(10000000, 99999999);
$dataHoraRegistro = date('Y-m-d H:i');

$idPaciente             = $_POST['idPaciente'];
$idSolicitacao          = $_POST['idSolicitacao'];
$idVaga                 = $_POST['idVaga'];
$idVagaSub              = $_POST['idVagaSub'];
$tipoVagaOcupada        = mb_strtoupper($_POST['tipoVagaOcupada']);
$prazoRetirada          = $_POST['prazoRetirada'];
$origemAgendamento      = 'S-FG';
$observacaoAgendamento  = $_POST['observacaoAgendamento'];

# -- pegar dados da agenda para armazenar
$sqlAgendaSub = "SELECT 
    concat(ano_agenda,'-',lpad(mes_agenda,2,'0'),'-',lpad(dia_agenda,2,'0')) AS dataAtendimento,
    horario_inicioagenda,
    id_grupo_procedimento,
    id_procedimento,
    quantidadegendada_pvez,
    quantidadeagendada_retorno,    
    quantidadeagendada_reserva
    FROM reg_tb_agenda_sub
    WHERE id_agenda_sub='$idVagaSub'";
$stmAgendaSub = $rsConexao->prepare($sqlAgendaSub);
$stmAgendaSub->execute();
$rsAgendaSub  = $stmAgendaSub->fetch(PDO::FETCH_OBJ);

$dataAtendimento      = $rsAgendaSub->dataAtendimento;
$horaAtendimento      = $rsAgendaSub->horario_inicioagenda;
$idGrupoProcedimento  = $rsAgendaSub->id_grupo_procedimento;
if ($rsAgendaSub->id_procedimento != "") {
  $idProcedimento       = $rsAgendaSub->id_procedimento;
} else {
  $stmIdProcedimento  = $rsConexao->prepare("SELECT id_procedimento FROM reg_tb_solicitacoes WHERE id_solicitacao='$idSolicitacao'");
  $stmIdProcedimento->execute();
  $rsIdProcedimento   = $stmIdProcedimento->fetch(PDO::FETCH_OBJ);
  $idProcedimento     = $rsIdProcedimento->id_procedimento;
}
if ($tipoVagaOcupada == "PVEZ") {
  $calculaVagasOcupadas = $rsAgendaSub->quantidadegendada_pvez;
  $variavelAtualizaVagaOcupada = 'quantidadegendada_pvez';
} else if ($tipoVagaOcupada == "RETORNO") {
  $calculaVagasOcupadas = $rsAgendaSub->quantidadeagendada_retorno;
  $variavelAtualizaVagaOcupada = 'quantidadeagendada_retorno';
} else {
  $calculaVagasOcupadas = $rsAgendaSub->quantidadeagendada_reserva;
  $variavelAtualizaVagaOcupada = 'quantidadeagendada_reserva';
}

# -- PEGAR PROTOCOLO DA SOLICITAÇÃO -- #
$stmProcotoloSolicitacao  = $rsConexao->prepare("SELECT numero_procotolo FROM reg_tb_solicitacoes WHERE id_solicitacao='$idSolicitacao'");
$stmProcotoloSolicitacao  -> execute();
$rsProcotoloSolicitacao   = $stmProcotoloSolicitacao->fetch(PDO::FETCH_OBJ);
$protocoloAgendamento     = $rsProcotoloSolicitacao->numero_procotolo;
# ------------------------------------ #
$sqlGravarAgendamento = "INSERT INTO reg_tb_agendamentos(
     origem_agendamento,
     protocolo_agendamento,
     id_paciente,
     id_solicitacao,
     id_agenda,
     id_agenda_sub,
     id_grupo_procedimento,
     id_procedimento,
     data_atendimento,
     horario_atendimento,
     dataprazo_retirada,
     tipo_vagaocupada,
     observacao_agendamento,
     chave_confirmacao,
     id_usuario_agendou
   ) VALUES (
    :setOrigemAgendamento,
    :setProtocoloAgendamento,
    :setIdPaciente,
    :setIdSolicitacao,
    :setIdAgenda,
    :setIdAgendaSub,
    :setIdGrupoProcedimento,
    :setIdProcedimento,
    :setDataAtendimento,
    :setHorarioAtendimento,
    :setDataPrazoRetirada,
    :setTipoVagaOcupada,
    :setObservacaoAgendamento,
    :setChaveConfirmacao,
    :setIdUsuarioAgendou
  )";

$stmGravarAgendamento = $rsConexao->prepare($sqlGravarAgendamento);
$stmGravarAgendamento->bindParam(":setOrigemAgendamento", $origemAgendamento, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setProtocoloAgendamento", $protocoloAgendamento, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setIdPaciente", $idPaciente, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setIdSolicitacao", $idSolicitacao, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setIdAgenda", $idVaga, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setIdAgendaSub", $idVagaSub, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setIdGrupoProcedimento", $idGrupoProcedimento, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setIdProcedimento", $idProcedimento, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setDataAtendimento", $dataAtendimento, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setHorarioAtendimento", $horaAtendimento, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setDataPrazoRetirada", $prazoRetirada, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setTipoVagaOcupada", $tipoVagaOcupada, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setObservacaoAgendamento", $observacaoAgendamento, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setChaveConfirmacao", $chaveConfirmacao, PDO::PARAM_STR);
$stmGravarAgendamento->bindParam(":setIdUsuarioAgendou", $usuarioLogado, PDO::PARAM_STR);
$stmGravarAgendamento->execute();
$_SESSION['idAgendamento'] = $rsConexao->lastInsertId();
$calculaSaldoVaga = $calculaVagasOcupadas + 1;
$stmAtualizaVagaOcupada = $rsConexao->prepare("UPDATE reg_tb_agenda_sub SET $variavelAtualizaVagaOcupada='$calculaSaldoVaga' WHERE id_agenda_sub='$idVagaSub'");
$stmAtualizaVagaOcupada->execute();

$statusSolicitacao = 3;
$origemAgendamento = "FILA-G";
$emLigacao          = "S";
$emComunicacao      = "N";
$statusAgendamento  = "A";
$stmAtuaizaStatusComunicacao  = $rsConexao->prepare("UPDATE reg_tb_solicitacoes SET encaminhado_ligacao='S', em_comunicacao='N' WHERE id_statussolicitacao='3' AND id_paciente='$idPaciente' AND dataprazo_retirada='$prazoRetirada'");

$sqlSolicitacao = "UPDATE reg_tb_solicitacoes SET
    id_statussolicitacao=:setStatusSolicitacao,
    dataprazo_retirada=:setDataPrazoRetirada,
    origem_agendamento=:setOrigemAgendamento,
    observacao_agendamento=:setObservacaoAgendamento,
    datahora_registroagendamento=:setDataHoraRegistroAgendamento,
    encaminhado_ligacao=:setEmLigacao,
    em_comunicacao=:setEmComunicacao,    
    idusuario_registrouagendamento=:setUsuarioRegistrouAgendamento
    WHERE id_solicitacao='$idSolicitacao'";

$stmSolicitacao = $rsConexao->prepare($sqlSolicitacao);
$stmSolicitacao->bindParam(":setStatusSolicitacao", $statusSolicitacao, PDO::PARAM_STR);
$stmSolicitacao->bindParam(":setDataPrazoRetirada", $prazoRetirada, PDO::PARAM_STR);
$stmSolicitacao->bindParam(":setOrigemAgendamento", $origemAgendamento, PDO::PARAM_STR);
$stmSolicitacao->bindParam(":setObservacaoAgendamento", $observacaoAgendamento, PDO::PARAM_STR);
$stmSolicitacao->bindParam(":setDataHoraRegistroAgendamento", $dataHoraRegistro, PDO::PARAM_STR);
$stmSolicitacao->bindParam(":setEmLigacao", $emLigacao, PDO::PARAM_STR);
$stmSolicitacao->bindParam(":setEmComunicacao", $emComunicacao, PDO::PARAM_STR);
$stmSolicitacao->bindParam(":setUsuarioRegistrouAgendamento", $usuarioLogado, PDO::PARAM_STR);
$stmSolicitacao->execute();

# -- registrar histórico do agendamento --
$sqlMovimento = "INSERT INTO reg_tb_solicitacoes_historico(
      id_solicitacao,
      datahora_registro,
      texto_movimentacao,
      id_statussolicitacao,
      idusuario_registrou
    )VALUES(
      :setIdSolicitacao,
      :setDataHoraHoje,
      :setTextoMovimento,
      :setStatusSolicitacao,
      :setUsuarioLogado
    )";
$idStatusMovimento  = 3;
$tipoMovimento      = "Marcação Realizada (Fila-G)";
$stmMovimento = $rsConexao->prepare($sqlMovimento);
$stmMovimento->bindParam(":setIdSolicitacao", $idSolicitacao, PDO::PARAM_STR);
$stmMovimento->bindParam(":setDataHoraHoje", $dataHoraRegistro, PDO::PARAM_STR);
$stmMovimento->bindParam(":setTextoMovimento", $tipoMovimento, PDO::PARAM_STR);
$stmMovimento->bindParam(":setStatusSolicitacao", $idStatusMovimento, PDO::PARAM_STR);
$stmMovimento->bindParam(":setUsuarioLogado", $usuarioLogado, PDO::PARAM_STR);
$stmMovimento->execute();

# -- atualizar telefones do paciente -- #
$telefoneCelular1          = $_POST['telefoneCelular1'];
$telefoneCelular2          = $_POST['telefoneCelular2'];
$telefoneCelular3          = $_POST['telefoneCelular3'];
$telefoneCelular1Whatsapp  = $_POST['telefoneCelular1Whatsapp'];
$telefoneCelular2Whatsapp  = $_POST['telefoneCelular2Whatsapp'];
$telefoneCelular3Whatsapp  = $_POST['telefoneCelular3Whatsapp'];

$sqlPaciente = "UPDATE tb_paciente SET
celular1=:setCelular1,
celular2=:setCelular2,
celular3=:setCelular3,
celular1_whatsapp=:setWhatsApp1,
celular2_whatsapp=:setWhatsApp2,
celular3_whatsapp=:setWhatsApp3
WHERE id_paciente='$idPaciente'";
$stmPaciente  = $rsConexao->prepare($sqlPaciente);
$stmPaciente->bindParam(":setCelular1", $telefoneCelular1, PDO::PARAM_STR);
$stmPaciente->bindParam(":setCelular2", $telefoneCelular2, PDO::PARAM_STR);
$stmPaciente->bindParam(":setCelular3", $telefoneCelular3, PDO::PARAM_STR);
$stmPaciente->bindParam(":setWhatsApp1", $telefoneCelular1Whatsapp, PDO::PARAM_STR);
$stmPaciente->bindParam(":setWhatsApp2", $telefoneCelular2Whatsapp, PDO::PARAM_STR);
$stmPaciente->bindParam(":setWhatsApp3", $telefoneCelular3Whatsapp, PDO::PARAM_STR);
$stmPaciente->execute();
# ------------------------------------- #

$_SESSION['origemAgendamento'] = "S-FG";
