<?php include('../fncr-geral/coneccao-bd.php');
include_once('../fncr-geral/formatacao_valores.php');

// REGISTRAR RETORNO DO WEBHOOK
$headers = json_encode(getallheaders());
$body = file_get_contents("php://input");

$sql = $bd->getConexao()->prepare('INSERT INTO webhooks
  (header, body, origem, data_hora) VALUES
  (:headers, :body, "sicredi_pix", NOW())');
$sql->bindValue(':headers', $headers, PDO::PARAM_STR);
$sql->bindValue(':body', $body, PDO::PARAM_STR);
if($sql->execute());

try{

  $data = json_decode($body, true);

  // Adaptações ao novo formato de retorno
  if(isset($data['pix']) && count($data['pix'])>0){
    $data = $data['pix'][0];
  }

  if(isset($data['txid'])){

    $txid = $data['txid'];

    // Dados do registro PIX
    $sql = $bd->getConexao()->prepare('SELECT * FROM clubes_pix WHERE txid = :txid');
    $sql->bindValue(':txid', $txid, PDO::PARAM_STR);
    if($sql->execute()){$reg_pix = $sql->fetch(PDO::FETCH_ASSOC);}

    // FATURA (MENSALIDADE)
    if($reg_pix['id_financeiro']>0){

      // Dados do registro
      $sql = $bd->getConexao()->prepare('
        SELECT * FROM clubes_financeiro fin WHERE id = :id');
      $sql->bindValue(':id', $reg_pix['id_financeiro'], PDO::PARAM_STR);
      if($sql->execute()){$resul_registro = $sql->fetch(PDO::FETCH_ASSOC);}

      // Se fatura continua aberta
      if($resul_registro['id']!="" && ($resul_registro['status']=="2" or $resul_registro['status']=="3" or $resul_registro['status']=="7")){

        include_once('../libraries/outros/PixSicredi.php');
        $pixApi = new PixSicredi();
        $pixApi->tokenGenerator();

        $infCob = $pixApi->infCob($txid);

        // Se pagamento pix foi concluída
        if(isset($infCob['status']) && $infCob['status']=='CONCLUIDA' && isset($infCob['pix'][0]['endToEndId'])){

          $valor = $infCob['pix'][0]['valor'];
          $endToEndId = $infCob['pix'][0]['endToEndId'];

          $sql = $bd->getConexao()->prepare('UPDATE clubes_financeiro SET
          data_pgto = NOW(),
          data_notificacao = NOW(),
          data_liberacao = NOW(),
          valor_pago = :valor,
          valor_liberado = :valor,
          valor_pendente = 0,
          valor_desc_pag = 0,
          status = 4
          WHERE id = :id AND status > 0');
          $sql->bindValue(':valor', $valor, PDO::PARAM_STR);
          $sql->bindValue(':id', $resul_registro['id'], PDO::PARAM_STR);
          if($sql->execute());

          // PIX
          $sql = $bd->getConexao()->prepare('UPDATE clubes_pix SET pago = 1, data_hora_pagamento = NOW(), id_transacao = :id_transacao WHERE id = :id');
          $sql->bindValue(':id', $resul_registro['id_pix'], PDO::PARAM_STR);
          $sql->bindValue(':id_transacao', $endToEndId, PDO::PARAM_STR);
          if($sql->execute());

          // Inserindo Registros no Financeiro Geral
          $id_categoria_boleto_pago = 63; // Categoria "PokerWeb - Mensalidades"

          if($resul_registro['periodo_mes']!=date("m")){
            $data_vencimento = "20".$resul_registro['periodo_ano'].'-'.$resul_registro['periodo_mes'].'-'.'01';
          }else{
            $data_vencimento = date("Y-m-d");
          }

          // PW ADS
          $id_produto_ads = 20;
          $sql = $bd->getConexao()->prepare('
          SELECT
            sum(ifnull(valor,0)) as total
          FROM clubes_compras
          WHERE id_clube = :id_clube AND id_fatura = :id_fatura AND id_produto = :id_produto_ads');
          $sql->bindValue(':id_clube', $resul_registro['id_clube'], PDO::PARAM_STR);
          $sql->bindValue(':id_fatura', $resul_registro['id'], PDO::PARAM_STR);
          $sql->bindValue(':id_produto_ads', $id_produto_ads, PDO::PARAM_STR);
          if($sql->execute()){ $valor_ads = $sql->fetch(PDO::FETCH_ASSOC);}

          $valor_ads = $valor_ads['total']*-1;
          $valor_sem_ads = $resul_registro['valor'] + $valor_ads;
          if($valor_ads>0){$valor+=$valor_ads;}

          // INSERIR VALOR NO CAIXA
          $sql = $bd->getConexao()->prepare('INSERT INTO fingeral_registros
          (id_categoria, id_conta, id_clube, id_clube_financeiro, valor, periodo_mes, periodo_ano, data_lancamento, data_vencimento, data_pagamento, pagar_automatico, status_pago, status) VALUES
          (:id_categoria, 1, "'.$resul_registro['id_clube'].'", "'.$resul_registro['id'].'", :valor, "'.$resul_registro['periodo_mes'].'", "'.$resul_registro['periodo_ano'].'", NOW(), "'.$data_vencimento.'", NOW(), 1, 1, 0)');
          $sql->bindValue(':id_categoria', $id_categoria_boleto_pago, PDO::PARAM_STR);
          $sql->bindValue(':valor', $valor, PDO::PARAM_STR);
          if($sql->execute());

          $id_fingeral_registro = $bd->lastId();

          // Registro do ads no caixa
          if($valor_ads>0){
            $id_categoria_ads = 141;

            $sql = $bd->getConexao()->prepare('INSERT INTO fingeral_registros
            (id_categoria, id_conta, id_clube, id_clube_financeiro, valor, periodo_mes, periodo_ano, data_lancamento, data_vencimento, data_pagamento, pagar_automatico, status_pago, status) VALUES
            (:id_categoria, 1, "'.$resul_registro['id_clube'].'", "'.$resul_registro['id'].'", :valor, "'.$resul_registro['periodo_mes'].'", "'.$resul_registro['periodo_ano'].'", NOW(), "'.$data_vencimento.'", NOW(), 1, 1, 0)');
            $sql->bindValue(':id_categoria', $id_categoria_ads, PDO::PARAM_STR);
            $sql->bindValue(':valor', $valor_ads*-1, PDO::PARAM_STR);
            if($sql->execute());
          }

          // Liberar Clube se bloqueado
          if($resul_registro['bloq_status_clube']==0){
            // Liberar Clube se bloqueado
            $sql = $bd->getConexao()->prepare('UPDATE clubes SET bloqueio = 0, visualizacao = 0 WHERE id = :id_clube');
            $sql->bindValue(':id_clube', $resul_registro['id_clube'], PDO::PARAM_STR);
            if($sql->execute());

            // Inserir Registro de Status
            $sql = $bd->getConexao()->prepare('INSERT INTO clubes_financeiro_datas
            (id_financeiro, data, hora, status, origem) VALUES
            ("'.$resul_registro['id'].'", NOW(), NOW(), "4", "1")');
            if( $sql->execute() );
          }

          include_once('../libraries/outros/NFs/NFs.php');
          $nf = new NFs();
          $nf->fingeralRegistro($id_fingeral_registro);
          $nf->cadastrar();

        }

      }




    }

    // COMPRA DE TORNEIOS
    elseif($reg_pix['id_produto']>0){

      include_once('../libraries/outros/PixSicredi.php');
      $pixApi = new PixSicredi();
      $pixApi->tokenGenerator();

      $infCob = $pixApi->infCob($txid);

      // Se pagamento pix foi concluída
      if(isset($infCob['status']) && $infCob['status']=='CONCLUIDA' && isset($infCob['pix'][0]['endToEndId'])){

        $valor = $infCob['pix'][0]['valor'];
        $endToEndId = $infCob['pix'][0]['endToEndId'];

        // Marcando o pix como pago
        $sql = $bd->getConexao()->prepare('UPDATE clubes_pix SET pago = 1, data_hora_pagamento = NOW(), id_transacao = :id_transacao WHERE id = :id');
        $sql->bindValue(':id', $reg_pix['id'], PDO::PARAM_STR);
        $sql->bindValue(':id_transacao', $endToEndId, PDO::PARAM_STR);
        if($sql->execute());

        // Inserindo Registros no Financeiro Geral
        $id_categoria = 118; // Categoria "Torneios Extras"

        $periodo = explode('-',$reg_pix['data_hora_emissao']);
        $periodo_ano = str_replace('20','',$periodo[0]);
        $periodo_mes = $periodo[1];

        $sql = $bd->getConexao()->prepare('INSERT INTO clubes_compras
        (id_clube, periodo_mes, periodo_ano, id_produto, valor, data_compra, produto_adicional, status) VALUES
        ("'.$reg_pix['id_clube'].'","'.$periodo_mes.'","'.$periodo_ano.'","'.$reg_pix['id_produto'].'","'.$valor.'", NOW(), 2, 1)');

        if($sql->execute());

        $sql = $bd->getConexao()->prepare('INSERT INTO fingeral_registros
        (id_categoria, id_conta, id_clube, valor, periodo_mes, periodo_ano, data_lancamento, data_vencimento, data_pagamento, pagar_automatico, status_pago, status) VALUES
        (:id_categoria, 1, "'.$reg_pix['id_clube'].'", :valor, "'.$periodo_mes.'", "'.$periodo_ano.'", NOW(), NOW(), NOW(), 1, 1, 0)');
        $sql->bindValue(':id_categoria', $id_categoria, PDO::PARAM_STR);
        $sql->bindValue(':valor', $valor, PDO::PARAM_STR);
        if($sql->execute());

        $id_fingeral_registro = $bd->lastId();

        // Inserindo quantidade comprada no bd do clube
        if($reg_pix['id_produto']==72){$qtd_trns=1;}
        elseif($reg_pix['id_produto']==73){$qtd_trns=5;}
        elseif($reg_pix['id_produto']==74){$qtd_trns=15;}
        elseif($reg_pix['id_produto']==75){$qtd_trns=30;}

        $sql= $bd->getConexao()->prepare('SELECT * FROM clubes_configuracao WHERE id_clube = :id_clube');
        $sql->bindValue(':id_clube', $reg_pix['id_clube'], PDO::PARAM_STR);
        if($sql->execute()){$resul_config = $sql->fetch(PDO::FETCH_ASSOC);}

        $bdclube = new ConeccaoClube($resul_config['bd']);

        $sql = $bdclube->getConexao()->prepare('INSERT INTO torneios_contagem
        (data_hora_abertura, compra, compra_qtd) VALUES
        (NOW(), 1, :compra_qtd)');
        $sql->bindValue(':compra_qtd', $qtd_trns, PDO::PARAM_STR);
        if($sql->execute());

        include_once('../libraries/outros/NFs/NFs.php');
        $nf = new NFs();
        $nf->fingeralRegistro($id_fingeral_registro);
        $nf->cadastrar();

      }

    }

  }
}catch(Exception $e){
  echoPre($e);
}

?>