<?php
/**
 * ATENÇÃO : Esse exemplo usa classe PROVISÓRIA que será removida assim que
 * a nova classe DANFE estiver refatorada e a pasta EXTRAS será removida.
 */
 
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//error_reporting(E_ALL);
error_reporting(E_ALL ^ E_NOTICE);
ini_set('display_errors', 'On');
include_once 'header.php';
include_once 'inc/nfecode_class.php';
require_once 'inc/usuario.php';
include_once 'inc/messages.php';

include("api/PHPMailer/src/Exception.php");
include("api/PHPMailer/src/PHPMailer.php");
include("api/PHPMailer/src/SMTP.php");

$id_nfe= 0;
$st_download= false; // confirma=dHJ1ZQ==
$st_email = false;
$ds_email = '';
$redirect = '';
$path_nfephp = 'api/nfephp'; // ../nfephp
$path_nfephp = $NfeCode->getPathNFEPHP();

require_once "$path_nfephp/bootstrap.php";

use NFePHP\NFe\ToolsNFe;
use NFePHP\Extras\Danfe;
use NFePHP\Common\Files\FilesFolders;

$nfe    = new ToolsNFe("$path_nfephp/config/config.json");
$NfeCode= New NfeCode();

// capturando o usuário e unidade logado
$usuario_list = getLoggedUser();
//$id_usuario=$usuario_list['id'];
$id_unidade=$usuario_list['unidade'];

// Verifica se foi passado o parametro da NF
if(isset($_GET['id'])){
  $id = $_GET['id'];
  $id_nfe = base64_decode($id);
}

if(isset($_POST['st_opcao'])){
  if($_POST['st_opcao']==1){
    $st_download=true;
  }else {
    $st_email = true;
  }
}

if(isset($_POST['ds_email'])){
  $ds_email = $_POST['ds_email'];
}

if(isset($_POST['ds_titulo'])){
  $ds_titulo = $_POST['ds_titulo'];
}else{
    $ds_titulo = '';
}

if(isset($_POST['ds_corpo'])){
  $ds_corpo = $_POST['ds_corpo'];
}else{
    $ds_corpo = '';
}

// Dados para envio do e-mail
    
    $sql_unidade = "select ds_razao_social, ds_email from erpc_unidades where id=$id_unidade";
  
    $result_unidade = mysqli_query($conexao, $sql_unidade) or die(myqli_error($conexao));
    if(mysqli_num_rows($result_unidade) > 0){
        while($row = mysqli_fetch_assoc($result_unidade)){
            $ds_unidade = $row['ds_razao_social'];
            $ds_email_unidade = $row['ds_email'];
        }
        if(is_null($ds_email_unidade)){
            $ds_email_unidade = "naoresponder@naoresponder.com.br";
        }
    }
    

/*
$chave = '52160500067985000172550010000000101000000100';
$xmlProt = "D:/xampp/htdocs/GIT-nfephp-org/nfephp/xmls/NF-e/homologacao/enviadas/aprovadas/201605/{$chave}-protNFe.xml";
// Uso da nomeclatura '-danfe.pdf' para facilitar a diferenciação entre PDFs DANFE e DANFCE salvos na mesma pasta...
$pdfDanfe = "D:/xampp/htdocs/GIT-nfephp-org/nfephp/xmls/NF-e/homologacao/pdf/201605/{$chave}-danfe.pdf";

$chave   = '35161207494091000108550010000000011000000019';
$xmlProt = "../nfephp/xmls/nfe/homologacao/enviadas/aprovadas/201612/{$chave}-protNFe.xml";
$pdfDanfe= "../nfephp/xmls/nfe/homologacao/pdf/201612/{$chave}-danfe.pdf";
*/

