<?php

class Saldo extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->model('Auditoria_Model');
        $this->load->model('Saldo_Model');
        $this->load->library('Criptografia');
    }

    public function saldo() {

        $dados = array('admin' => $this->Auditoria_Model->getLoginAdminporID());

        $this->load->view('saldo/saldo', $dados);
    }

    public function adicionarsaldo() {

        $valor = str_replace(array('.', ','), array('', '.'), $this->input->post('valor', TRUE));
        $id_negocio = $this->input->post('conta', TRUE);

        $this->form_validation->set_rules('valor', 'valor', 'trim|required');
        $this->form_validation->set_rules('conta', 'conta', 'trim|required');

        if ($this->form_validation->run() == FALSE) {
            $form = validation_errors('<div class="alert alert-warning" role="alert"><div class="">  <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');
            $this->session->set_flashdata('erro-form', $form);

            redirect('saldo');
        } else {

            $transferencia = $this->Saldo_Model->cliente($id_negocio);
            $id = $transferencia['id_negocio'];
            $id_cliente = $transferencia['id_cliente'];

            if ($valor < 1.00) {

                $this->session->set_flashdata('erro-form', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> O valor informado não pode ser transferido</div>');

                $dados = array('admin' => $this->Auditoria_Model->getLoginAdminporID());

                $this->load->view('saldo/saldo', $dados);
            } else if ($id == NULL) {

                $this->session->set_flashdata('erro-form', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> O ID de Negócio informado não está cadastrado</div>');

                $dados = array('admin' => $this->Auditoria_Model->getLoginAdminporID());

                $this->load->view('saldo/saldo', $dados);
            } else {

                $transacao = $this->transacao($id_cliente, $id, $valor);

                $conta_destino = array('transacao' => $transacao, 'nome' => $transferencia['nome'], 'id_negocio' => $transferencia['id_negocio'], 'id_cliente' => $id_cliente, 'valor' => $valor, 'admin' => $this->Auditoria_Model->getLoginAdminporID());

                $this->load->view('saldo/confirmatransferencia', $conta_destino);
            }
        }
    }

    public function processarsaldo() {
        $id_cliente = $this->input->post('id_cliente');
        $nome_cliente = $this->input->post('nome_cliente');
        $recupera = $this->Saldo_Model->recuperatransacao($id_cliente);

        $ch = curl_init();
        //Chaves de acesso  API enviadas via POST
        $post = array(
            'message_response' => array(
                'message' => 'success',
                'token' => $this->criptografia->codifica($recupera['id_transacao'])
            ),
            'data_response' => array(
                'transaction' => array(
                    'payment' => array(
                        'payment_method_id' => 221
                    ),
                    'order_number' => $recupera['id_transacao'],
                    'status_id' => 6
                )
            )
        );

        $base = 'https://www.amazoniacursos.com.br/negocios/';

        curl_setopt($ch, CURLOPT_URL, $base . 'retorno_adm');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_exec($ch);


        $this->session->set_flashdata('erro-form', '<div class="alert alert-success" role="alert"><i class="fa fa-check-circle"></i> Operação realizada com sucesso</div>');
        $this->session->set_flashdata('transacao-competo', '<div class="alert" style="background-color:#f1f8e9" role="alert">
                <span><b>Última Transação:</b></span> ' . $recupera['id_transacao'] . '
                <br>
                <span><b>Nome:</b></span> ' . $nome_cliente . ' 
                <br>
                <span><b>Valor:</b></span> R$ ' . number_format($recupera['valor'], 2, ',', '.') . '     
                </div>');

        redirect('saldo');
    }

    public function transacao($id_cliente, $id, $valor) {
        $token = '';
        $id_transacao = "NEG" . strtoupper(substr(md5(uniqid() . $id . date('Y-m-d H:i:s')), 0, 12));
        $this->session->set_userdata("transacao", $id_transacao);
        $this->Saldo_Model->transacao_transferencia($id_transacao, $id_cliente, $valor); // INSIRO A TRANSAÇÃO NO BANCO
        $this->Saldo_Model->log_transacao($id_transacao, $token, $id_cliente);       // INSIRO O LOG_TRANSAÇÃO NO BANCO           
    }

}
