<?php

/**
 * Script criado para gerar endossos que desfazem a subvenção federal
 * Deve ser passado um arquivo .csv com as colunas:
 * proposta, observacao, premio, valor de subvencao e nro de parcelas
 */
$tempo_inicio = date('H:i:s'); //hora que termina de endossar todas propostas passada pelo arquivo.
$mail_content = "Tempo de inicio do script: " . $tempo_inicio . ".<br><br>";

require_once('Agro_Curl.php');
$Curl = new Agro_Curl('localhost', 'http');
$linhas = array();
$nro_de_endosso = 0;

//criando arquivo de log vazio
$filename = '/tmp/tonismar.' . date('YmdGis') . '.log';
$whandle = @fopen($filename, 'a');

//lendo arquivo com propostas e nro de parcelas
//padrao do arquivo .csv proposta;nr_de_parcelas
$handle = @fopen("$argv[1]", 'r');

require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$config = new Zend_Config_Ini('../application/config/application.ini', 'docker');
$Adapter = Zend_Db::factory('PDO_PGSQL', $config->resources->db->params);
Zend_Db_Table_Abstract::setDefaultAdapter($Adapter);
$db = Zend_Db_Table::getDefaultAdapter();

if ($handle) {

    //faz até final de arquivo de entrada acabar
    while (($buffer = fgets($handle, 4096)) !== false) {

	$array_post = array();    
	$dados = explode(';', $buffer);
        $Curl->setUrl('/endosso/proposta/duplicarlote/id/' . $dados[0] . '/is_lote/false');
        $Curl->doRequest();

        $result = $Curl->getResult();

        if ($result->id) {
            $id_proposta_endossada = $result->id;

            //INICIO OBSERVACAO
            $array_post['id_proposta'] = $id_proposta_endossada;
//            $array_post['ds_observacao'] = 'Endosso de restituição ao Segurado, devido à concessão da Subvenção Estadual.';
	        $array_post['ds_observacao'] = 'Endosso de restituição parcial da subvenção federal, devido a redução de prêmio.';
	        $Curl->setUrl('/endosso/ajax/observacoeslote');
            $Curl->doRequest('POST', $array_post);

            $result = $Curl->getResult();
            //FIM OBSERVACAO

            $array_post = array();
            $sum_vl_premio = 0;

            //INICIO RESUMOS E COBERTURAS
            $resumo = $db->select();
            $resumo->from(array('p' => 'seguro.propostas_coberturas'), array('fl_principal', 'vl_franquia', 'vl_taxa', 'vl_premio', 'vl_lmi', 'id_cobertura'));
            $resumo->join(array('c' => 'produto.coberturas'), 'c.id = p.id_cobertura', array('ds_chave_cobertura'));
            $resumo->join(array('pr' => 'seguro.propostas'), 'p.id_proposta = pr.id');
            $resumo->join(array('pc' => 'produto.produtos_coberturas'), 'pc.id_produto = pr.id_produto and pc.id_cobertura = p.id_cobertura', array('fl_contratacao_automatica', 'cd_cobertura_seguradora'));
            $resumo->where('id_proposta = ?', $id_proposta_endossada);
            $resumo->where('fl_contratacao_automatica = false');
            $resumo->order('fl_principal desc');
            $resumo_coberturas = $db->fetchAll($resumo);

            foreach ($resumo_coberturas as $cobertura) {
                $cob[$cobertura['id_cobertura']]['fl_principal'] = $cobertura['fl_principal'];
                $cob[$cobertura['id_cobertura']]['id_cobertura'] = $cobertura['id_cobertura'];
                $cob[$cobertura['id_cobertura']]['vl_franquia'] = $cobertura['vl_franquia'];
                $cob[$cobertura['id_cobertura']]['vl_taxa'] = $cobertura['vl_taxa'];
                $cob[$cobertura['id_cobertura']]['vl_lmi'] = $cobertura['vl_lmi'];
                $cob[$cobertura['id_cobertura']]['vl_premio'] = $cobertura['vl_premio'];
                $cob[$cobertura['id_cobertura']]['vl_taxa'] = $cobertura['vl_taxa'];
                $sum_vl_premio += $cobertura['vl_premio'];
            }

            $array_post['coberturas'] = $cob;
            //$array_post['vl_premio_liquido'] = $sum_vl_premio;
            $array_post['vl_premio_liquido'] = 0;
            //$array_post['vl_premio_pagar'] = $sum_vl_premio;
            $array_post['vl_premio_pagar'] = 0;
            $array_post['vl_custo_apolice'] = 0;
            $array_post['id_proposta'] = $id_proposta_endossada;
            $Curl->setUrl('/endosso/ajax/coberturaslote');
            $Curl->doRequest('POST', $array_post);

	    $result = $Curl->getResult();
	    $cob = array();
            //FIM RESUMOS E COBERTURAS

            //PARCELAMENTO
            $array_post = array();

            if ($result->status == true) {
                $array_post['id_proposta'] = $id_proposta_endossada;

                $Curl->setUrl('/endosso/ajax/parcelamentolote/id_proposta/' . $id_proposta_endossada . '/tipo_endosso/2');
                $Curl->doRequest('GET');
                $result = $Curl->getResult();

                $decoded_result = json_decode(json_encode($result), true);
                $i = 0;

                if (is_array($decoded_result['message'])) {
                    $parcela = array();
                    foreach ($decoded_result['message'] as $parc) {
                        $i++;
                        $parcela[$i]['liquido'] = $parc['vl_total'];
                        $parcela[$i]['federal'] = $dados[1];
                        $parcela[$i]['estadual'] = $parc['vl_subvencao_estadual'];
                        $parcela[$i]['segurado'] = 0;
                        $parcela[$i]['vencimento'] = $parc['dt_vencimento'];
                    }

                    $array_post['parcela'] = $parcela;

                    $Curl->setUrl('/endosso/ajax/parcelamentolote');
                    $Curl->doRequest('POST', $array_post);
                    $result = $Curl->getResult();
                }
            }
            //FIM COBRA SUBVENCAO SEGURADO / PARCELAMENTO

            //se o endosso foi gerado com sucesso, pega o id_proposta de endosso
            if ($id_proposta_endossada) {
                $Curl->setUrl('/endosso/ajax/finaliza/id_proposta/' . $id_proposta_endossada . '/status/ORCAMENTO_ENDOSSO/tp_endosso/2/fl_apolice_original/true');
                $Curl->doRequest();
                $Curl->setUrl('/endosso/ajax/finaliza/id_proposta/' . $id_proposta_endossada . '/status/AGUARDANDO_ENVIO_SEG/tp_endosso/2/fl_apolice_original/true');
                $Curl->doRequest();

                $result = $Curl->getResult();
            }

            $lin = $dados[0] . ';' . $id_proposta_endossada . ';' . $result->message . "\n";

            fputs($whandle, $lin);
            $mail_content .= $lin . '<br>';

            unset($lin);
        }

        $nro_de_endosso++;

        if (($nro_de_endosso % 20) == 0) {
            sleep(120);
        }
    }

    if (!feof($handle)) {
        echo "Error: inesperado\n";
    }

    $tempo_fim = date('H:i:s'); //hora que termina de endossar todas propostas passada pelo arquivo.
    $mail_content .= "<br><br>Tempo de término do script: " . $tempo_fim . ".";

    //$Curl->sendMail($mail_content);

    fclose($handle);
    fclose($whandle);
} else {
    echo 'Erro ao abrir arquivo ' . $argv[1] . '.';
}
?>