?>
<div class="block">
  <form method="post" id="validate_custom" action="erpc_nfecode_danfe.php?id=<?=$id?>">
  <div class="form-row">
    <div class="col-md-12">
        <?php displayMessagesAndErrors(true); ?>
        <span>Informe como deseja abrir o arquivo Danfe Número :
        <?php echo $id_nfe;?>?</span>
      </div>
  </div>

  <div class="form-row">
    <div class="col-md-2"><label>Opção</label></div>
		<div class="col-md-8">
      <label class="radio-inline">
          <input type=radio class=validate[required] name="st_opcao" value="1" <?if($st_download==1){echo 'checked';}?>/> Download </label>

			<label  class="radio-inline">
			    <input type=radio class=validate[required] name="st_opcao"  value="2" <?if($st_email==1){echo 'checked';}?>/> Enviar por E-mail </label>
		</div>
	</div>

  <?
  /* Se selecionou o Email, deve-se informar*/
  if($st_email==true){ ?>
    <div class="form-row">
      <div class="col-md-2"><label>Informe o e-mail: </label></div>
  		<div class="col-md-6">
        <input type=email class=validate[required] placeholder="E-mail do Destinatário" name="ds_email" maxlength="255">
      	</div>
  	</div>
  	<div class="form-row">
      <div class="col-md-2"><label>Título do e-mail </label></div>
  		<div class="col-md-6">
        <input type=text class=validate[required]  name="ds_titulo" value="NFe <?=$ds_unidade;?> " maxlength="120">
      	</div>
  	</div>
  	<div class="form-row">
      <div class="col-md-2"><label>Corpo do e-mail: </label></div>
  		<div class="col-md-6">
        <input type=text class=validate[required]  name="ds_corpo" value="E-mail enviado por sistema. Não responder." maxlength="255">
      	</div>
  	</div>
  <? }?>

  <div class="block">
    <div class="content controls">
      <div class="form-row">
        <div class="col-md-6 text-right">
          <button type="submit" name="btn-prosseguir" id="btn-prosseguir" onClick="$('#validate_custom').validationEngine('hide');" class="btn btn-primary btn-cleanx">Prosseguir</button>
          <button type="button" name="btn-voltar"     id="btn-voltar"     onclick="javascript:window.history.back();"    class="btn btn-default btn-cleanx">Voltar</button>

          <!--
          <button type="submit" name="btn-add" id="btn-add" class="btn btn-primary btn-cleanx" onClick="$('#validate_custom').validationEngine('hide');" >Adicionar</button>
          <button type="button" name="btn-voltar" id="btn-voltar" class="btn btn-default btn-cleanx">Voltar</button>
        -->
        </div>
      </div>
    </div>
  </div>

 </form>
</div>

<?

/* se selecionado só download redirecina */
if($st_download==true){
  $pdf_name = gerarDanfe();
  /*
  $redirect = "$pdf_name";
  // unlink($pdf_name);*/

  header('Content-type: application/zip');
  header('Content-Disposition: inline; filename="' . $pdf_name . '"');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  ob_clean();
  flush();
  if (readfile($pdf_name))
  {
    unlink($pdf_name);
  }
}

/* Envia o Email para o Usuário */
if($st_email==true && $ds_email!=''){
/*
  $xmlPath = gerarDanfe();
  $actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
  // Posição da última Barra
  $urlpos = strripos($actual_link, '/');

  // Link a ser enviado para o Usuário
  $urllink= substr($actual_link, 0, $urlpos) . '/' . $xmlPath;

  $to = $ds_email;
  $from = 'escolheremail@escolheremail.com';
  $message = "Segue abaixo o link para o Download da Danfe solicitada.  Agradecemos a preferência 
  " . $urllink . "
  Atenciosamente,
  XXXX";
  $subject = "XXX - NFe";
  enviarEmail($to, $from, $message, $subject);
  $redirect = "erpc_monitoramento_nfe_list.php";
*/  

    $pdfpath = gerarDanfe();
    /*
    $actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    // Posição da última Barra
    $urlpos = strripos($actual_link, '/');
    
    // Link do PDF
    $urllink= substr($actual_link, 0, $urlpos) . '/' . $pdfpath;
    */
    //echo "<pre>" . $pdfpath . "</pre>";
    //exit;
  
    //Objeto PHPMailer para envio do e-mail
    $email = new PHPMailer(TRUE);
    
    $email->CharSet   = 'UTF-8';
    //$email->From      = 'teste@teste.com';
    $email->From      = "$ds_email_unidade";
    $email->FromName  = $ds_unidade;
    //$email->Subject   = "NFe " . $ds_unidade;
    $email->Subject   = "$ds_titulo";
    $email->Body      = "E-mail enviado por sistema. Não responder.";
    $email->Body      = "$ds_corpo";
    $email->AddAddress( $ds_email );
    //$email->AddAddress( $ds_email_contab) ; 

    $email->AddAttachment($pdfpath);
    
    
    if($email->Send()){
        addMessage("E-mail enviado com Sucesso");    
    }else{
        addMessage("Falho no envio do E-mail.");
    }
    
	//$redirect = "erpc_monitoramento_nfe_list.php";
	
}

