<?php

include_once '../classes/pagina.php';

class ConfirmaPagamento extends Pagina {

    const PASTA = 'arquivosconfirmapagamento';

    public function __construct() {
        parent::checarPermissao(array('administrador', 'confirmapagamento'));

        parent::__construct();
    }

    public function corpo() {
        echo "<div><a href='home.php' class='voltar'>Voltar para a tela inicial</a></div><br/>";

        if (!empty($_FILES['arquivoretorno'])) {
            $this->executarAcao();
        } else {
            $this->formulario();
        }
    }

    public function formulario() {
        echo "<p>Envie o arquivo do Banco já processado contendo em cada linha: 'numero do boleto' 'numero da equipe' 'valor pago' 'data de pagamento', separados por espaço</p>";
        echo "
            <form action='' method='POST' enctype='multipart/form-data'>
            <p>
            <input type='file' name='arquivoretorno' />
            <input type='submit' value='Submeter Arquivo Retorno' class='confirmar' />
            </p>
            </form>
            ";
    }

    public function executarAcao() {
        ob_start();

        $arquivo = $_FILES['arquivoretorno']['tmp_name'];
        if (!empty($arquivo)) {
            
            $nomearquivo = date('Y_m_d_H_i') . '__' . uniqid() . '__' . $_FILES['arquivoretorno']['name'];
            if(!copy($_FILES['arquivoretorno']['tmp_name'], self::PASTA . '/' . $nomearquivo)) {
                echo "<div class='erro'>ERRO: Não moveu o arquivo para " . self::PASTA . '/' . $_FILES['arquivoretorno']['name'] . "!</div>";
                $erros++;
            }
            
            
            $i = 1;
            $pagos = 0;
            $erros = 0;
            $linhas = file($arquivo);
            foreach($linhas as $linha){
                $load = explode(" ", trim($linha));
                $nossonumero = parent::acertarString($load[0]);
                $equipe_id = parent::acertarString($load[1]);
                $valor = parent::acertarString($load[2]);
                $datapagamento = parent::acertarString($load[3]);
                echo "<p>";
                if (!empty($equipe_id)){
                    $sql = "SELECT equipe.*, equipepagamento.id AS equipepagamento_id FROM imediaco_geo.equipe LEFT JOIN imediaco_geo.equipepagamento ON equipe.id = equipepagamento.equipe_id WHERE equipe.id = '$equipe_id'";
                    $this->bd->executarSQL($sql);
                    if($this->bd->getQuantidadeRegistros() > 0) {
                        $objequipe = $this->bd->getObjeto();
                        echo "linha $i - equipe: <b>$equipe_id</b> ($objequipe->nome) - boleto: $nossonumero - data: $datapagamento - valor: $valor";
                        if(!empty($valor)){
                            $sql = "UPDATE imediaco_geo.equipe SET pago = 'SIM' WHERE id = '$equipe_id'";
                            $executou = $this->bd->executarSQL($sql);
                            if ($executou) {
                                $this->bd->log('pagamento', $sql, "$equipe_id");
                                if (empty($objequipe->equipepagamento_id)) {
                                    $sql = "INSERT imediaco_geo.equipepagamento (equipe_id, datapagamento, valor) VALUES ('$equipe_id', '$datapagamento', '$valor')";
                                    $executou = $this->bd->executarSQL($sql);
                                    if ($executou) {
                                        $pagos++;
                                    } else {
                                        echo " <font color='red'>ERRO ao inserir pagamento para esta equipe</font>";
                                        $erros++;
                                    }
                                }
                            } else {
                                echo " <font color='red'>ERRO ao processar pagamento para esta equipe</font>";
                                $erros++;
                            }
                        }else{
                            echo " <font color='red'>ERRO - VALOR ZERO (não inseriu pagamento para esta equipe)</font>";
                            $erros++;
                        }
                    } 
                }
                echo "</p>";
                $i++;
            }
        } else {
            echo "<div class='erro'>ERRO: Sem arquivo para importar. Possível ataque de upload de arquivo!</div>";
            $erros++;
        }

        echo "<br/><hr/><br/>";
        
        echo "<div>Total de pagamentos confirmados: $pagos</div>";
        
        if (!empty($erros)) echo "<div class='erro'>Total de ERROS: $erros</div>";

        //gravando a saida
        $html = ob_get_clean();
        echo $html;
        $arquivosaida = date('Y_m_d_H_i') . '__' . uniqid() . '__' . $_FILES['arquivoretorno']['name'] . '.html';
        $fp = fopen(self::PASTA . '/' . $arquivosaida, 'w+');
        fwrite($fp, $html);
        fclose($fp);
    }

