<?php

class TestesController extends GxController {

    public function actionChaveAcesso() {
        $gerador = new ChaveAcesso();

        $clientes = Clientes::model()->findAll('
            CLI_SITUACAO = "A" and 
            length(CLI_DTCHAVEGERADA) > 5 and
            CLI_DTCHAVEGERADA is not null
            order by CLI_IDCLIENTE');

        foreach($clientes as $cliente) {

            $documento = Util::mask($cliente->CLI_CNPJCPF, Mask::DOCUMENTO);
            $data = DateTime::createFromFormat("d/m/Y", $cliente->CLI_DTCHAVEGERADA);
            $produto = $cliente->CLI_PRODUTO;
            $usuarios = $cliente->CLI_QTDUSUARIOS;
            $modulo1 = $cliente->CLI_MODULO1;
            $modulo2 = $cliente->CLI_MODULO2;
            $modulo3 = $cliente->CLI_MODULO3;
            $modulo4 = $cliente->CLI_MODULO4;
            $modulo5 = $cliente->CLI_MODULO5;

            $tipoNome = $cliente->CLI_TIPOPESSOA == 'F' ? 'CPF' : 'CPNJ';
            if($data) {
            
                $chaveWindel = $cliente->CLI_CHAVEACESSO;
                $validaWindel = $gerador->chaveValida($chaveWindel);
                $unnenctyptedWindel = $gerador->unnencrypted;

                $chaveCrm = $gerador->gerarChaveAcesso($documento, $usuarios, $data, $produto, [$modulo1, $modulo2, $modulo3, $modulo4, $modulo5]);
                $unnenctyptedCrm = $gerador->unnencrypted;
                $validaCrm = $gerador->chaveValida($chaveCrm);

                $diff = $this->get_decorated_diff($chaveWindel, $chaveCrm);
                $diff2 = $this->get_decorated_diff($unnenctyptedWindel, $unnenctyptedCrm);

                
                    pr("Cod cliente. <a href='https://crm.windel.com.br/index.php?r=clientes/view&id={$cliente->CLI_IDCLIENTE}&page=produto' target='_blank'>{$cliente->CLI_IDCLIENTE}</a> | Nome cliente: {$cliente->CLI_NOME}");
                    pr("{$tipoNome}: {$documento} | Data geração. {$cliente->CLI_DTCHAVEGERADA} | Usuários: {$usuarios} | Produto: {$produto} | Módulos: {$modulo1} {$modulo2} {$modulo3} {$modulo4} {$modulo5}");
                    pr('Chave gerada no windel : '. $diff['windel'] . ' | É Válida? ' . ($validaWindel == 1 ? '<span style="color: green">Sim</span>' : '<span style="color: red">Não</span>').' | Unnenctypted: ' . $diff2['windel']);
                    pr('Chave gerada no CRM    : '. $diff['crm'] . ' | É Válida? ' . ($validaCrm == 1 ? '<span style="color: green">Sim</span>' : '<span style="color: red">Não</span>').' | Unnenctypted: ' . $diff2['crm']);
                    pr('São iguais? ' . ($chaveWindel == $chaveCrm ? '<span style="color: green">Sim</span>' : '<span style="color: red">Não</span>'));
                    if($chaveWindel != $chaveCrm) {
                        $data = substr($unnenctyptedWindel, -11, 8);
                        $data = DateTime::createFromFormat("dmY", $data)->format('d/m/Y');
                        pr("Data de geração salva no CRM       : <span style='color: red'>{$cliente->CLI_DTCHAVEGERADA}</span>");
                        pr("Data de geração encontrada na chave: <span style='color: red'>$data</span>");
                    }
                    echo '<hr />';
                
            }
        }


        Yii::app()->end();
    }

    private function get_decorated_diff($windel, $crm) {
        $windel = str_split($windel);
        $crm = str_split($crm);

        $newWindel = '';
        $newCrm = '';
        foreach($windel as $key => $value) {
            $valueCrm = $crm[$key];

            if($value != $valueCrm) {
                $value = '<span style="background-color:#ccffcc">' . $value . '</span>';
                $valueCrm = '<span style="background-color:#ffcccc">' . $valueCrm . '</span>';
            }
            $newWindel .= $value;
            $newCrm .= $valueCrm;
        }

        return ['windel' => $newWindel, 'crm' => $newCrm];
    }
}