<?php require_once('../../fncr-geral/formatacao_valores.php');
/*
 * CRON PARA REPASSES AUTOMÁTICOS
*/
/*
new Repasses();
class Repasses{

  private $horario_default = 19;
  private $valor_minimo = 100;

  public function __construct(){
    if($this->auth()){
      // Conexão com banco de dados
      include('../../fncr-geral/coneccao-bd.php');
      $this->bd = new Coneccao();
      // Horário do cron
      $this->horario = intval(date('H'));
      // Clubes
      $this->clubes();
      // Realizar os repasses
      $this->realizar_repasses();
    };
  }

  // AUTENTICAÇÃO
  private function auth(){
    return (
      true ||
      isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER']==GLOBAL_GID_HOOK_CRON_LOGIN
      && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW']==GLOBAL_GID_HOOK_CRON_PASS
    );
  }

  // CLUBES
  // Lista os clubes que terão o repasse automático
  private function clubes(){
    // Clubes com pix ativo e o horário ativo
    $sql = $this->bd->getConexao()->prepare('
    SELECT
      c.id,
      c.nome as clube,
      ifnull(h.horario,0) as horario,
      ifnull(h_todos.qtd,0) as qtd_horarios,
      cc.pix_chave,
      cc.pix_tipo
    FROM clubes_configuracao cc
      LEFT JOIN clubes c ON c.id = cc.id_clube
      LEFT JOIN pgtos_ext_repasses_config h ON h.id_clube = cc.id_clube AND h.horario = :horario
      LEFT JOIN pgtos_ext_saldos s ON s.id_clube = cc.id_clube
      LEFT JOIN (select id_clube, count(*) qtd from pgtos_ext_repasses_config group by id_clube) h_todos ON h_todos.id_clube = cc.id_clube
    WHERE cc.pagamento_pix = 1 AND s.saldo >= :valor_minimo AND cc.pix_chave is not null AND cc.pix_tipo is not null');
    $sql->bindValue(':valor_minimo', $this->valor_minimo, PDO::PARAM_STR);
    $sql->bindValue(':horario', $this->horario, PDO::PARAM_STR);
    if($sql->execute()){$clubes = $sql->fetchall(PDO::FETCH_ASSOC);}

    // Verificações adicionais
    $this->clubes = [];
    foreach($clubes as $l){
      if(
        // Se clube setou o horário nas config
        $l['horario']==$this->horario
        // Se clube não setou nada e o horário é 6h
        || $l['qtd_horarios']==0 && $this->horario==$this->horario_default
      ){$this->clubes[] = $l;}
    }
  }

  // REALIZAR OS REPASSES
  private function realizar_repasses(){
    if(count($this->clubes)>0){
      foreach($this->clubes as $l){
        $rollback = false;

        // Inicia TRANSACTION para solicitação do saldo
        $this->bd->getConexao()->prepare('START TRANSACTION')->execute();

        // Trava a linha de saldo
        $sql = $this->bd->getConexao()->prepare('SELECT saldo FROM pgtos_ext_saldos WHERE id_clube = :id_clube FOR UPDATE');
        $sql->bindValue(':id_clube', $l['id'], PDO::PARAM_STR);
        $sql->execute();

        // Verifica o saldo atual
        $sql = $this->bd->getConexao()->prepare('SELECT ifnull(sum(clube_valor_liquido),0) as saldo FROM pgtos_ext_extrato WHERE id_clube = :id_clube');
        $sql->bindValue(':id_clube', $l['id'], PDO::PARAM_STR);
        if($sql->execute()){$saldo = $sql->fetch(PDO::FETCH_ASSOC);}

        // Taxa de repasse
        $sql = $this->bd->getConexao()->prepare('
          SELECT
            CASE WHEN tx_clube.id is not null THEN tx_clube.valor_fixo ELSE t.valor_fixo END as taxa_valor_fixo,
            CASE WHEN tx_clube.id is not null THEN tx_clube.valor_percent ELSE t.valor_percent END as taxa_valor_percent
          FROM pgtos_ext_config_taxas t
            LEFT JOIN (select * from pgtos_ext_config_taxas where id_clube = :id_clube AND ext_forma_pgto_id = 0) tx_clube ON tx_clube.ext_forma_pgto_id = t.ext_forma_pgto_id
          WHERE t.id_clube = 0 and t.ext_forma_pgto_id = 0');
        $sql->bindValue(':id_clube', $l['id'], PDO::PARAM_STR);
        if($sql->execute()){$taxas = $sql->fetch(PDO::FETCH_ASSOC);}

        // Saldo e valores
        $saldo_atual = $saldo['saldo'];
        $taxa_repaase = $taxas['taxa_valor_fixo'];
        $valor_repasse = $saldo_atual - $taxa_repaase;

        if($valor_repasse>0){

          // Insere um novo registro na tabela de repasses
          $sql = $this->bd->getConexao()->prepare('INSERT INTO pgtos_ext_repasses
          (id_clube, valor_solicitado, valor_taxa, valor_repasse, automatico, data_hora) VALUES
          (:id_clube, :valor_solicitado, :valor_taxa, :valor_repasse, 1, NOW())');
          $sql->bindValue(':id_clube', $l['id'], PDO::PARAM_STR);
          $sql->bindValue(':valor_solicitado', $saldo_atual, PDO::PARAM_STR);
          $sql->bindValue(':valor_taxa', $taxa_repaase, PDO::PARAM_STR);
          $sql->bindValue(':valor_repasse', $valor_repasse, PDO::PARAM_STR);
          $sql->execute();

          $ext_repasse_id = $this->bd->lastId();

          // Atualiza saldo do clube
          $sql = $this->bd->getConexao()->prepare('UPDATE pgtos_ext_saldos SET saldo = 0 WHERE id_clube = :id_clube');
          $sql->bindValue(':id_clube', $l['id'], PDO::PARAM_STR);
          $sql->execute();

          // Insere registro no extrato
          $sql = $this->bd->getConexao()->prepare('INSERT INTO pgtos_ext_extrato
          (ext_conta_id, id_clube, ext_pgto_id, periodo_mes, periodo_ano, clube_valor_liquido, repasse, ext_repasse_id, data_hora) VALUES
          (1, :id_clube, 0, :periodo_mes, :periodo_ano, :clube_valor_liquido, 1, :ext_repasse_id, NOW())');
          $sql->bindValue(':id_clube', $l['id'], PDO::PARAM_STR);
          $sql->bindValue(':periodo_mes', date('m'), PDO::PARAM_STR);
          $sql->bindValue(':periodo_ano', date('y'), PDO::PARAM_STR);
          $sql->bindValue(':clube_valor_liquido', $saldo_atual*-1, PDO::PARAM_STR);
          $sql->bindValue(':ext_repasse_id', $ext_repasse_id, PDO::PARAM_STR);
          $sql->execute();

          // ASAAS - Criar o repasse
          include_once('../../libraries/outros/Asaas.php');
          $asaas = new Asaas();
          $EXT_registro_id = $asaas->transfer((object)[
            "chave_pix" => '25131762000158',
            "chave_tipo" => 'CNPJ',
            "valor" => $valor_repasse,
          ]);

          if($EXT_registro_id){

            // Atualiza informações do repasse
            $sql = $this->bd->getConexao()->prepare('UPDATE pgtos_ext_repasses SET
              EXT_registro_id = :EXT_registro_id,
              chave_pix = :chave_pix
            WHERE id = :id AND id_clube = :id_clube');
            $sql->bindValue(':EXT_registro_id', $EXT_registro_id, PDO::PARAM_STR);
            $sql->bindValue(':chave_pix', $l['pix_chave'], PDO::PARAM_STR);
            $sql->bindValue(':id', $ext_repasse_id, PDO::PARAM_STR);
            $sql->bindValue(':id_clube', $l['id'], PDO::PARAM_STR);
            $sql->execute();

            // Realiza o commit das transações
            $this->bd->getConexao()->prepare('COMMIT')->execute();

          }else{ $rollback = true; }
        }else{ $rollback = true; }
        if($rollback){$this->bd->getConexao()->prepare('ROLLBACK')->execute();}
      }
    }
  }

}
*/
?>