    /**
     * @deprecated 
     * Utilizada quando o arquivo submetido era o arquivo direto do banco do brasil
     */
    public function executarAcaoBoletoBBNaoTratado() {
        ob_start();

        if (isset($_FILES['arquivoretorno'])) {
            $nomearquivo = date('Y_m_d_H_i') . '__' . uniqid() . '__' . $_FILES['arquivoretorno']['name'];
            if (move_uploaded_file($_FILES['arquivoretorno']['tmp_name'], self::PASTA . '/' . $nomearquivo)) {
                $arquivo = fopen(self::PASTA . '/' . $nomearquivo, "r") OR die("Não abriu o arquivo " . self::PASTA . '/' . $_FILES['arquivoretorno']['name'] . "!");

                $pagos = $erros = 0;
                $linha = 1;
                while (!feof($arquivo)) {
                    $load = explode("\t", fgets($arquivo));
                    if (substr($load[0], 0, 6) == '282764') {
                        $nossonumero = $load[0];
                        $equipe_id = ltrim(substr($nossonumero, 6, 7), '0');
                        
                        $nome = $load[1];
                        $datapagamento = $load[3];
                        $valor = $load[4];
                        $liquidado = $load[8];
                        if (isset($equipe_id) and ($liquidado == 'LQ' or $liquidado == 'LQB')) {
                            $sql = "SELECT id FROM imediaco_geo.equipe WHERE id = '$equipe_id'";
                            $this->bd->executarSQL($sql);
                            if($this->bd->getQuantidadeRegistros() > 0) {
                                echo "equipe: $equipe_id - nome: $nome - liquidado: $liquidado - data: $datapagamento - valor: $valor<br>";
                                $sql = "UPDATE imediaco_geo.equipe SET pago = 'SIM' WHERE id = '$equipe_id'";
                                $executou = $this->bd->executarSQL($sql);
                                if ($executou) {
                                    $this->bd->log('pagamento', $sql, "$equipe_id");
                                    $sql = "SELECT id FROM imediaco_geo.equipepagamento WHERE equipe_id = '$equipe_id' AND datapagamento = '$datapagamento' AND valor = '$valor'";
                                    $this->bd->executarSQL($sql);
                                    if ($this->bd->getQuantidadeRegistros() == 0) {
                                        $sql = "INSERT imediaco_geo.equipepagamento (equipe_id, datapagamento, valor) VALUES ('$equipe_id', '$datapagamento', '$valor')";
                                        $executou = $this->bd->executarSQL($sql);
                                        if ($executou) {
                                            $pagos++;
                                        } else {
                                            echo "<div class='erro'>ERRO: Não fez o INSERT de pagamento para a equipe $equipe_id na linha $linha!<div/>";
                                            $erros++;
                                        }
                                    }
                                } else {
                                    echo "<div class='erro'>ERRO: Não fez o UPDATE de pagamento para a equipe $equipe_id na linha $linha!<div/>";
                                    $erros++;
                                }
                            } 
                        }
                    }
                    $linha++;
                }
                fclose($arquivo);
            } else {
                echo "<div class='erro'>ERRO: Não moveu o arquivo para " . self::PASTA . '/' . $_FILES['arquivoretorno']['name'] . "!</div>";
                $erros++;
            }
        } else {
            echo "<div class='erro'>ERRO: Sem arquivo para importar. Possível ataque de upload de arquivo!</div>";
            $erros++;
        }

        echo "<br/><br/>";
        echo "<div>Total de pagamentos confirmados: $pagos</div>";
        if (!empty($erros))
            echo "<div>Total de ERROS: $erros</div>";

        //gravando a saida
        $html = ob_get_clean();
        echo $html;
        $arquivosaida = date('Y_m_d_H_i') . '__' . uniqid() . '__' . $_FILES['arquivoretorno']['name'] . '.html';
        $fp = fopen(self::PASTA . '/' . $arquivosaida, 'w+');
        fwrite($fp, $html);
        fclose($fp);
    }

}

$pagina = new ConfirmaPagamento();
$pagina->montar();

