<?php

require_once "../controllers/ClienteCtl.php";
require_once "../controllers/DispositivosCtl.php";
require_once "../movingPay/MPConsultaEstabelecimentos.php";
include_once "gerarToken.php";

if( $_SERVER['REQUEST_METHOD'] !== "POST" ){
    $retorno = array("status" => false, "motivoCritica" => 'Somente permitido método POST!');
    echo json_encode($retorno,  JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    exit();
}

$header = null;
foreach (getallheaders() as $name => $value) {
    $header[strtolower($name)]= $value;
}

if (empty($header['adgtoken']) || is_null($header['adgtoken'])){
    $retorno = array("status" => false, "motivoCritica" => 'Segurança: informação vazia.');
    echo json_encode($retorno,  JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    exit();
}

$jwt = $header['adgtoken'];

$json = file_get_contents('php://input');
if (empty($json) || is_null($json)){
    $retorno = array("status" => false, "motivoCritica" => 'Requisição Vazia!');
    echo json_encode($retorno,  JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    exit();
}

//efeuta o teste do Token

if (abreToken($jwt, '#@2022Adg$#CDX') != "OK") {
    $retorno = array("status" => false, "motivoCritica" => 'Token Inválido');
    echo json_encode($retorno, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    exit();
}

$resultado = json_decode($json);

$retorno = "";

if (!empty($resultado)) {

    $ec = $resultado->ec;
    $numSerie = $resultado->numSerie;
    $documento = preg_replace('/[^0-9]/', '', $resultado->documento);
    $razaoSocial = $resultado->razaoSocial;

    error_log("dados iniciais");
    error_log("numSerie: ".$numSerie);
    error_log("documento: ".$documento);
    error_log("razao: ".$razaoSocial);
    error_log("ec: ".$ec);


    if(isset($numSerie)){
        /*$MovingPay = new MPConsultaEstabelecimentos();
        $MovingPay->setCpfCnpj($documento);
        $MovingPay->buscaPorCnpj();
        if($MovingPay->getStatus() == true){
            $retorno = array("status" => true,
                "liberado"=>true,
                "erro"=>false,
                "cadastrarCliente"=>false,
                "cadastrarDispositivo"=>false,
                "codCliente"=>$MovingPay->getCodigoCliente(),
                "documento"=>$MovingPay->getCpfCnpj(),
                "razaoSocial"=>$MovingPay->getRazaoSocial(),
                "fantasia"=>$MovingPay->getNomeFantasia(),
                "pixLiberado"=>true,
                "boletoLiberado"=>false,
                "recargaLiberado"=>true,
                "debitoVeicularLiberado"=>true,
                "valorMaxPix"=>1000,
                "valorMaxBoleto"=>1000
            );
        }else{
            if($MovingPay->getStatusAutenticacao() == false){
                $retorno = array("status" => false,
                    "liberado"=>false,
                    "erro"=>true,
                    "motivoCritica" => 'Erro autenticacao'
                );
            }else{
                $Cliente = new ClienteCtl();
                $Cliente->setCliCpfCnpj($documento);
                $resCliente = $Cliente->getClientePorCpf();
                if($resCliente->rowCount() > 0){
                    $retorno = array("status" => true,
                        "liberado"=>false,
                        "erro"=>false,
                        "cadastrarCliente"=>false,
                        "cadastrarDispositivo"=>false,
                        "codCliente"=>$MovingPay->getCodigoCliente(),
                        "documento"=>$MovingPay->getCpfCnpj(),
                        "razaoSocial"=>$MovingPay->getRazaoSocial(),
                        "fantasia"=>$MovingPay->getNomeFantasia(),
                        "pixLiberado"=>true,
                        "boletoLiberado"=>false,
                        "recargaLiberado"=>true,
                        "debitoVeicularLiberado"=>true,
                        "valorMaxPix"=>1000,
                        "valorMaxBoleto"=>1000
                    );
                }else{
                    $retorno = array("status" => true,
                        "liberado"=>false,
                        "erro"=>false,
                        "cadastrarCliente"=>true,
                        "cadastrarDispositivo"=>false,
                        "codCliente"=>$MovingPay->getCodigoCliente(),
                        "documento"=>$MovingPay->getCpfCnpj(),
                        "razaoSocial"=>$MovingPay->getRazaoSocial(),
                        "fantasia"=>$MovingPay->getNomeFantasia(),
                        "pixLiberado"=>true,
                        "boletoLiberado"=>false,
                        "recargaLiberado"=>true,
                        "debitoVeicularLiberado"=>true,
                        "valorMaxPix"=>1000,
                        "valorMaxBoleto"=>1000
                    );
                }

            }

        }*/

        $Dispositivo = new DispositivosCtl();
        $Dispositivo->setDptNumSerie($numSerie);
        $resDispositivo = $Dispositivo->getPorNumSerieAtivo();
        if($resDispositivo->rowCount() > 0){
            $itemDispositico = $resDispositivo->fetch(PDO::FETCH_OBJ);

            if($itemDispositico->cli_id > 0){
                //AQUI QUANDO A MAQUINA JA ESTA COM CLIENTE
                $Cliente = new ClienteCtl();
                $Cliente->setCliId($itemDispositico->cli_id);
                $resCliente = $Cliente->getClientePorId();
                if($resCliente->rowCount() > 0){
                    $dadosCliente = $resCliente->fetch(PDO::FETCH_OBJ);

                    $qtdeCarcteresCidade = 13;
                    if(strlen($dadosCliente->cli_cidade) < 13){
                        $qtdeCarcteresCidade = strlen($dadosCliente->cli_cidade);
                    }

                    $retorno = array("status" => true,
                        //"cnpjSub"=>"00300000022001",
                        "cnpjCliente"=>"2870768700".$dadosCliente->cli_mcc,
                        //"cnpjCliente"=>"00300000022001",
                        //"cnpjCliente"=>$dadosCliente->cli_cpfcnpj,
                        "cnpjClienteComprovante"=>$dadosCliente->cli_cpfcnpj,
                        "cnpjSub"=>"28707687004900",
                        //"cnpjSub"=>"00300000022001",
                        "cnpjSubComprovante"=>"28707687000119",
                        "nomeComprovanteSub"=>"CDX EXPRESS",
                        "mccSub"=>"4900",
                        "softDescriptorSub"=>"CDX*EXPRESS",
                        "utilizaLayout"=>true,
                        "liberado"=>true,
                        "erro"=>false,
                        "cadastrarCliente"=>false,
                        "cadastrarDispositivo"=>false,
                        "codCliente"=>$dadosCliente->cli_id,
                        "documento"=>preg_replace('/[^0-9]/', '', $dadosCliente->cli_cpfcnpj),
                        //"documento"=>"28707687000119",
                        "razaoSocial"=>$dadosCliente->cli_nomerazao,
                        "fantasia"=>$dadosCliente->cli_fantasia,
                        "mccCliente"=>$dadosCliente->cli_mcc,
                        "softDescriptorCliente"=>$dadosCliente->cli_softdescriptor,
                        "nomeComprovanteCliente"=>$dadosCliente->cli_fantasia,
                        "subSellerCnpj"=>$dadosCliente->cli_cpfcnpj,
                        "subSellerLogradouro"=>$dadosCliente->cli_logradouro,
                        "subSellerNumero"=>$dadosCliente->cli_numero,
                        "subSellerComplemento"=>$dadosCliente->cli_complemento,
                        "subSellerBairro"=>$dadosCliente->cli_bairro,
                        "subSellerCidade"=>substr($dadosCliente->cli_cidade,0,$qtdeCarcteresCidade),
                        "subSellerEstado"=>$dadosCliente->cli_estado,
                        "subSellerCep"=>preg_replace('/[^0-9]/', '', $dadosCliente->cli_cep),
                        "pixLiberado"=>($dadosCliente->cli_pixparcelado == 1)?true:false,
                        "boletoLiberado"=>($dadosCliente->cli_boletoparcelado == 1)?true:false,
                        "recargaLiberado"=>true,
                        "debitoVeicularLiberado"=>($dadosCliente->cli_debitoveicular == 1)?true:false,
                        "vendaPIXLiberado"=>($dadosCliente->cli_vendapix == 1)?true:false,
                        "vendaCreditoPIXLiberado"=>($dadosCliente->cli_creditopix == 1)?true:false,
                        "vendaCustoLoja"=>true,
                        "vendaCustoCliente"=>true,
                        "valorMaxPix"=>70000,
                        "valorMaxBoleto"=>300,
                        "linkRecibo"=>"https://www.cdx.com.vc/meuscomprovantes?id=",
                        "logo"=>$dadosCliente->url_logo,
                        "logoComprovante"=>$dadosCliente->url_logocomprovante
                    );

                }else{
                    //SE NAO ENCONTROU O CLIENTE E ERRO
                    $retorno = array("status" => false,
                        //"cnpjSub"=>"00300000022001",
                        "cnpjCliente"=>"28707687004900",
                        "cnpjSub"=>"28707687004900",
                        "nomeComprovanteSub"=>"CDX EXPRESS",
                        "mccSub"=>"4900",
                        "softDescriptorSub"=>"CDX*EXPRESS",
                        "nomeComprovanteCliente"=>"CDX EXPRESS",
                        "utilizaLayout"=>true,
                        "liberado"=>false,
                        "erro"=>true,
                        "pixLiberado"=>false,
                        "boletoLiberado"=>true,
                        "recargaLiberado"=>true,
                        "debitoVeicularLiberado"=>true,
                        "vendaPIXLiberado"=>false,
                        "vendaCreditoPIXLiberado"=>false,
                        "vendaCustoLoja"=>true,
                        "vendaCustoCliente"=>true,
                        "valorMaxPix"=>70000,
                        "valorMaxBoleto"=>1000,
                        "motivoCritica" => 'Cliente nao encontrado.',
                        "linkRecibo"=>"https://www.cdx.com.vc/meuscomprovantes?id=",
                        "logo"=>"",
                        "logoComprovante"=>"",
                        "cnpjClienteComprovante"=>"28707687000119",
                        "cnpjSubComprovante"=>"28707687000119"
                    );
                }
            }else{
                //SE TEM DISPOSITIVO MAS ESTA LIBERADO PARA CADASTRO
                $retorno = array("status" => true,
                    //"cnpjSub"=>"00300000022001",
                    "cnpjCliente"=>"28707687004900",
                    "cnpjSub"=>"28707687004900",
                    "nomeComprovanteSub"=>"CDX EXPRESS",
                    "nomeComprovanteCliente"=>"CDX EXPRESS",
                    "mccSub"=>"4900",
                    "softDescriptorSub"=>"CDX*EXPRESS",
                    "utilizaLayout"=>true,
                    "liberado"=>false,
                    "erro"=>false,
                    "cadastrarCliente"=>true,
                    "cadastrarDispositivo"=>false,
                    "pixLiberado"=>false,
                    "boletoLiberado"=>true,
                    "recargaLiberado"=>true,
                    "debitoVeicularLiberado"=>true,
                    "vendaPIXLiberado"=>false,
                    "vendaCreditoPIXLiberado"=>false,
                    "vendaCustoLoja"=>true,
                    "vendaCustoCliente"=>true,
                    "valorMaxPix"=>70000,
                    "valorMaxBoleto"=>1000,
                    "linkRecibo"=>"https://www.cdx.com.vc/meuscomprovantes?id=",
                    "logo"=>"",
                    "logoComprovante"=>"",
                    "cnpjClienteComprovante"=>"28707687000119",
                    "cnpjSubComprovante"=>"28707687000119"
                );
            }


        }else{
            //NAO ENCONTROU DISPOSITIVO CADASTRADO, CADASTRAR DISPOSITIVO
            $retorno = array("status" => true,
                //"cnpjSub"=>"00300000022001",
                "cnpjCliente"=>"28707687004900",
                "cnpjSub"=>"28707687004900",
                "nomeComprovanteSub"=>"CDX EXPRESS",
                "nomeComprovanteCliente"=>"CDX EXPRESS",
                "mccSub"=>"4900",
                "softDescriptorSub"=>"CDX*EXPRESS",
                "utilizaLayout"=>true,
                "liberado"=>false,
                "erro"=>false,
                "cadastrarCliente"=>true,
                "cadastrarDispositivo"=>true,
                "pixLiberado"=>false,
                "boletoLiberado"=>true,
                "recargaLiberado"=>true,
                "debitoVeicularLiberado"=>true,
                "vendaPIXLiberado"=>false,
                "vendaCreditoPIXLiberado"=>false,
                "vendaCustoLoja"=>true,
                "vendaCustoCliente"=>true,
                "valorMaxPix"=>70000,
                "valorMaxBoleto"=>1000,
                "cnpjClienteComprovante"=>"28707687000119",
                "cnpjSubComprovante"=>"28707687000119"
            );

            //AQUI QUANDO A MAQUINA JA ESTA COM CLIENTE
            /*$Cliente = new ClienteCtl();
            $Cliente->setCliId(2);
            $resCliente = $Cliente->getClientePorId();
            if($resCliente->rowCount() > 0){
                $dadosCliente = $resCliente->fetch(PDO::FETCH_OBJ);

                $retorno = array("status" => true,
                    "liberado"=>true,
                    "erro"=>false,
                    "cadastrarCliente"=>false,
                    "cadastrarDispositivo"=>false,
                    "codCliente"=>$dadosCliente->cli_id,
                    "documento"=>$dadosCliente->cli_cpfcnpj,
                    "razaoSocial"=>$dadosCliente->cli_nomerazao,
                    "fantasia"=>$dadosCliente->cli_fantasia,
                    "pixLiberado"=>true,
                    "boletoLiberado"=>true,
                    "recargaLiberado"=>true,
                    "debitoVeicularLiberado"=>true,
                    "vendaPIXLiberado"=>true,
                    "valorMaxPix"=>1000,
                    "valorMaxBoleto"=>1000,
                    "linkRecibo"=>"https://www.cdx.com.vc/meuscomprovantes?id=",
                    "logo"=>$dadosCliente->url_logo,
                    "logoComprovante"=>$dadosCliente->url_logocomprovante
                );

            }else{
                //SE NAO ENCONTROU O CLIENTE E ERRO
                $retorno = array("status" => false,
                    "liberado"=>false,
                    "erro"=>true,
                    "pixLiberado"=>true,
                    "boletoLiberado"=>true,
                    "recargaLiberado"=>true,
                    "debitoVeicularLiberado"=>true,
                    "vendaPIXLiberado"=>true,
                    "valorMaxPix"=>1000,
                    "valorMaxBoleto"=>1000,
                    "motivoCritica" => 'Cliente nao encontrado.',
                    "linkRecibo"=>"https://www.cdx.com.vc/meuscomprovantes?id=",
                    "logo"=>"",
                    "logoComprovante"=>""
                );
            }*/
        }

        /*$Cliente = new ClienteCtl();
        $Cliente->setCliCpfCnpj($documento);
        $resCliente = $Cliente->getClientePorCpf();
        if($resCliente->rowCount() > 0){
            $dadosCliente = $resCliente->fetch(PDO::FETCH_OBJ);
            if($dadosCliente->cli_status == "ATIVO"){
                $retorno = array("status" => true,
                    "liberado"=>true,
                    "erro"=>false,
                    "cadastrarCliente"=>false,
                    "cadastrarDispositivo"=>false,
                    "codCliente"=>$dadosCliente->cli_id,
                    "documento"=>$dadosCliente->cli_cpfcnpj,
                    "razaoSocial"=>$dadosCliente->cli_nomerazao,
                    "fantasia"=>$dadosCliente->cli_fantasia,
                    "pixLiberado"=>true,
                    "boletoLiberado"=>true,
                    "recargaLiberado"=>true,
                    "debitoVeicularLiberado"=>true,
                    "valorMaxPix"=>1000,
                    "valorMaxBoleto"=>1000
                );
            }else{
                $retorno = array("status" => true,
                    "liberado"=>false,
                    "erro"=>false,
                    "cadastrarCliente"=>false,
                    "cadastrarDispositivo"=>false,
                    "codCliente"=>$dadosCliente->cli_id,
                    "documento"=>$dadosCliente->cli_cpfcnpj,
                    "razaoSocial"=>$dadosCliente->cli_nomerazao,
                    "fantasia"=>$dadosCliente->cli_fantasia,
                    "pixLiberado"=>true,
                    "boletoLiberado"=>true,
                    "recargaLiberado"=>true,
                    "debitoVeicularLiberado"=>true,
                    "valorMaxPix"=>1000,
                    "valorMaxBoleto"=>1000
                );
            }

        }else{
            $retorno = array("status" => true,
                "liberado"=>false,
                "erro"=>false,
                "cadastrarCliente"=>true,
                "cadastrarDispositivo"=>false,
                "codCliente"=>"",
                "documento"=>"",
                "razaoSocial"=>"",
                "fantasia"=>"",
                "pixLiberado"=>true,
                "boletoLiberado"=>true,
                "recargaLiberado"=>true,
                "debitoVeicularLiberado"=>true,
                "valorMaxPix"=>1000,
                "valorMaxBoleto"=>1000
            );
        }*/

    }else{
        $retorno = array("status" => false,
            //"cnpjSub"=>"00300000022001",
            "cnpjSub"=>"28707687000119",
            "cnpjClienteComprovante"=>"28707687000119",
            "cnpjSubComprovante"=>"28707687000119",
            "mccSub"=>"4900",
            "softDescriptorSub"=>"CDX*EXPRESS",
            "utilizaLayout"=>true,
            "liberado"=>false,
            "erro"=>true,
            "valorMaxPix"=>70000,
            "valorMaxBoleto"=>1000,
            "motivoCritica" => 'Documento nao informado'
        );
    }


    /*$Dispositivos = new DispositivosCtl();
    $Dispositivos->setDptNumSerie($numSerie);
    $resDispo = $Dispositivos->getPorNumSerieAtivo();

    if($resDispo->rowCount() > 0){
        $itemDispo = $resDispo->fetch(PDO::FETCH_OBJ);

        $Cliente = new ClienteCtl();
        $Cliente->setCliId($itemDispo->cli_id);
        $resCliente = $Cliente->getClientePorId();
        if ($resCliente->rowCount()> 0){
            $dadosCli = $resCliente->fetch(PDO::FETCH_OBJ);

            if($dadosCli->cli_status == "ATIVO"){

                $retorno = array("status" => true,
                    "liberado"=>true,
                    "erro"=>false,
                    "cadastrarCliente"=>false,
                    "cadastrarDispositivo"=>false,
                    "codCliente"=>$dadosCli->cli_id,
                    "documento"=>$dadosCli->cli_cpfcnpj,
                    "razaoSocial"=>$dadosCli->cli_nomerazao,
                    "fantasia"=>$dadosCli->cli_fantasia,
                    "email"=>$dadosCli->cli_email,
                    "telefone"=>$dadosCli->cli_telefone
                );

            }else{
                if($dadosCli->cli_status == "AGUARDANDO"){
                    $retorno = array("status" => true,
                        "liberado"=>false,
                        "erro"=>false,
                        "cadastrarCliente"=>false,
                        "cadastrarDispositivo"=>false,
                        "codCliente"=>$dadosCli->cli_id,
                        "documento"=>$dadosCli->cli_cpfcnpj,
                        "razaoSocial"=>$dadosCli->cli_nomerazao,
                        "fantasia"=>$dadosCli->cli_fantasia,
                        "email"=>$dadosCli->cli_email,
                        "telefone"=>$dadosCli->cli_telefone
                    );
                }else{
                    //status desativado, deve informar ao cliente
                    $retorno = array("status" => false, "erro"=>true, "liberado"=>false, "motivoCritica" => 'Cliente nao esta ativo.');
                }
            }

        }else{
            //nao encontrou cliente, devera solicitar para que o mesmo efetue cadastro no equipamento
            $retorno = array("status" => false, "erro"=>false, "cadastrarCliente"=>true, "cadastrarDispositivo"=>false, "motivoCritica" => 'Nao encontrado Cliente cadastrado.');
        }


    }else{
        $retorno = array("status" => false, "erro"=>false, "cadastrarCliente"=>true, "cadastrarDispositivo"=>true, "motivoCritica" => 'Nao encontrado dados cadastrados para este Num. Serie.');
    }*/


}else{
    $retorno = array("status" => false, "liberado"=>false, "erro"=>true, "motivoCritica" => 'Requisição Vazia!');
}
error_log(json_encode($retorno));
echo json_encode($retorno,  JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);