<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/perl
#
# Script criado para que ao solicitar a exportacao de gravacoes para um determinado periodo
# nos realizamos em background a separacao e criacao dos arquivos para disponibilizacao do usuario
# como este processo pode demorar foi optado por processar os pedidos em alguns momentos do dia.
#
# Autor: Mike Tesliuk &lt;mike@wsu.com.br&gt;
#

use Date::Simple qw/date/;
use Date::Range;
use DBI;
use Data::Dumper;
use MIME::Lite;


# Declaracao de variaveis padrao
$database = "pabxvirtual";
$dbhost = "localhost";
$dbport   = "3306";
$dbuser   = "asteriskuser";
$dbpass   = "2sf__d09AJDKaef";


$url = "168.121.6.166";
$email_from = "sac@brdsoft.com.br";
$company = "BRDSOFT";

$wwwDir = "/var/www/html/pabxvirtual/storage/app/public/dl_files/customer";

$gerado = 0;

# preparando o banco de dados

$dsn = "DBI:mysql:database=$database;host=$dbhost;port=$dbport";
$dbh = DBI-&gt;connect($dsn, $dbuser, $dbpass);


$query = "SELECT
               a.id as id_pedido,
               a.accountcode,
               DATE(a.periodo_inicial) as data_inicio,
               DATE(a.periodo_final) as data_final,
               a.filename,
               a.instancia,
               b.name as nomerazao,
               b.email,
               b.login
            FROM pabxvirtual_dl_gravacoes a
              JOIN users b ON b.id=a.accountcode
            WHERE status = '0'";


# Executando query
my $sth = $dbh-&gt;prepare($query);
$sth-&gt;execute();


if($sth-&gt;rows &gt; 0){

  # iniciando loop nos resultados
   while(my $qResult = $sth-&gt;fetchrow_hashref()){

     # Validando o range de datas que temos que buscar os arquivos
      my @data_range = get_dates($qResult-&gt;{'data_inicio'}, $qResult-&gt;{'data_final'});
      #my $getDir = "/home/" . $qResult-&gt;{'instancia'} . "/var/spool/asterisk/monitor/";
      my $getDir = "/var/spool/asterisk/monitor/";
      print "Diretorio principal de gravacoes: $getDir\n";

      $tmpfile = "/home/tmp/" . $qResult-&gt;{'filename'};

      foreach my $date (@data_range){
        my ($ano, $mes, $dia) = split(/-/, $date);

        chdir($getDir) or die("Falha ao entrar no diretorio de gravacoes");
        $dirData = $qResult-&gt;{'accountcode'} . "/" . $ano . "/" . $mes . "/" . $dia;
        print "Diretorio solicitado: $dirData\n";



        if(-e $dirData){

	  print "Compactando $dirData em $tmpfile\n";
          my @mycmd = ("/usr/bin/zip", "-r", $tmpfile, $dirData);
          system(@mycmd) == 0 or die "System @mycmd failed : $? ";
	  $gerado = 1;
        }



      }


      if($qResult-&gt;{'email'}){
	$email_dst = $qResult-&gt;{'email'};
      }else{
	$email_dst = $qresult-&gt;{'login'};
      }

      if($gerado eq 1){
	      print "TMPFILE: $tmpfile\n";
	      system("/bin/mv $tmpfile $wwwDir") == 0 or die "System @mycmd failed : $? ";

	      $queryUpdate = "UPDATE pabxvirtual_dl_gravacoes SET
				status = '1', email_enviado = '1'
			      WHERE id = '$qResult-&gt;{id_pedido}'";
			      print "Query Update: $queryUpdate\n";



	     $msgData = "
&lt;p&gt;Ol&amp;aacute;!&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Voc&amp;ecirc; solicitou em seu PABX Virtual o download dos arquivos referente a grava&amp;ccedil;&amp;otilde;es de chamadas no per&amp;iacute;odo de $qResult-&gt;{data_inicio} &amp;agrave; $qResult-&gt;{data_final}.&lt;/p&gt;
&lt;p&gt;Para fazer o download desses arquivos , clique no link abaixo:&lt;/p&gt;
&lt;p&gt;&lt;a href='https://$url/storage/dl_files/customer/$qResult-&gt;{filename}'&gt;https://$url/storage/dl_files/customer/$qResult-&gt;{filename}&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Qualquer d&amp;uacute;vida ou necessidade , basta responder a este e-mail.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;
Atenciosamente ,&lt;br /&gt;
$company 
&lt;/p&gt;
";
#                To   =&gt; $qResult-&gt;{'email'},

	      my $msg = MIME::Lite-&gt;new(
		      From =&gt; "$company &lt;$emailfrom&gt;",
                      To   =&gt; $email_dst,
		      Subject =&gt; 'Aqui estÃ¡ suas gravaÃ§Ãµes de Chamadas',
		      Type  =&gt; 'text/html',
		      Data =&gt; "$msgData"
	      );

	      if($msg-&gt;send){
		my $sth2 = $dbh-&gt;prepare($queryUpdate);
		$sth2-&gt;execute();
	      }
	      #print Dumper(@data_range);

	}else{
		$queryUpdate = "UPDATE pabxvirtual_dl_gravacoes SET
                                status = '1', email_enviado = '1'
                              WHERE id = '$qResult-&gt;{id_pedido}'";
                              print "Query Update: $queryUpdate\n";

		$msgData = "
&lt;p&gt;Ol&amp;aacute;!&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Voc&amp;ecirc; solicitou em seu PABX Virtual o download dos arquivos referente a grava&amp;ccedil;&amp;otilde;es de chamadas no per&amp;iacute;odo de $qResult-&gt;{data_inicio} &amp;agrave; $qResult-&gt;{data_final}.&lt;/p&gt;
&lt;p&gt;Infelizmente n&amp;atilde;o foram encontrados dados para o per&amp;iacute;odo em quest&amp;atilde;o&lt;/p&gt;
&lt;p&gt;Qualquer d&amp;uacute;vida ou necessidade , basta responder a este e-mail.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;
Atenciosamente ,&lt;br /&gt;
$company
&lt;/p&gt;
";
#                To   =&gt; $qResult-&gt;{'email'},

              my $msg = MIME::Lite-&gt;new(
                      From =&gt; "$company &lt;$emailfrom&gt;",
                      To   =&gt; $email_dst,
                      Subject =&gt; 'Nenhuma gravacao encontrada para o periodo',
                      Type  =&gt; 'text/html',
                      Data =&gt; "$msgData"
              );

              if($msg-&gt;send){
                my $sth2 = $dbh-&gt;prepare($queryUpdate);
                $sth2-&gt;execute();
              }
	}


   }


}else{
  print "Sem solicitacoes de exportacao";
}


sub get_dates($$){
  my ($start_date, $end_date) = @_;
  print "$start_date - $end_date\n";
  my $range = Date::Range-&gt;new( date($start_date), date($end_date) );
  my @all_dates = $range-&gt;dates;

  return @all_dates;
}
</pre></body></html>