function gerarDanfe(){
  global $NfeCode;
  global $id_nfe;
  global $path_nfephp;

  $NfeCode->setNrNota($id_nfe);
  $getDoc = $NfeCode->getDocumento();
  $getLogo= $NfeCode->getEmitente();
  $redirect='';

  if(count($getDoc)>0 && count($getLogo)>0){

    $p_chave = $getDoc[0]['ds_chave'];
    $p_tpAmb = $getDoc[0]['tpAmb'];
    $p_logo  = $getLogo[0]['logo'];

    $p_dt_sai= $getDoc[0]['dt_nfe'];

    // data do documento de saida , NFe
    $dt_conv = date('Ym', strtotime($p_dt_sai));

    $p_tpAmb = $NfeCode->getAmbiente();

    if($p_tpAmb=='2'){
      $p_folder = 'homologacao';
    }else {
      $p_folder = 'producao';
    }

    /* 19/07/2017 Edival, Ler o path do XML no Bando de Dados */
    /* $xmlProt = "../nfephp/xmls/nfe/$p_folder/enviadas/aprovadas/$dt_conv/{$p_chave}-protNFe.xml";
       $pdfDanfe= "api/nfephp/xmls/nfe/$p_folder/pdf/$dt_conv/{$p_chave}-danfe.pdf";*/

       $sql   = "select ds_xml from erpc_documentos_saida where id=$id_nfe";
       $getXml= $NfeCode->getSQL($sql);

    $xmlProt = $getXml[0]['ds_xml'];
    $pdfDanfe= "$path_nfephp/xmls/nfe/$p_folder/pdf/{$p_chave}-danfe.pdf";

    // verifica se xml existe na pasta
    if(file_exists($xmlProt)){
      try{
        $docxml = FilesFolders::readFile($xmlProt);
        $danfe = new Danfe($docxml, 'P', 'A4', $p_logo, 'I', '');

        $id   = $danfe->montaDANFE();

        $salva= $danfe->printDANFE($pdfDanfe, 'F'); //Salva o PDF na pasta

        /* Retirado a abertura automarica, dá erro */
        // $abre = $danfe->printDANFE("{$id}-danfe.pdf", 'I'); //Abre o PDF no Navegador

      }catch (Exception $e) {
        $p_error = 'Houve um erro ao montar o PDF : ' . $e->getMessage() ;
        addError($p_error);
        $redirect = "erpc_monitoramento_nfe_list.php";
      }
    }else{
      addError("Arquivo XML não existe no diretório! $xmlProt");
      $redirect = "erpc_monitoramento_nfe_list.php";
    }
  }else{
      addError("Número da Nota Fiscal Inválida! $id_nfe");
      $redirect = "erpc_monitoramento_nfe_list.php";
  }
  return $pdfDanfe;
}

// abaixo somente as funções
function clean_string($string) {
	$bad = array(
		"content-type",
		"bcc:",
		"to:",
		"cc:",
		"href"
	);
	return str_replace($bad, "", $string);
}

function enviarEmail($toEmail, $fromEmail, $message, $subject, $cc='') {
  $to      = clean_string($toEmail); // Send email to our user
  $fromEmail = clean_string($fromEmail);
  $message = clean_string($message); // Our message above including the link
  $subject = clean_string($subject); // Give the email a subject
  $cc = clean_string($cc);

  $headers = 'Content-Type: text/plain; charset=UTF-8' . "\r\n";
  $headers .= 'Content-Transfer-Encoding: 8bit' . "\r\n";
  $headers .= 'From:' . $fromEmail . "\r\n"; // Set from headers
  if (!empty($cc)) {
    $cc = clean_string($cc);
    $headers .= 'Cc: ' . $cc . "\r\n";
  }


  try{
    mail($to, $subject, $message, $headers); // Send our email
  }catch (Exception $e) {
    $p_error = "E-mail não enviado:" . $message . "<br>" . $e->getMessage() ;
    addError($p_error);
  }
}


// se houve redirecionamento
if(!$redirect==""){
  header("Location:$redirect");
  exit;
}

include_once 'footer.php';
