<?php namespace App\Custom;
use App\Custom\Mailer;
use DateTime;
use Session;
use stdClass;
use App\Custom\SQLConnection;
use Sunra\PhpSimple\HtmlDomParser;
use DB;

class Misc {

  const KEY         = '20335754655';
  // const TYPEENCRYPT = env('TYPEENCRYPT');
  private static function TYPEENCRYPT() {
    return env('TYPEENCRYPT');
  }

  private static function safe_b64encode($string) {
    $data = base64_encode($string);
    $data = str_replace(array('+','/','='),array('-','_',''),$data);
    return $data;
  }

  private static function safe_b64decode($string) {
    $data = str_replace(array('-','_'),array('+','/'),$string);
    $mod4 = strlen($data) % 4;
    if ($mod4) {
        $data .= substr('====', $mod4);
    }
    return base64_decode($data);
  }
  public static function encrypt($data){
    if($data == null){ return $data;}
    if ( substr(phpversion(),0,3) == '7.4'  ){
      $ivSize = openssl_cipher_iv_length(self::TYPEENCRYPT());
      $iv = openssl_random_pseudo_bytes($ivSize);
      $encrypted = openssl_encrypt($data,self::TYPEENCRYPT(),self::KEY, OPENSSL_RAW_DATA, $iv);
      $hmac = hash_hmac('sha256',$encrypted,self::KEY,true);
      $cifrado = base64_encode($iv.$hmac.$encrypted);
      return $cifrado;
    } else {
      $ivSize = openssl_cipher_iv_length(self::TYPEENCRYPT());
      $iv = openssl_random_pseudo_bytes($ivSize);
      $encrypted = openssl_encrypt($data, self::TYPEENCRYPT(),pack('H*',self::KEY), OPENSSL_RAW_DATA, $iv);
      $encrypted = strtoupper(implode(null, unpack('H*', $encrypted)));
      return $encrypted;
    }
  }

  

  public static function decrypt($data){
    if($data == null){ return $data;}
    if ( substr(phpversion(),0,3) == '7.4' ){
      // DESARROLLO
      //dd($data);
      $c = base64_decode($data);
      //dd($c);
      $ivlen =  openssl_cipher_iv_length(self::TYPEENCRYPT());
      //dd($ivlen);
      //
      $iv = substr($c,0,$ivlen); // CLAVE ALEATORIO GENERADO
      //dd($iv);
      $hmac = substr($c,$ivlen,32); // HASH
      //dd($hmac);
      $ciphertext_raw = substr($c,$ivlen+32); // DATOS ENCRIPTADO
      //
      //dd($ciphertext_raw);
		  $decrypted = openssl_decrypt($ciphertext_raw,self::TYPEENCRYPT(),self::KEY,OPENSSL_RAW_DATA,$iv);
      //dd($decrypted);
      return trim($decrypted);
    } else {
      $data = pack('H*', $data);
      $ivSize = openssl_cipher_iv_length(self::TYPEENCRYPT());  
      $iv = openssl_random_pseudo_bytes($ivSize);
      $decrypted = openssl_decrypt($data, self::TYPEENCRYPT(),pack('H*',self::KEY), OPENSSL_RAW_DATA, $iv);
      return trim($decrypted);
    }
  }

  public static function encryptOrg($data){
    if($data === null){ return;}
    //
    $ivSize = openssl_cipher_iv_length(self::TYPEENCRYPT());
    $iv = openssl_random_pseudo_bytes($ivSize);
    $encrypted = openssl_encrypt($data, self::TYPEENCRYPT(),pack('H*',self::KEY), OPENSSL_RAW_DATA, $iv);
    $hmac = hash_hmac('sha256',$encrypted,pack('H*',self::KEY),true);
    //$encrypted = strtoupper(implode(null, unpack('H*', $encrypted)));
    return $encrypted;
  }

  public static function decryptOrg($data){
    if($data == null){ return;}
    $data = pack('H*', $data);
    $ivSize = openssl_cipher_iv_length(self::TYPEENCRYPT());  
    $iv = openssl_random_pseudo_bytes($ivSize);
    $decrypted = openssl_decrypt($data, self::TYPEENCRYPT(),pack('H*',self::KEY), OPENSSL_RAW_DATA, $iv);
    return trim($decrypted);
  }

  /*
ESTE METODO ESTÁ DEPRECADO
  //Método público que se encarga de encriptar una cadena 
  public static function encrypt($value){ 
    if(!$value){return false;}
    $text = $value;
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, self::KEY, $text, MCRYPT_MODE_ECB, $iv);
    return trim(self::safe_b64encode($crypttext)); 
  }

  //Método público que se encarga de desencriptar únicamente lo que este encriptado con el método encrypt
  public static function decrypt($value){
    if(!$value){return false;}
    $crypttext = self::safe_b64decode($value); 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, self::KEY, $crypttext, MCRYPT_MODE_ECB, $iv);
    return trim($decrypttext);
  }
*/
  //Método para agilizar el envio de emails desde Fidelitas
  public static function enviarMail($view='',$to='',$content='',$subject="Fidelitas",$attach = ''){
    Mailer::from("no-reply@fidelitas.com.ar");
    Mailer::to($to);
    if($attach)
    {
      //Mailer::attachFile($attach,'aumento_precio_fidelitas_2017.pdf');
      Mailer::attachFile($attach,$attach);
    }
    $content   = \View::make($view)->with('content',$content)->render();
    Mailer::text($content,$subject);
    return Mailer::send();
  }



  public static function enviarMailLED($view='',$from='',$to='',$bcc='',$replyto='',$content='',$subject="Fidelitas",$attach = ''){
    Mailer::from($from);
    Mailer::to($to);
    Mailer::bcc($bcc);
    Mailer::replyto($replyto);
    $content = \View::make($view)->with('content',$content)->render();
    Mailer::text($content,$subject);
    return Mailer::send();
  }


 public static function parsearBusquedaPadron($campo){
    $campo = self::limpiarString($campo);
    if(is_numeric(str_replace(' ','',($campo)))){
       return "\"".str_replace(' ','',$campo)."\"";
    }
    $exploded = explode(" ", $campo);
    $full_search = "";
    if (sizeof($exploded) == 1 && strlen($campo) > 2) {
      return "\"".$campo."*\"";
    } elseif (((sizeof($exploded) == 2) && ((strlen($exploded[0]) + strlen($exploded[1])) > 2)) || (sizeof($exploded) > 2)) {
      foreach($exploded as $key => $part) {
        if ($part != '') {
          if (strlen($part) <= 1) { continue; }
          $part = (strlen($part > 1)) ? "\"*".$part."*\"" : "\"".$part."*\"";
          //if($key == 0) {
          if($full_search == "") { 
            $full_search = $part;
          } else {
            $full_search .= " NEAR ".$part;
          }
        }
      }
      return $full_search;
    }
    return $full_search;
  }

  public static function parsearBusquedaEdictos($campo){
    $exploded = explode(" ",$campo);
    $full_search = "";
    if(sizeof($exploded) <= 1){
      $full_search = $campo;
    }else{
      foreach($exploded as $key => $part){
        if($key == 0){
          $full_search = $part;
          if($exploded[1] == ""){
            $full_search = $campo;
            break;
          }  
        }else{
          if($part != ''){
          $full_search .= " NEAR ".$part;
          }
        }
      }
    }
    return $full_search;
  }
 
public static function strpos_arr($haystack, $needle) {
    if(!is_array($needle)) $needle = array($needle);
    foreach($needle as $what) {
        if(($pos = strpos($haystack, $what))!==false) return $what;
    }
    return false;
}

public static function omitirPalabras($razon_social){
  $omitidos = SQLConnection::obtenerOmitidos();
  foreach($omitidos as $omitido) {
    foreach($omitido as $valor) {
      if(!empty($valor)) {
        $razon_social = preg_replace("/$valor\W/","", $razon_social);
        $razon_social = trim($razon_social,' ');
      }
    }
  }
  return $razon_social;
}

public static function diccionarioSinonimosTEST($razon_social){
  $razon_social_segmentada        = [];
  $sinonimos                      = [];
  $palabras_agregar               = [];
  $array_palabras_con_sinonimos   = [];
  $razones_sociales_con_sinonimos = '';
  //$omitidos                       = SQLConnection::obtenerOmitidos();
  $omitidos                       = SQLConnection::backendStoreProcedure('obtener_omitidos_sinonimos', array());

 // dd($omitidos);
  foreach($omitidos as $omitido) {
    
    foreach($omitido as $valor) {
      //print_r("\n". $valor ." - ");
      if(!empty($valor)) {
        //$valor = str_ireplace(".", "\\.", $valor);
        //print_r($valor);
       // $razon_social = preg_replace("/\^$valor/","", $razon_social);
       // print_r($razon_social);

        // $razon_social = preg_replace(" "."/$valor\$/","", $razon_social);
        // print_r($razon_social);
        $valor1 = $valor." ";
        $razon_social = preg_replace('/^' . preg_quote($valor1, '/') . '/', '', $razon_social);
        $valor1 = " ".$valor;
        $razon_social = preg_replace('/'. preg_quote($valor1, '/') . '$/', '', $razon_social);
        $valor1 = " ".$valor." ";
        $razon_social = str_ireplace($valor1," ", $razon_social);
        //print_r($razon_social);
      }
    }
  }
  //die();
  $razon_social = array_map('trim',$razon_social);
  
  foreach ($razon_social as $key => $value) {
      $value = rtrim($value);
      if (substr($value,-2,1) == " ") // si termina con solo una letra elimina esa letra del final
          {
           $value = substr($value, 0, -1);  
          }
      $value = rtrim($value);
      $razon_social[$key] =  "\"".$value."\"";
  }

  return $razon_social;
}

public static function diccionarioSinonimos2020($razon_social){
  $razon_social_segmentada        = [];
  $sinonimos                      = [];
  $palabras_agregar               = [];
  $array_palabras_con_sinonimos   = [];
  $razones_sociales_con_sinonimos = '';
  $omitidos                       = SQLConnection::backendStoreProcedure('obtener_omitidos_sinonimos', array());
  foreach($omitidos as $omitido) {
    
    foreach($omitido as $valor) {
      if(!empty($valor)) {
        //$razon_social = preg_replace("/$valor\z/","", $razon_social);
         $valor1 = $valor." ";
         $razon_social = preg_replace('/^' . preg_quote($valor1, '/') . '/', '', $razon_social);
         $valor1 = " ".$valor;
         $razon_social = preg_replace('/'. preg_quote($valor1, '/') . '$/', '', $razon_social);
         $valor1 = " ".$valor." ";
         $razon_social = str_ireplace($valor1," ", $razon_social);
        
        $razon_social = rtrim($razon_social);
      }
    }
  }
  $razon_social = rtrim($razon_social);
  if (substr($razon_social,-2,1) == " ") // si termina con solo una letra elimina esa letra del final
  {
   $razon_social = substr($razon_social, 0, -1);  
  }
  $razon_social = rtrim($razon_social);

  return "\"".$razon_social."\"";
}

public static function diccionarioSinonimos($razon_social){
  $razon_social_segmentada        = [];
  $sinonimos                      = [];
  $palabras_agregar               = [];
  $array_palabras_con_sinonimos   = [];
  $razones_sociales_con_sinonimos = '';
  $omitidos                       = SQLConnection::obtenerOmitidos();
  foreach($omitidos as $omitido) {
    
    foreach($omitido as $valor) {
      if(!empty($valor)) {
        //$razon_social = preg_replace("/$valor\z/","", $razon_social);
         $valor1 = $valor." ";
         $razon_social = preg_replace('/^' . preg_quote($valor1, '/') . '/', '', $razon_social);
         $valor1 = " ".$valor;
         $razon_social = preg_replace('/'. preg_quote($valor1, '/') . '$/', '', $razon_social);
         $valor1 = " ".$valor." ";
         $razon_social = str_ireplace($valor1," ", $razon_social);
        
        $razon_social = rtrim($razon_social);
      }
    }
  }
  $razon_social = rtrim($razon_social);
  if (substr($razon_social,-2,1) == " ") // si termina con solo una letra elimina esa letra del final
  {
   $razon_social = substr($razon_social, 0, -1);  
  }
  $razon_social = rtrim($razon_social);

  return "\"".$razon_social."\"";
  //return $razon_social;
  $palabras = explode(' ',$razon_social);
  
  // Si existen palabras mayores  1 letra...
  foreach($palabras as $key => $palabra){
    if(strlen($palabra) > 1){
      $razon_social_segmentada[] = $palabra;
    }
  }

  // Si existen palabras o sinonimos en el array...
  if(sizeof($razon_social_segmentada) == 1){return "\"".$razon_social_segmentada[0]."\"";}

  // Busco sinonimos de acuerdo a las palabras segmentadas de la razon social...
  foreach($sinonimos as $sinonimo){
    $resp = SQLConnection::obtenerSinonimos($sinonimo);
    if($resp){
      $palabras_agregar[] = $resp;
    }
  }

  // Si no existen sinonimos...
  if(!$palabras_agregar){
   // return "\"".implode(" ",$sinonimos)."\"";
    return false;
  }

  $posicion_reemplazo = null;
  $textos_semejantes = array();
  $nuevos_textos = "";

  //Buscando posicion a reemplazar
  foreach($palabras_agregar as $cantidad_sinonimo => $lote) {
    foreach($lote as $palabra) {
      if(!empty($palabra)) {
        foreach($sinonimos as $key => $segmentado) {
          if($palabra == $segmentado) {
            $posicion_reemplazo[$cantidad_sinonimo] = $key;
          }
        }
      }
    }
  }

  // Estructurando las semejanzas
  foreach($palabras_agregar as $cantidad_sinonimo => $lote) {
    foreach($lote as $key_sin => $palabra) {
      if(!empty($palabra)) {
        foreach($sinonimos as $key => $segmentado) {
          if(isset($posicion_reemplazo[$cantidad_sinonimo]) && ($posicion_reemplazo[$cantidad_sinonimo] == $key)){
            $textos_semejantes[$cantidad_sinonimo][$key_sin][$key] = $palabra;
          } else {
            $textos_semejantes[$cantidad_sinonimo][$key_sin][$key] = $segmentado;
          }
        }
      }
    }
  }

  $cantidad_palabras_razon_social = count($sinonimos)-1;

  // ultima llave general
  $nuevo_textos_general = $textos_semejantes;
  end($nuevo_textos_general);
  $ultima_llave_textos_general = key($nuevo_textos_general);

  // Concatenando
  foreach($textos_semejantes as $key => $sinom_textos) {
    foreach($sinom_textos as $key2 => $semejanzas) {
      // ultima llave semejantes
      $nuevo_textos_semejantes = $sinom_textos;
      end($nuevo_textos_semejantes);
      $ultima_llave_textos_semejantes = key($nuevo_textos_semejantes);

      foreach($semejanzas as $key3 => $valor) {
        // primera llave valor
        $primer_llave_textos_valor = key($semejanzas);
        if($primer_llave_textos_valor == $key3) {
          $nuevos_textos .= "\"";
        }

        // ultima llave valor
        $nuevo_textos_valor = $semejanzas;
        end($nuevo_textos_valor);
        $ultima_llave_textos_valor = key($nuevo_textos_valor);

        // Si esta recorriendo la cantidad de palabras de la razon social
        if($cantidad_palabras_razon_social != $key3) {
          $nuevos_textos .= $valor .' ';
        } else {
          // Agregando mas semejanzas
          if(($ultima_llave_textos_general == $key) && ($ultima_llave_textos_semejantes == $key2) && ($ultima_llave_textos_valor == $key3)) {
            $nuevos_textos .= $valor . "\"";
          } else {
            $nuevos_textos .= $valor . "\"". ' or ';
          }
        }
      }
    }
  }

  if(strlen($nuevos_textos) >= 8000){
    $nuevos_textos = self::sinonimTruncate($nuevos_textos,8000);
  }

  return $nuevos_textos;
}

  public static function sinonimTruncate($string,$chars_count){
    $text = substr($string,0,$chars_count);
    $text = substr($text,0,strrpos($text,'or'));
    return $text;
  }
  /**
 * Reemplaza todos los acentos por sus equivalentes sin ellos
 *
 * @param $string
 *  string la cadena a sanear
 *
 * @return $string
 *  string saneada
 */
  /*
  public static function replace_specials_characters($s) {
    //$s = mb_convert_encoding($s, 'UTF-8','');
    $s = preg_replace("/á|à|â|ã|ª/","a",$s);
    $s = preg_replace("/Á|À|Â|Ã/","A",$s);
    $s = preg_replace("/é|è|ê/","e",$s);
    $s = preg_replace("/É|È|Ê/","E",$s);
    $s = preg_replace("/í|ì|î/","i",$s);
    $s = preg_replace("/Í|Ì|Î/","I",$s);
    $s = preg_replace("/ó|ò|ô|õ|º/","o",$s);
    $s = preg_replace("/Ó|Ò|Ô|Õ/","O",$s);
    $s = preg_replace("/ú|ù|û/","u",$s);
    $s = preg_replace("/Ú|Ù|Û/","U",$s);
    //$s = str_replace(" ","_",$s);
    $s = str_replace("ñ","n",$s);
    $s = str_replace("Ñ","N",$s);
    
    //$s = preg_replace('/[^a-zA-Z0-9_.-]/', '', $s);
    return $s;
  }
  */
  public static function sanear_string($string){
 
    $string = trim($string);
    $string = str_replace(
        array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
        array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
        $string
    );
 
    $string = str_replace(
        array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
        array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
        $string
    );
 
    $string = str_replace(
        array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
        array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
        $string
    );
 
    $string = str_replace(
        array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
        array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
        $string
    );
 
    $string = str_replace(
        array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
        array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
        $string
    );
    
    $string = str_replace(
        array('ñ', 'Ñ', 'ç', 'Ç'),
        array('n', 'N', 'c', 'C',),
        $string
    );
 
  $string = str_replace("\r", '', $string);
  return $string;
  }

  public static function ResaltarResultadosEdictosHomonimosPF($edictos,$razon_social){
    $rs_exp = explode(' ', $razon_social[0]);
    $p1 = $rs_exp[0];
    unset($rs_exp[0]);
    $edicto_aux = [];
    foreach($edictos as $key => $edicto){
      $texto_exp = explode(' ', strtoupper(($edicto->contenido_archivo)));
      foreach ($texto_exp as $key => $value) {
        $value = str_replace(',', '', self::limpiarString($value));
        $encontrado = false;
        if ($value == $p1) {
          if ( ($key !=0) && array_search($texto_exp[$key-1], $rs_exp) !== false) {
            $encontrado = true;  
            $texto_exp[$key-1] = "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$texto_exp[$key-1]."</span>";   
          }

          if( ($key > 1) && array_search($texto_exp[$key-2], $rs_exp) !== false) {
            $texto_exp[$key-2] = "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$texto_exp[$key-2]."</span>";   
            $encontrado = true;
          }

          if (isset($texto_exp[$key+3]))
          {
            $texto_exp[$key+3] = str_replace(',', '', $texto_exp[$key+3]);
            if( (array_search($texto_exp[$key+3], $rs_exp) !== false)) {
              $texto_exp[$key+3] = "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$texto_exp[$key+3]."</span>";   
              $encontrado = true;
            }
          }

          if (isset($texto_exp[$key+1]))
          {
            if( ($key < sizeof($texto_exp)) && (array_search($texto_exp[$key+1], $rs_exp) !== false)) {
              $texto_exp[$key+1] = "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$texto_exp[$key+1]."</span>";   
              $encontrado = true;
            }
          }
          if (isset($texto_exp[$key+2]))
            {
            if( ($key < (sizeof($texto_exp)-1)) && (array_search($texto_exp[$key+2], $rs_exp) !== false)) {
              $texto_exp[$key+2] = "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$texto_exp[$key+2]."</span>";   
              $encontrado = true;
            }
          }

          if ($encontrado == true) {
            $texto_exp[$key] = "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$texto_exp[$key]."</span>";
          }
        }
      }//endforeach TEXTO_EXP
      
      $edicto->contenido_archivo = implode(' ',$texto_exp );
      $edicto_aux [] =  $edicto;
    }//endforeach EDICTOS
    return $edicto_aux;
  }

  public static function ResaltarResultadosEdictosHomonimosPF_test($edictos,$razon_social){
    foreach($edictos as $key => $edicto){
      foreach ($razon_social as $rs){
        $edictos[$key]->contenido_archivo = str_ireplace($rs, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$rs."</span>", self::sanear_string($edicto->contenido_archivo));
      }
    }
    return $edictos;
  }

  public static function ResaltarResultadosEdictosHomonimosPJ($edictos,$razon_social,$sinonimos){
    foreach($edictos as $key => $edicto){
      if (isset($razon_social)) {
        $edictos[$key]->contenido_archivo = str_ireplace($razon_social, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$razon_social."</span>", $edicto->contenido_archivo);
      }

      if (isset($sinonimos)) {
        $edictos[$key]->contenido_archivo = str_ireplace($sinonimos, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$sinonimos."</span>", $edicto->contenido_archivo);
      }
    }
    return $edictos;
  }
  //Resalta edictos cuando encuentra nombres posibles relacionados a un mismo CUIT (TEST)
  public static function ResaltarResultadosEdictosHomonimosPJ_TEST($edictos,$razon_social,$sinonimos){
    
    foreach($edictos as $key => $edicto){
      if(isset($razon_social)){
        $edictos[$key]->contenido_archivo = str_ireplace($razon_social, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$razon_social."</span>", self::sanear_string($edicto->contenido_archivo));
      }

      if (isset($sinonimos)){
        foreach ($sinonimos as $value) {
          $value = str_replace('"','',$value);
          $edictos[$key]->contenido_archivo = str_ireplace($value, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$value."</span>", self::sanear_string($edicto->contenido_archivo));
        }  
      }
        
    }
    return $edictos;
  }

  public static function ResaltarResultadosEdictosHomonimosNombresAnt($edictos,$sinonimos){
    //dd($sinonimos);
    foreach($edictos as $key => $edicto){
      if (isset($sinonimos)){
        foreach ($sinonimos as $value) {
          $value = str_replace('"','',$value);
          $edictos[$key]->contenido_archivo = str_ireplace($value, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$value."</span>", self::sanear_string($edicto->contenido_archivo));
        }  
      }
        
    }
    return $edictos;
  }

  public static function ResaltarResultadosEdictos($edictos, $razon_social,$sinonimos){
    foreach($edictos as $key => $edicto){
      if(!empty($sinonimos)){
        foreach ($sinonimos as $sinonimo){
          $edictos[$key]->texto = str_ireplace($sinonimo, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$sinonimo."</span>", self::sanear_string($edicto->texto));
        }
      }
      
      if (!empty($razon_social)) {
        $edictos[$key]->texto = str_ireplace($razon_social, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$razon_social."</span>", self::sanear_string($edicto->texto));
      }
    }
    return $edictos;
  }

  public static function ResaltarResultadosRemates($remates,$string){
    foreach($remates  as $key => $remate){
      $remates[$key]->contenido = str_ireplace($string, "<span class='fw600' style='font-size:14px;background-color:yellow;'>".$string."</span>", $remate->contenido);
    }
    return $remates;
  }

  //Método que reemplazar caracteres a saltos de linea
  public static function ReemplazarCaracteres($array=array()){
    return str_replace(array("\r\n", "\n", "\\r","\\n"), '<br>', $array);
  }

  public static function obtenerColoresEnv(){
    foreach($_ENV as $key => $value){
      if (strpos($key, 'COLOR_') === 0) {
        $env[$key] = $value;
      }
    }
    return $env;
  }

  /* Método que sirve interpretar valores de la base de datos y convertirlos a lo que se requiera */
  public static function interpretarDB($cadena){
    $cadena = strtoupper($cadena);
    if($cadena == 'N' || $cadena == 'NI'){
      return 'NO INSCRIPTO';
    }else if($cadena == 'AC'  || $cadena == 'S'){
      return 'ACTIVO';
    }else if($cadena == 'EX'){
      return 'EXENTO';
    }else if($cadena == 'NA'){
      return 'NO ALCANZADO';
    }else if($cadena == 'XN'){
      return 'EXENTO NO ALCANZADO';
    }else if($cadena == 'AN'){
      return 'ACTIVO NO ALCANZADO';
    }else if ($cadena == 'NC' ){
      return 'NO CORRESPONDE';
    }else{
      return 'NO INFORMA';
    }

  }

  public static function add($var1,$var2=null,$var3=null){
      return $var1+$var2+$var3;
  }

  public static function truncate($text, $chars = 250) {
    $text = $text." ";
    $text = substr($text,0,$chars);
    $text = substr($text,0,strrpos($text,' '));
    $text = $text."...";
    return $text;
  }

   public static function procesarBalance($array){
    $año = '';
    $balance = [];
    foreach($array as $key => $value){
      if($año != '' && $value->fecha_balance != ''){
        $array_año=explode('/', $value->fecha_balance)[2];
        /*$año = $año - 1;*/
        if ($array_año != $año)
        {
          $año = $año - 1;
        }
        /*if($array_año != $año){*/
        if($array_año < $año){
          krsort($balance);
          return $balance;
        }else{
          $balance[$key] = $value;
          //unset($balance[$key]);
        }
      }
      if($key==0){
        if($value->fecha_balance){
          $año=explode('/', $value->fecha_balance)[2];
          $balance[$key] = $value;
        }
      }
    }
    krsort($balance);

    return $balance;
  }
/*
  public static function obtenerConsumos($productos,$id_producto){
    //echo "<pre>";print_r(\Session::all());
    if(isset($productos[$id_producto])){
     $producto = $productos[$id_producto];
     
        $resp = ['error' => 0,'mensaje' => 'ok'];
    
        //caso de pack full, no hay limite
      if( ($producto->usuario_limite_consumo == 0 && $producto->cliente_limite_consumo == 0) || 
        //caso de pack con limite ver si usuario puede consumir.
        ( ($producto->usuario_consumido < $producto->usuario_limite_consumo || $producto->usuario_limite_consumo == 0) &&
          $producto->cliente_consumido < ($producto->cliente_limite_consumo))
        )
      {
        $resp = ['error' => 0,'mensaje' => 'ok'];
        //Si supera el consumo del cliente y bloquea consumo.
      }else if( $producto->usuario_consumido >=  $producto->usuario_limite_consumo  &&  $producto->cliente_bloquear_consumo == 1 ){
        $resp = ['error' => 1,'mensaje' =>'Su usuario Alcanzó el límite de consumos'];
        //Si supera el consumo del cliente y no bloquea consumo.
      }else if($producto->usuario_consumido >=  $producto->usuario_limite_consumo  &&  $producto->cliente_bloquear_consumo == 0){
        //Si el consumo es mayor al del cliente y supera el consumo del cliente y no bloquea consumo..
        if($producto->usuario_consumido >= ($producto->cliente_limite_consumo) ){
        $resp = ['error' => 1,'mensaje' =>'Su usuario Alcanzó el límite de consumos'];
        }else{
        //Si el consumo es menor al del cliente y supera el consumo del usuario y no bloquea consumo..
        $resp = ['error' => 0,'mensaje' =>'Su usuario Alcanzó el límite de consumos'];
        }
      }
      
     return $resp;
    }
  }
*/
/* lo cambiamos el 05/10/2020 por el de abajo 
  public static function obtenerConsumos($productos,$id_producto){
   // echo "<pre>";print_r(\Session::all());
    if(isset($productos[$id_producto]))
  {
        $producto = $productos[$id_producto]; 
      // consumos ilimitado --> deja entrar siempre
      if($producto->usuario_limite_consumo == 0 && $producto->cliente_limite_consumo == 0) 
      {
        $resp = ['error' => 0,'mensaje' => 'ok'];
        return $resp;
      }
      // no bloquear consumos --> deja entrar siempre
      if ($producto->cliente_bloquear_consumo == 0) 
      {
        $resp = ['error' => 0,'mensaje' => 'ok'];
        return $resp;
      }


      // si llega aca es porque debe bloquear consumos --> si alcanzo el limite no deja entrar 
      if (($producto->usuario_consumido >= $producto->usuario_limite_consumo && $producto->usuario_limite_consumo != 0) ||
          ($producto->cliente_consumido >= $producto->cliente_limite_consumo && $producto->cliente_limite_consumo != 0))
      {
        $resp = ['error' => 1,'mensaje' =>'Su usuario Alcanzó el límite de consumos'];
        return $resp;
      }

      $resp = ['error' => 0,'mensaje' => 'ok'];
      return $resp;

    }
  }
*/
/* Lo cambiamos por este control el 05/10/2020 */
public static function obtenerConsumos($productos,$id_producto){
  if(isset($productos[$id_producto]))
    {
      $usuario     = \Session::get('usuario');
      $user_id     = $usuario->user_id;
      $client_id   = $usuario->cliente['client_id'];
      $ver_consumos = self::ControlConsumos($client_id, $user_id, $id_producto); 
      if (!empty($ver_consumos))
      {
        if ($ver_consumos->permitir == '0')
        {
        $resp = ['error' => 1,'mensaje' => $ver_consumos->mensaje . ', por favor contactese con el area comercial de Fidelitas al +54 11 5254 9950'];
        return $resp;
        }
        else 
        {
        $resp = ['error' => 0,'mensaje' => 'ok'];
        return $resp;
        }
      }
    }
  }
  private static function ControlConsumos($cliente, $usuario, $prod){
    $ver_consumos = SQLConnection::backendStoreProcedure('obtener_control_consumos',array($cliente, $usuario, $prod),'selectOne');
    return $ver_consumos;
  }



  public static function armarDomicilio($domicilio,$codpos,$loc_nombre,$prv_nombre,$pai_nombre){
    $return = $domicilio;
    if($codpos){
      $return .= ', ('.$codpos.')';
    }
    if($loc_nombre){
      $return .= ', '.$loc_nombre;
    }
    if($prv_nombre){
      $return .= ', '.$prv_nombre;
    }
    if($pai_nombre){
      $return .= ', '.$pai_nombre;
    }
    return $return;
  }

  public static function XMLRequest($url){
    $xml = file_get_contents($url);
    foreach ($http_response_header as $header){
        if (preg_match('#^Content-Type: text/xml; charset=(.*)#i', $header, $m)){
          switch (strtolower($m[1])){
            case 'utf-8':
               // do nothing
            break;
            case 'iso-8859-1':
              $xml = utf8_encode($xml);
            break;
            default:
              $xml = iconv($m[1], 'utf-8', $xml);
          }
        break;
      }
    }
    return simplexml_load_string($xml);
  }

  public static function switchToEndArray($array,$var){
    if(isset($array[$var])){
      $last   =  $array[$var];
      unset($array[$var]);
      $array[$var] = $last;
      return $array;
    }
    return $array;
    
  }

  public static function convertDate($date,$convert_format){
    $date = new DateTime($date);
    return $date->format($convert_format);
  }

  public static function obtenerImagenImperium(){
    return 'data:image/png;base64,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AAAAAAAAAAAAgJCYAwAAAAAAAAAAAAAAAAAAAEBIzAEAAAAAAAAAAAAAAAAAAAAgJOYAAAAAAAAAAAAAAAAAAAAAEBJzAAAAAAAAAAAAAAAAAAAAAAiJOQAAAAAAAAAAAAAAAAAAAACExBwAAAAAAAAAAAAAAAAAAAAAQmIOAAAAAAAAAAAAAAAAAAAAACExBwAAAAAAAAAAAAAAAAAAAICQmAMAAAAAAAAAAAAAAAAAAABASMwBAAAAAAAAAAAAAAAAAAAAICTmAAAAAAAAAAAAAAAAAAAAABAScwAAAAAAAAAAAAAAAAAAAAAIiTkAAAAAAAAAAAAAAAAAAAAAhMQcAAAAAAAAAAAAAAAAAAAAAEJiDgAAAAAAAAAAAAAAAAAAAAAhMQcAAAAAAAAAAAAAAAAAAACAkJgDAAAAAAAAAAAAAAAAAAAAQEjMAQAAAAAAAAAAAAAAAAAAACAk5gAAAAAAAAAAAAAAAAAAAAAQEnMAAAAAAAAAAAAAAAAAAAAACIk5AAAAAAAAAAAAAAAAAAAAAITEHAAAAAAAAAAAAAAAAAAAAABCYg4AAAAAAAAAAAAAAAAAAAAAockEAAAAAAAAAAAAAMAdncc+WAEAAAAA+ITRBAAAAAAAAAAAAAAAAAAAAAAdMQcAAAAAAAAAAAAAAAAAAACAkJgDAAAAAAAAAAAAAAAAAAAAQEjMAQAAAAAAAAAAAAAAAAAAACAk5gAAAAAAAAAAAAAAAAAAAAAQEnMAAAAAAAAAAAAAAAAAAAAACIk5AAAAAAAAAAAAAAAAAAAAAITEHAAAAAAAAAAAAAAAAAAAAABCYg4AAAAAAAAAAAAAAAAAAAAAITEHAAAAAAAAAAAAAAAAAAAAgJCYAwAAAAAAAAAAAAAAAAAAAEBIzAEAAAAAAAAAAAAAAAAAAAAgJOYAAAAAAAAAAAAAAAAAAAAAEBJzAAAAAAAAAAAAAAAAAAAAAAiJOQAAAAAAAAAAAAAAAAAAAACExBwAAAAAAAAAAAAAAAAAAAAAQmIOAAAAAAAAAAAAAAAAAAAAACExBwAAAAAAAAAAAAAAAAAAAICQmAMAAAAAAAAAAAAAAAAAAABASMwBAAAAAAAAAAAAAAAAAAAAICTmAAAAAAAAAAAAAAAAAAAAABAScwAAAAAAAAAAAAAAAAAAAAAIiTkAAAAAAAAAAAAAAAAAAAAAhMQcAAAAAAAAAAAAAAAAAAAAAEJiDgAAAAAAAAAAAAAAAAAAAAAhMQcAAAAAAAAAAAAAAAAAAACAkJgDAAAAAAAAAAAAAAAAAAAAQEjMAQAAAAAAAAAAAAAAAAAAACAk5gAAAAAAAAAAAAAAAAAAAAAQEnMAAAAAAAAAAAAAAAAAAAAACIk5AAAAAAAAAAAAAAAAAAAAAITEHAAAAAAAAAAAAAAAAAAAAABCYg4AAAAAAAAAAAAAAAAAAAAAITEHAAAAAAAAAAAAAAAAAAAAgJCYAwAAAAAAAAAAAAAAAAAAAEBIzAEAAAAAAAAAAAAAAAAAAAAgJOYAAAAAAAAAAAAAAAAAAAAAEBJzAAAAAAAAAAAAAAAAAAAAAAiJOQAAAAAAAAAAAAAAAAAAAACExBwAAAAAAAAAAAAAAAAAAAAAQmIOAAAAAAAAAAAAAAAAAAAAACExBwAAAAAAAAAAAAAAAAAAAICQmAMAAAAAAAAAAAAAAAAAAABASMwBAAAAAAAAAAAAAAAAAAAAICTmAAAAAAAAAAAAAAAAAAAAABAScwAAAAAAAAAAAAAAAAAAAAAIiTkAAAAAAAAAAAAAAAAAAAAAhMQcAAAAAAAAAAAAAAAAAAAAAEJiDgAAAAAAAAAAAAAAAAAAAAAhMQcAAAAAAAAAAAAAAAAAAACAkJgDAAAAAAAAAAAAAAAAAAAAQEjMAQAAAAAAAAAAAAAAAAAAACAk5gAAAAAAAAAAAAAAAAAAAAAQEnMAAAAAAAAAAAAAAAAAAAAACIk5AAAAAAAAAAAAAAAAAAAAAITEHAAAAAAAAAAAAAAAAAAAAABCYg4AAAAAAAAAAAAAAAAAAAAAITEHAAAAAAAAAAAAAAAAAAAAgJCYAwAAAAAAAAAAAAAAAAAAAEBIzAEAAAAAAAAAAAAAAAAAAAAgJOYAAAAAAAAAAAAAAAAAAAAAEBJzAAAAAAAAAAAAAAAAAAAAAAiJOQAAAAAAAAAAAAAAAAAAAACExBwAAAAAAAAAAAAAAAAAAAAAQmIOAAAAAAAAAAAAAAAAAAAAACExBwAAAAAAAAAAAAAAAAAAAICQmAMAAAAAAAAAAAAAAAAAAABASMwBAAAAAAAAAAAAAAAAAAAAICTmAAAAAAAAAAAAAAAAAAAAABAScwAAAAAAAAAAAAAAAAAAAAAIiTkAAAAAAAAA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AAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAQJOYAAAAAAAAAAAAAAAAAAAAAECTmAAAAAAAAAAAAAAAAAAAAABAk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA/9uDQwIAAAAAQf9f+8IEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAinv82p74PMQAAAABJRU5ErkJggg==';
  }

  public static function obtenerImagenInquiro(){
    return'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARAAAAA2CAYAAAAPiMaKAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAuIwAALiMBeKU/dgAABCdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjMwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+MzAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjcyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41NDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAg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';
  }

  public static function obtenerImagenFidelitas(){
    return "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAfAKcDAREAAhEBAxEB/8QAHQAAAgEFAQEAAAAAAAAAAAAABgcIAAMEBQkCCv/EAEUQAAEDAgUCAwMHCAcJAAAAAAECAwQFBgAHCBESEyEUIjEJMkE4QlFTcXJ1FRY0OWFigbQXJEVSkrG1VGRzdKKkxMXS/8QAGwEAAgMBAQEAAAAAAAAAAAAAAwQAAgUBBgf/xAAzEQABAwIBCQgBBAMAAAAAAAABAAIDBBFBBRITITFRcbHwFCIyMzRhgcHRFSMk4TVFof/aAAwDAQACEQMRAD8AhU/IdD7g6rnvH5x+nH0QALxCt+Je+tX/AIjjtguKvEvfWr/xHEsFES5XyHTmpYwLqyPzgp3zj/tTeAzD9t3Ao8PmNXTH2oeaN35W5d2TNtC5qnbMmTV3WpDtMf6S3UCMtQSo7HcbgHHmMmRMle4PF9S9DWyOjZdpWiomknUjXKLT6k3qgq7bcyO3IShTLhKQtIVt7/w3wR1VStJGhVBDOQDn8/yiC1tI2oej3TRahUtStUqdNiTmJEqAplwCSyhwKW0fP6KSCn+OBuqqYtIEViiNhmBuX8/ynVBykzEj6mp99vZlSX8vH4nRZskoV0mnOi2jqA77e+la/T52EjLGYQzN729NBrs8m+pOnCiKkVriuutWRpXv2uW7VZVDrMRiOqPPhL4PNEymUkpPw3Soj7CcPUTGyVDWuFx/SWqXlkRc3BZWi+56xeml3L2t1+pyazWJsBTkmdMXzdeV1VjdR+J2AH8MVq2NZO5rRqCtA4vjDinXhNHVYiihBobzTvK+NRufFIuK6apXKVSZ7jdPhTXubURInSkANjbsOKEj7EjGzWxMjhic0WJH0s+mlc+R4OBTzypyhzGs3OW9rnubMyVdNp1gumlW262oIpgU8FpCSTseKPJ2AwlLLE+NrWMsRtO9MsY9riXG419fCvL1U2ojUqnJEwKv+dSo3ihL6CPBcegX9ufPlvxG3u+uJ2V+g099XQXNM3SaPHopzYTTCrEUVYiirEUVYii+dOR+kO/eP+ePoo2Lw6tgFRAAKiTsABuSfoAxFFsja1eB2Nu1sH8Kkf8AximkZvCPoJNyJcsLYriM0rIWugVlCE1+nqUtdMkJSkCS2SSSjYDAZpGaN2vAosMMgkBsp/e19R1cr8v0bhPKtvjc+g/qjmMHJHmO4LXyj5YWRbXtNaZRrcpNP/oev9/wsRljqoggpXxQByB+IO24OKvycS4nSBXZVd0dwpuafNbkPP8AzCNqMZd3Za7ghOzfH1mKG2NkKSOG/wDePPt9hwpPRmBmfng8EzHNpDbNsgWiZzXxJ9ptXMvHbjkrshij+IbopQjpJc8HHXy348t+S1H1+ODuhjFCJbd6+35QWyONQ5mGrksbVNqizHqeetNyJyPTFYux1tLlTrMltLnhuSOpwTyBShKG9lrWUqPmQlI5Y7S0sQiNRUeHAKs87y/Qw7UrNT9uamMsNPtz07MO5qLmXZFXaZjTZ0NgszKO5121oeJ4J6jRUkIO++3IHy/FqldSyzNMQLXD/qXqBOyEh5uOvYJ+abc1qNkj7PSz71rxWafSaKp0stbdR9wvrS20j95aylI+3c9hhCoidNWOjbtJTcUgipw9yVeXU7Vrqvt9WYVEvqiZYW5KcWqi0gRA4H20q48lKLalKRuCOave2JCAkjDUgo6V2jc0uOJQGmonGeDmjr2TP0a6orxv+97vylzXixYuY9rbrVKiIDbc1pKglZKR5eQK21Ao2SpDiSAnY4Wq6ZkbGzQ+Eo9PO57jHJ4gld7PL5U+o78Rd/1GZhrKHkQ8PoJej82Tit7p7zZzJzN1SahLGk3nJFPpsaexQ0PMtqbprviem04kBIKuG47EnfbFKiKKKnikDdtr++pdhlfJLIy+y6jocrs1Ua+WLOXmkF5mfk0L/Pf8npA6fgiso6G+3ubo3/bvjQ0sPY8/M7u75Shjk7Vmh+vf8KeWZWZV3aVtL0Wp1rxWaV9w20QEyIsNYE2U4pXF1xDYKktpT3Vt3PHYbEjGDHGypnsO61bD3GJm8pF0GxNaWYFnRL7TmhRrfqUyMJ0O1F05tvZChyQ05u2pKFkbeVZVtuApQIOz7n0MbjHmXG9JhtU8B+db26CbOhLVRV9SVmV+HdUFmFeNsSkRKgqMjptyEqCuDgRueCt0LSpIJG6dx2OwUrqUUzgWHulMU05mBDtoSTtvO7PvWxmHeMXKi56blpYVuSfC+MkRUvSpCipQQVEpUeSghSuKeKUpKQSo4ddDTUbGmYZzilxJNUOIjNgFtrF1GZ0adM9IuWueCm70oVRiKkwbmpMEhTYCFqSolCEhQKm1IUlYC0qKSCUnFJKeCoi0tPqO5WZLLE8sl1jf1198x5H6Q794/wCePUjYvMrPtUkXZb5HYiqQ/wCYbxR/gPBEj8YXUzUJnlftn5xXBR6NcTkGmRhH6MdMdpQRyYbUrupJPckn+OMeipIJadr3tuTfmnqyrnjncxjrAW5INtjUdmXOumhxZF1OuR5FQjMuoMVkckKdSlQ7I+IJGGpKGmDHEM2A79yWjragvaC7Eblf9sCkHKewz8fy28P+0dxk5I813BbWUPLHFTby6JVl9bBJJJpcUkn/AIScYsnjdxK0Y/AOCIcDRFz7t79cDcX4D/4EbG87/Gt4/ay2erd8cli6Vegv2mWfSp3DxyWZnheofNt14wPDf9zj6fDHar0MdvbkVyH1Tr9a1IX2hPyOcyP+WjfzjGEMn+pZ1gmazyHdYqI2cKHj7JfLFTaFLZRMhKfSn4o674H/AFFGNWG36i/rckpb9kFutqPMnsh9S1wZUWfUrU1A02m21KpMV2nQm6YlQjMFpPBrfh3KB5SfpBwGaelbI4Pi13VooZyxpa/VbrBHWQejHMnL/UmnNm+swKZds96C9EmLYiLZefKm0IbJ9E7JCAPT4YBPWRSQaGNtgjQ0z2SGR5uUCezy+VPqO/EXf9RmYPlDyIeH0EKj82TivGin5fmoj78z+fGO1vo4fjkqUvqZPnmvL364ln8H/wDWKxz/AFvz9qx9b1uUhtaeqk6W8vafOp1MbrN0VuSqHS4j5UGQpKeS3XOPmUEgpAQnYqKkjcdyEKOl7U8gmwG1OVE+gbfEoAtfL/WPddHi1ar5tWtZ8qWA8aK3brUkxUnuELWR7w9CN1feODPfRNOa1hPvdVY2dwu4264JWeyoLkS9M8zOktuvsy4wkyhshC1pcldRzb0SCQTt8AcN5V1sit7/AEksn3D5L+yLndHFx2xedbvzTBm7T6AxVZClzKLI4TKcXN+ZQFo5jYFxRSlSCU8+ygDtgHbGuYI6tl7Y4pns5a4vgdZW7Z1vZk5F5lRLE1HWzAgplRlSI1zUM7trSEnZRQCQsFSeJKeJSpQ3TsQcWdRRTs0lKfgqgqnQuzJxb3XMl+nyC+4ent5j25D6ftx6cELzlln2vT5AuugHp/2nE+cPr0Yq8jNPBEjHfC6H6pY7i8+7oUlO4Ii/H/dmsJZPP8VnzzV68HtLvjkgCz4rovO2zx9KrEPqPr0YdlP7buB5JWIHSN4jmpG+0Z0/XzqDy9tSl2JS49UnQKo5JkNyJjcYJbMdxAIK+x8yh2GPJZPqGU7y5+IXraqEzNDQpP2XTpFHs6hQJaA3KiwGGHkJVyCVpbSlQB+PcHvjOeQ5xITTBZoBW5xRXUQaNp6vyJ7RitZsO0uMmxZNK8K1PE1suqc8Iw3sWfeHnbUP4b41XVDDRiEbf7STYXCcy4H8LXaoNIl+TM54OdmSNXiUu+mkJROp81QbbllKOmFpUQUnk3shaFgBQSlQIUO96arjERgqBdqHNTuLxLEbFC2YGSGqrU5YtXpGY1Rtm0KXFjF6JQKEvkaxNR3ZEl3ksIZCu5APqE+XtuCRz0lM8OiBJ3nDguSRTTsLXmyfGU+nAL0d0XJ7MOMy4s0pcCoIhPcw2suqWhba9h5kngoHb1SPXCMtR/JM8e9MsiGi0bkhLFyi1caXYLtn5fSLTzDsppxblOXWXCw5FSpRUUhBWgo3JJKApaQSeO2+2HpJaOpOfJdrsbJZkc8PdYbjr3CfOmays96ZXrguXOW8qbUBVGGmolr0lgGPT1IUTzDmw2JBKSBy5diVdgMJVL6cgNgbsxTMLZRrlKAdHeni/co8+s6LmumlRoNGuSat6mPMzW3lPIMyQ6CpKe6PI4g9/p2warqI5oo2M2gfSHBCYnvccSvGmLTvf2W2rjOO+bhpUaHbFxqkmmSmprbq3ecsOJ5Np7p3R37+npi1TURy08cbTrFuSpBA6OV0hxvzWm1NaZM2Y+pej54ZMKpU+uoiojS6dVHg0ApLamifNslba2lBJG6VApBB79rU1TDoDTz7FyaCTTCWMok1F6Xr51T6drPZuSTSaHm1RFeOUIy1+AU6oFLrIWN1JBAQQsctlIHqCTgdNVMpZnFuthV54DPGAdoQjbtj60MxYUW0byuSgWPbhQGKjcVLLb1Vkseig0UbhLqk9ueyNt9/XsSufQxnPjBJwGCq1tQ4Zrzq66wW/wBEWku69Ot2ZoRLij06Ralc6TNNWzK6zrrLa30gPJKRsVNuIJ/bvitbVsqGsLdoXKWmMBdfYUDW/pb1AaRLrroyEm2/c9i1iSZIoVfX0lx1bbJ5d07lIITzQscwhPJO4GCmppqpg7QCHDELgimieTGbg7+vtZ9E0dZrajM1Yd8ajajSYtMp0ZyNCte317jioHsVjshPIhZPJalFCQSANscNZDTx6OlGs4lc7M+Z2dPswC//2Q==";
  }

  public static function obtenerImagenInfodata(){
    return "data:image/jpeg;base64,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AD+AAAA4QklNBA0AAAAAAAQAAAB4OEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANTAAAABgAAAAAAAAAAAAAAyAAAAooAAAAPAEkATgBGAE8ARABBAFQAQQAxADUAMABkAHAAaQBzAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAKKAAAAyAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAyAAAAABSZ2h0bG9uZwAAAooAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAMgAAAAAUmdodGxvbmcAAAKKAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAA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QklNBCEAAAAAAFMAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAASAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBDAAAAAQA4QklNBAYAAAAAAAcAAgABAAEBAP/hDe1odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAxNCA3OS4xNTE0ODEsIDIwMTMvMDMvMTMtMTI6MDk6MTUgICAgICAgICI+DQoJPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4NCgkJPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNC0wMy0xN1QxNTozNTo0NS0wMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxNC0wMy0xN1QxNTozNjozOS0wMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTQtMDMtMTdUMTU6MzY6MzktMDM6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M2UxMDY3YmItNTFiNC00ZDM0LWIyY2YtODIyMWM4NGRhNGU1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjljZTNjMTliLTI1YmItNGM0Yy05OWVhLWRjZWYxMDE5Yzg3YyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjljZTNjMTliLTI1YmItNGM0Yy05OWVhLWRjZWYxMDE5Yzg3YyIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPg0KCQkJPHhtcE1NOkhpc3Rvcnk+DQoJCQkJPHJkZjpTZXE+DQoJCQkJCTxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjljZTNjMTliLTI1YmItNGM0Yy05OWVhLWRjZWYxMDE5Yzg3YyIgc3RFdnQ6d2hlbj0iMjAxNC0wMy0xN1QxNTozNTo0NS0wMzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIi8+DQoJCQkJCTxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozZTEwNjdiYi01MWI0LTRkMzQtYjJjZi04MjIxYzg0ZGE0ZTUiIHN0RXZ0OndoZW49IjIwMTQtMDMtMTdUMTU6MzY6MzktMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPg0KCQkJCTwvcmRmOlNlcT4NCgkJCTwveG1wTU06SGlzdG9yeT4NCgkJPC9yZGY6RGVzY3JpcHRpb24+DQoJCTxyZGY6RGVzY3JpcHRpb24geG1sbnM6TWljcm9zb2Z0UGhvdG89Imh0dHA6Ly9ucy5taWNyb3NvZnQuY29tL3Bob3RvLzEuMC8iPjxNaWNyb3NvZnRQaG90bzpEYXRlQWNxdWlyZWQ+MjAxNy0wNC0xMVQxMTo0ODowODwvTWljcm9zb2Z0UGhvdG86RGF0ZUFjcXVpcmVkPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj4NCjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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";
  }

  public static function obtenerImagenAvalDigital(){
    return 'data:image/png;base64,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CiAgICB4bWxuczppcHRjRXh0PSJodHRwOi8vaXB0Yy5vcmcvc3RkL0lwdGM0eG1wRXh0LzIwMDgtMDItMjkvIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi94bXAvMS4wLyIKICAgIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOmRiNGI3N2VjLWQ2MGUtNDZiMi04MjAzLWRmYzdjM2NmZmJlMyIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplY2ExZWMwZS01NTJkLTQ0NjUtODIxZS02YjM4MmFmNTRiMGYiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiNGYxZWQ5OC01Nzg2LTQwOWMtOWNiZi00OGRjOTg3ZDE1NDMiCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IkxpbnV4IgogICBHSU1QOlRpbWVTdGFtcD0iMTYyMTM0NDg4ODk3ODkzNSIKICAgR0lNUDpWZXJzaW9uPSIyLjEwLjgiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCI+CiAgIDxpcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4KICAgPGlwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkxvY2F0aW9uU2hvd24+CiAgIDxpcHRjRXh0OkFydHdvcmtPck9iamVjdD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkFydHdvcmtPck9iamVjdD4KICAgPGlwdGNFeHQ6UmVnaXN0cnlJZD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OlJlZ2lzdHJ5SWQ+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjY5ZDgyNGJlLWQzMGItNGJkYi1hYjEwLThlYjMxZTk3YTBlOCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChMaW51eCkiCiAgICAgIHN0RXZ0OndoZW49Ii0wMzowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgIDxwbHVzOkltYWdlU3VwcGxpZXI+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpJbWFnZVN1cHBsaWVyPgogICA8cGx1czpJbWFnZUNyZWF0b3I+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpJbWFnZUNyZWF0b3I+CiAgIDxwbHVzOkNvcHlyaWdodE93bmVyPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6Q29weXJpZ2h0T3duZXI+CiAgIDxwbHVzOkxpY2Vuc29yPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6TGljZW5zb3I+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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';
  }

  public static function validarAjax() {
    if(\Request::ajax()) {
      $usuario = \Session::get('usuario');

      if($usuario == null){
        return false;
      }
    } else {
      return 'HTTP';
    }

    return true; 

  }

  public static function obtenerTraduccionesGraficos() {
    //Traduccion de titutlos graficos contables = INGLES
    $traducciones_graficos = [];

    $traducciones_graficos['esp'] =  array(
      'capital_de_trabajo_esp' => 'CAPITAL DE TRABAJO',
      'patrimonial_esp'=>'ESTRUCTURA PATRIMONIAL',
      'solvencia_esp'=>'SOLVENCIA',
      'liquidez_corriente_esp'=>'LIQUIDEZ CORRIENTE',
      'endeudamiento_corriente_esp'=>'ENDEUDAMIENTO CORRIENTE',
      'efecto_palanca_esp'=>'EFECTO PALANCA',
      'ventas_esp'=>'VENTAS',
      'gastos_totales_sobre_ventas_esp'=>'GASTOS TOTALES SOBRE VENTAS (%)',
      'performance_esp'=>'RENTABILIDAD SOBRE VENTAS (%)',
      'cap_trabajo_activo_corriente_total' => 'Activo Corriente',
      'cap_trabajopasivo_corriente_total' => 'Pasivo Corriente',
      'estructura_patrimonial_activo' => 'Activo',
      'estructura_patrimonial_pasivo' => 'Pasivo',
      'estructura_patrimonial_pn' => 'Patrimonio Neto' 
       );

    $traducciones_graficos['ing'] =  array(
      'capital_de_trabajo_ing' => 'WORKING CAPITAL',
      'patrimonial_ing'=>'PATRIMONIAL ESTRUCTURE',
      'solvencia_ing'=>'SOLVENCY',
      'liquidez_corriente_ing'=>'CURRENT LEVERAGEIQUIDITY',
      'endeudamiento_corriente_ing'=>'CURRENT INDEBTEDNESS',
      'efecto_palanca_ing'=>'LEVERAGE',
      'ventas_ing'=>'SELLS',
      'gastos_totales_sobre_ventas_ing'=>'TOTAL EXPENSES/SALES (%)',
      'performance_ing'=>'NET PROFIT',
      'cap_trabajo_activo_corriente_total' => 'Current Assets',
      'cap_trabajopasivo_corriente_total' => 'Current Liabilities',
      'estructura_patrimonial_activo' => 'Assets',
      'estructura_patrimonial_pasivo' => 'Liabilities',
      'estructura_patrimonial_pn' => 'Net Worth' 
       );

    $traducciones_graficos['por'] = array(
      'capital_de_trabajo_por'=>'CAPITAL DE GIRO',
      'patrimonial_por'=>'SOLVÊNCIA PATRIMONIAL',
      'solvencia_por'=>'SOLVÊNCIA',
      'liquidez_corriente_por'=>'LIQUIDEZ CORRENTE',
      'endeudamiento_corriente_por'=>'ENDIVIDAMENTO CIRCULANTES',
      'efecto_palanca_por'=>'LEVERAGE',
      'ventas_por'=>'VENDAS',
      'gastos_totales_sobre_ventas_por'=>'DESPESAS TOTAIS / VENDAS (%)',
      'performance_por'=>'RENTABILIDADE (%)',
      'cap_trabajo_activo_corriente_total' => 'Ativo Circulante',
      'cap_trabajopasivo_corriente_total' => 'Passivo Circulante',
      'estructura_patrimonial_activo' => 'Ativo',
      'estructura_patrimonial_pasivo' => 'Passivo',
      'estructura_patrimonial_pn' => 'Patrimônio Líquido' 
      );

    return $traducciones_graficos;
  }

  public static function resultadoCombinaciones ($words) {
   $count_words = count($words);
    if( $count_words <= 1 ){
        $result = $words;
    }else{
      $result = array();
      for ( $i = 0; $i < $count_words; ++$i ) {
        $firstword = $words[$i];
        $remainingwords = array();
        for ( $j = 0; $j < $count_words; ++$j ) {
            if ( $i <> $j ) $remainingwords[] = $words[$j];
        }
        $combos = self::resultadoCombinaciones($remainingwords);
        for ( $j = 0; $j < count($combos); ++$j ) {
          $result[] = $firstword . ' ' . $combos[$j];
        }
      }
    }
    return $result;
  }




  public static function abrirDirectorio($path, $reference = ''){
    /*
    verifica si existe la ruta, 
    si es un directorio lo abre y devuelve el objeto de tipo array, 
    con el cual se trabajará en la posición cero, ejemplo: 

    $opened_root = Misc::abrirDirectorio($root_path);
    if (is_array($opened_root)) {
      while (($sub_folder_or_file = readdir($opened_root[0])) !== false) {
      ...
      }
      closedir($opened_root[0]);
    }

    (el dir debe ser cerrado manualmente luego de usar este método)
    si no es un directorio devuelve false
    si no tiene permisos para lectura devuelve un string con el error
    la variable REFERENCE puede usarse para aumentar la precisión del error, 
    por ejemplo pasar la linea y nombre de un archivo, datos previos al llamado del método, entre otros.
    */
    if (isset($path) && file_exists($path)){
      if (is_dir($path) && (basename($path) != '.') && (basename($path) != '..')) {
        if (($opened_path = opendir($path)) !== false) {
          return [$opened_path];
        }
        return "{$reference}[$path] Error: no se pudo abrir el directorio, revisar si tiene permisos.";
      }
      return false; // no es un directorio, pero esto no es necesariamente un error.
    }
    return "{$reference}[$path] Error: el directorio no existe.";
  }

  public static function abrirArchivo($path, $reference = ''){
    /*
    verifica si existe la ruta, 
    si es un archivo lo abre y devuelve el objeto de tipo array, 
    con el cual se trabajará en la posición cero, ejemplo: 

    $opened_file = Misc::abrirArchivo($path);
    if (is_array($opened_file)){
      $numero_linea = 0;
      while (($line = fgets($opened_file[0])) !== false) {
        $numero_linea++;
        ...
      }
      fclose($opened_file[0]);
    }

    (el archivo debe ser cerrado manualmente luego de usar este método)
    si no es un archivo devuelve false
    si no tiene permisos para lectura devuelve un string con el error
    la variable REFERENCE puede usarse para aumentar la precisión del error, 
    por ejemplo pasar la linea y nombre de un archivo, datos previos al llamado del método, entre otros.
    */
    if (isset($path) && file_exists($path)){
      if (is_file($path)) {
        if (($opened_path = fopen($path, "r")) !== false) {
          return [$opened_path];
        }
        return "{$reference}[$path] Error: no se pudo abrir el archivo, revisar si tiene permisos.";
      }
      return false; // no es un archivo, pero esto no es necesariamente un error.
    }
    return "{$reference}[$path] Error: el archivo no existe.";
  }

  public static function convertirFormatoFecha($date, $from = 'd/m/Y', $to = 'Y-m-d') {
    if (isset($date) && isset($from) && isset($to)) {
      $aux = \DateTime::createFromFormat($from, $date);
      if ($aux !== false) {
        $date = $aux->format($to);
      }
      return $date;
    }
    return null;
  }

  public static function limpiarString($str) {
    //limpia string para búsqueda, solo dejando caracteres alfanuméricos y espacios simples
    $str = trim($str);
    $str = preg_replace('/\s+/', ' ', $str);
    $str = preg_replace('/[^\p{Latin}\d ]/u', '', $str);
    return strtoupper($str);
    //return preg_replace( "/[^A-Z0-9Ñ ]/u", "", $str);
  }

  //Generador de Hash sin reverso, el segundo parámetro sirve para identificar cuantos caracteres devuelve el resultado.
  public static function HashGenerator($user_id,$str_quantity_result) {
    return strtoupper(substr(md5(uniqid($user_id, true)),0,$str_quantity_result));
  }

  // asignar null a todos los campos string vacíos de un array
  public static function convertirStringsVaciosEnNull($array = []) {
    return array_map(
      function($valor) {
        return ($valor === '' || $valor === "") ? null : $valor;
      }, $array);
  }

  public static function porcentajeContableEnBaseAlAnio($porcentaje_contable, $fecha, $porcentaje_deducido_por_anio = 20){
    $datetime1 = DateTime::createFromFormat('d/m/Y', $fecha);
    $datetime2 = new DateTime();
    $diff = $datetime1->diff($datetime2)->y;
    if ($diff > 7) $diff = 7;
    if ($diff > 3) {
      $porcentaje_deducido_por_anio = $porcentaje_deducido_por_anio * ($diff - 3);
      $porcentaje_contable = $porcentaje_contable - (($porcentaje_deducido_por_anio * $porcentaje_contable)/100);
    }
    return $porcentaje_contable;
  }

  // public static function obtenerEdadPersonaFisica($cuit) {
  //   $edad = 32;
  //   $exec = SQLConnection::backendStoreProcedure('obtener_edad_persona_fisica', array($cuit));
  //   if (sizeof($exec) > 0) {
  //     $hoy = new DateTime();
  //     $hoy = (int) $hoy->format('Y');
  //     if (isset($exec[0]->fecha_nac) && ($exec[0]->fecha_nac != '')){
  //       $fecha = str_replace('-', '/', $exec[0]->fecha_nac);
  //       $aux = explode('/', $fecha);
  //       foreach ($aux as $parte){
  //         if (strlen($parte) == 4){
  //           $anio = (int) $parte;
  //         }
  //       }
  //       $edad = isset($anio) ? ($hoy - $anio) : $edad;
  //     } elseif (isset($exec[0]->anio_nac) && ($exec[0]->anio_nac != '')) {
  //       $anio = (int) $exec[0]->anio_nac;
  //       $edad = isset($anio) ? ($hoy - $anio) : $edad; 
  //     }
  //   }
  //   return $edad;
  // }

   public static function obtenerEdadPersonaFisica($cuit) {
    $fecha_nacimiento = '';
    $edad = null;
    $hoy = date('Y');
    $exec = SQLConnection::backendStoreProcedure('obtener_edad_persona_fisica', array($cuit),'selectOne');
    if (isset($exec->fecha_nac)) {
      $fecha_nacimiento = self::convertirFormatoFecha($exec->fecha_nac,'Y-m-d','d/m/Y');
    } 
    if (!empty($fecha_nacimiento)) {
      if (isset($fecha_nacimiento) && ($fecha_nacimiento !== '') && ($fecha_nacimiento !== NULL))
        {$edad = self::calcularEdad($fecha_nacimiento);}
      }elseif(isset($exec->anio_nac) && ($exec->anio_nac !== '') && ($exec->anio_nac !==NULL)) {
        $anio = (int) $exec->anio_nac;
        $edad = isset($anio) ? ($hoy - $anio) : $edad; 
      }
    
    return $edad;
  }

  public static function demeritarScorePorEdad($calc_score, $edad, $demerito = 0.1) {
    $aux_edad = $edad;
    if ($edad > 99) {
      $edad = 99;
    }
    
    $demerito = Sqlconnection::backendStoreProcedure('obtener_score_por_edad', array($edad), true);
    if (isset($demerito->directo)) {
      $calc_score['score'] = $calc_score['score'] + ($demerito->directo);
      //$calc_score['afecta_directo']['debug'][] =  "Le suma: " .($demerito->directo). " por edad ($aux_edad años)";
      $calc_score['afecta_directo']['debug'] =  "Le suma: " .($demerito->directo). " por edad ($aux_edad años)";
    }
    
    /* 
    $min = 28;
    $max = 42;
    if ($edad < $min) {
      $calc_score['score'] = $calc_score['score'] - ($demerito * ($min - $edad));
      $calc_score['afecta_directo']['debug'][] =  "Le suma: " .(-1 * ($demerito * ($min - $edad))). " demerito por edad < $min ($demerito punto por cada año menos)";
    } else if ($edad > $max) {
      $calc_score['score'] = $calc_score['score'] - ($demerito * ($edad - $max));
      $calc_score['afecta_directo']['debug'][] =  "Le suma: " .(-1 * ($demerito * ($edad - $max))). " demerito por edad > $max ($demerito punto por cada año de más)";
    }
    */

    return $calc_score;
  }

  public static function demeritaSiCuitObservado($calc_score, $observado, $demerito = 10){
    if ($observado){
      $calc_score['score'] = $calc_score['score'] - $demerito;
   //   $calc_score['afecta_directo']['debug'][] =  "Le suma: " .(-1 * ($demerito)). " demerito por cuit observado";
    }
    return $calc_score;
  }

  public static function tipoPersona($cuit) { 
    $fisica_juridica = SQLConnection::obtenerTipoPersona($cuit);
    if (isset($fisica_juridica->tipo_persona)) 
       { 
        if ($fisica_juridica->tipo_persona == 'F' || $fisica_juridica->tipo_persona == 'J') { return $fisica_juridica->tipo_persona; }
        else { return (substr($cuit,0,1) == 3) ? 'J' : 'F'; }
        }
    else 
        { return (substr($cuit,0,1) == 3) ? 'J' : 'F'; } 
  }

  public static function nacionalidad($cuit) { 
    $nacionalidad = SQLConnection::obtenerTipoPersona($cuit);
    return $nacionalidad->country_code ?? null; 
  }

  public static function ameritaPorSituacionUno($bancos) {
    $amerita = true;
    $cantidad_situacion_1 = 0;

    if(isset($bancos) && is_array($bancos) && (sizeof($bancos) > 0)) {
      foreach($bancos as $banco) {
        if (isset($banco->situacion) && (str_replace(' ', '', $banco->situacion) != '') && (intval($banco->situacion) != 1 )) {
          $amerita = false;
        }else if (isset($banco->situacion) && (intval($banco->situacion) == 1 )){
          $cantidad_situacion_1++;
        }
      }
    } else {
      $amerita = false;
    }
    $situacion['amerita'] = ($amerita && ($cantidad_situacion_1 > 0));
    $situacion['cantidad'] = $cantidad_situacion_1;
    return $situacion;
  }


  public static function sumaPorSituacionUno($calc_score, $cantidad) {
    if ($cantidad > 24) {
      $cantidad = 24;
    }
    $amerita = Sqlconnection::backendStoreProcedure('obtener_score_situacion_uno', array($cantidad), true);
    if (isset($amerita->directo)) {
      $calc_score['afecta_directo']['debug'] =  "Le suma: " .$amerita->directo. "  ameritado por poseer situación 1";
      $calc_score['score'] = $calc_score['score'] + $amerita->directo;
    }
    return $calc_score;
  }

 
  public static function ameritaPorEmpleo($calc_score, $cuit, $amerita = 5){
    $empleado_de    = SQLConnection::obtenerEmpleadoDe($cuit);
    $inscripciones  = SQLConnection::obtenerInscripciones($cuit);
    if ((sizeof(array($empleado_de)) > 0) || ((sizeof(array($inscripciones)) > 0) && ((isset($inscripciones->monotributo)))) || (isset($inscripciones->empleador) && $inscripciones->empleador == 'SI')) {
      //$calc_score['afecta_directo']['debug'][] =  "Le suma: " .$amerita. "  ameritado por poseer empleo/monotributo";
      $calc_score['afecta_directo']['debug'] =  "Le suma: " .$amerita. "  ameritado por poseer empleo/monotributo";
      $calc_score['score'] = $calc_score['score'] + $amerita;
    }
    return $calc_score;
  }

  public static function diccionarioRazonesSociales($razon_social) {
    $words = explode(' ', $razon_social);
    $to_search[0][0] = ['ARG', 'ARGENTINA'];
    $to_search[0][1] = [];
    $to_search[1][0] = ['SACIIF'];
    $to_search[1][1] = [' SACII Y F'];
    $to_search[2][0] = ['SRL'];
    $to_search[2][1] = [' S R L', ' SOC RESP LTDA', ' SOCIEDAD DE RESPONSABILIDAD LIMITADA'];
    $to_search[3][0] = ['SA'];
    $to_search[3][1] = [' S A',' SOCIEDAD ANONIMA'];
    $to_search[4][0] = ['SH'];
    $to_search[4][1] = [' S H', ' S DE H', ' SOCIEDAD DE HECHO'];
    $dictionary = false;

    foreach ($to_search as $array) {
      $dictionary = self::buscarArray($array[0], $words, array_map('ltrim', $array[1]));
      if (is_array($dictionary)) {
        return $dictionary;
      }

      if ($array[1] != []) {
        $dictionary = self::buscarString($array[1], $razon_social, array_map(function($word) { return ' '.$word; }, $array[0]));
        if (is_array($dictionary)) {
          return $dictionary;
        }
      }
    }
    return false;
  }

  public static function buscarArray($to_search, $words, $to_add = []) {
    $aux = $to_search;
    $dictionary = [];
    foreach ($to_search as $searching) {
      $key = array_search($searching, $words);
      if ($key !== false && $key != 0) {
        $aux = array_merge($aux, $to_add);
        foreach ($aux as $value) {
          $words[$key] = $value;
          $dictionary[] = implode(' ', $words);
        }
        return $dictionary;
      }
    }
    return false;
  }

  public static function buscarString($to_search, $string, $to_add = []) {
    $aux = $to_search;
    $dictionary = [];
    foreach ($to_search as $searching) {
      $key = strpos($string, $searching);
      if ($key !== false && $key != 0) {
        $aux = array_merge($aux, $to_add);
        foreach ($aux as $value) {
          $dictionary[] = preg_replace('/'.$searching.'/', $value, $string, 1);
        }
        return $dictionary;
      }
    }
    return false;
  }


  public static function removerDiccionarioRazonesSociales($razon_social) {
    $words = explode(' ', $razon_social);
    $to_search[0][0] = ['ARG', 'ARGENTINA'];
    $to_search[0][1] = [];
    $to_search[1][0] = ['SACIIF'];
    $to_search[1][1] = [' SACII Y F'];
    $to_search[2][0] = ['SRL'];
    $to_search[2][1] = [' S R L', ' SOC RESP LTDA', ' SOCIEDAD DE RESPONSABILIDAD LIMITADA'];
    $to_search[3][0] = ['SA'];
    $to_search[3][1] = [' S A',' SOCIEDAD ANONIMA'];
    $to_search[4][0] = ['SH'];
    $to_search[4][1] = [' S H', ' S DE H', ' SOCIEDAD DE HECHO'];
    $dictionary = false;

    foreach ($to_search as $array) {
      $string = self::removerArray($array[0], $words, array_map('ltrim', $array[1]));
      if ($string !== false) {
        return $string;
      }

      if ($array[1] != []) {
        $string = self::removerString($array[1], $razon_social, array_map(function($word) { return ' '.$word; }, $array[0]));
        if ($string !== false) {
          return $string;
        }
      }
    }
    return false;
  }

  public static function removerArray($to_remove, $words, $to_add = []) {
    $aux = $to_remove;
    foreach ($to_remove as $searching) {
      $key = array_search($searching, $words);
      if ($key !== false && $key != 0) {
        unset($words[$key]);
        $words= implode(' ', $words);
        return $words;
      }
    }
    return false;
  }

  public static function removerString($to_remove, $string, $to_add = []) {
    $aux = $to_remove;
    foreach ($to_remove as $searching) {
      $key = strpos($string, $searching);
      if ($key !== false && $key != 0) {
        $string = str_replace($searching, '', $string);
        return $string;
      }
    }
    return false;
  }
  
  public static function obtenerImagenMarcasExterno($num_acta,$num_boletin){
    $url  = 'https://portaltramites.inpi.gob.ar/Marcas/Logo?Acta='.$num_acta;
    $url_valida = get_headers($url); 
    if ($url_valida[0] == 'HTTP/1.1 302 Found' || !$url_valida ) {
      return false;
    }else{
      $file = file_get_contents($url);
      $data_image = str_replace(array("\r","\n","/>",'<img src="data:image/gif;base64,','"'),array("","","","","",""),$file);
      $data_image = trim($data_image);
      $data_image_decode = base64_decode($data_image);
      
      if(!is_dir('/var/www/html/compartido/marcas/'.$num_boletin.'/marcas/')){
        $mkdir = mkdir('/var/www/html/compartido/marcas/'.$num_boletin.'/marcas/',0777,true);
        if($mkdir){
          file_put_contents('/var/www/html/compartido/marcas/'.$num_boletin.'/marcas/'.$num_acta.'.gif',$data_image_decode);
          return true;
        }
      }elseif(!file_exists('/var/www/html/compartido/marcas/'.$num_boletin.'/marcas/'.$num_acta.'.gif')){
        file_put_contents('/var/www/html/compartido/marcas/'.$num_boletin.'/marcas/'.$num_acta.'.gif',$data_image_decode);
        return true;
      }
      return true;
    }
  }

  // public static function ddd($var) {
  //   var_dump($var);
  //   die();
  // }

  public static function ddd($var) {
    echo "<pre>".print_r($var,true)."</pre>";
    die();
  }

  public static function scorePorPreferencias($total_por_grupo, $porcentaje_por_grupo, &$suma_de_grupos = 0, &$porcentaje_por_grupo_afectado_por_preferencias, &$score_contables) {
    $preferencias = isset(Session::get('usuario')->preferencias) ? Session::get('usuario')->preferencias : null;

     $interes = [];
    /* 21/10/2024: No son mas valores fijos. De acuerdo al nro de preferencia es que porcentaje representa del total
    $interes[0] = 0.00; // nada
    $interes[1] = 0.10; // mínimo
    $interes[2] = 0.26; // poco
    $interes[3] = 0.68; // normal
    $interes[4] = 0.87; // bastante
    $interes[5] = 1.00; // mucho
    */

    // Si no están definidas las preferencias del usuarios se toma 3 = normal
    $total_preferencias = ($preferencias->custom_score_judiciales ?? 3) +
                          ($preferencias->custom_score_cheques ?? 3) +
                          ($preferencias->custom_score_cendeu ?? 3) +
                          ($preferencias->custom_score_fiscales ?? 3) +
                          ($preferencias->custom_score_formales ?? 3) +
                          ($preferencias->custom_score_contable ?? 3);

    $interes = [];
    $interes[0] = 0.00; // nada
    $interes[1] = 1 / $total_preferencias; // mínimo
    $interes[2] = 2 / $total_preferencias; // poco
    $interes[3] = 3 / $total_preferencias; // normal
    $interes[4] = 4 / $total_preferencias; // bastante
    $interes[5] = 5 / $total_preferencias; // mucho

    $arr_aux = [];
    $result = [];
    //$preferencias = isset(Session::get('usuario')->preferencias) ? Session::get('usuario')->preferencias : null;
    $aux_porcentaje_grupo = clone $porcentaje_por_grupo;
    foreach ($total_por_grupo as $key => $value) {
      if ($key == 1) { // judicial
        $preferencia = isset($preferencias->custom_score_judiciales) ? $interes[$preferencias->custom_score_judiciales] : $interes[3];
        unset($aux_porcentaje_grupo->judicial);
        $arr_aux[$key] = $preferencia * $value;
      } elseif ($key == 2) { // cheques
        unset($aux_porcentaje_grupo->cheques);
        $preferencia = isset($preferencias->custom_score_cheques) ? $interes[$preferencias->custom_score_cheques] : $interes[3];
        $arr_aux[$key] = $preferencia * $value;
      } elseif ($key == 3) { // cendeu
        unset($aux_porcentaje_grupo->cendeu);
        $preferencia = isset($preferencias->custom_score_cendeu) ? $interes[$preferencias->custom_score_cendeu] : $interes[3];
        $arr_aux[$key] = $preferencia * $value;
      } elseif ($key == 4) { // fiscal
        unset($aux_porcentaje_grupo->fiscal);
        $preferencia = isset($preferencias->custom_score_fiscales) ? $interes[$preferencias->custom_score_fiscales] : $interes[3];
        $arr_aux[$key] = $preferencia * $value;
      }
       elseif ($key == 5) { // contable
        unset($aux_porcentaje_grupo->contable);
        $preferencia = isset($preferencias->custom_score_contable) ? $interes[$preferencias->custom_score_contable] : $interes[3];
        $arr_aux[$key] = $preferencia * $value;
      }


   }

    $aux_porcentaje_grupo = json_decode(json_encode($aux_porcentaje_grupo), true);

     if (!isset($aux_porcentaje_grupo['contable'])) {
      $aux_porcentaje_grupo['contable'] = 0;
    }

    if(isset($score_contables->fecha_balance) && !empty($score_contables->fecha_balance)){
      $aux_porcentaje_grupo['contable'] = self::porcentajeContableEnBaseAlAnio($aux_porcentaje_grupo['contable'], $score_contables->fecha_balance);
    }
    //var_dump($aux_porcentaje_grupo);
    foreach ($aux_porcentaje_grupo as $key => $value) {
      if ($key == 'judicial') { // judicial
        $preferencia = isset($preferencias->custom_score_judiciales) ? $interes[$preferencias->custom_score_judiciales] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'cheques') { // cheques
        $preferencia = isset($preferencias->custom_score_cheques) ? $interes[$preferencias->custom_score_cheques] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'cendeu') { // cendeu
        $preferencia = isset($preferencias->custom_score_cendeu) ? $interes[$preferencias->custom_score_cendeu] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'fiscal') { // fiscal
        $preferencia = isset($preferencias->custom_score_fiscales) ? $interes[$preferencias->custom_score_fiscales] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'formal') { // formal
        $preferencia = isset($preferencias->custom_score_formales) ? $interes[$preferencias->custom_score_formales] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'contable') { // contable
        $preferencia = isset($preferencias->custom_score_contable) ? $interes[$preferencias->custom_score_contable] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      }

    }

    foreach ($aux_porcentaje_grupo as $key => $value) {
      $aux_total[$key] = ($value / (array_sum($arr_aux) + array_sum(array_values($aux_porcentaje_grupo)))) * 100;
      //var_dump($key . ': value ' . $value . '/ ( array_sum: ' . array_sum($arr_aux) . ' + array_sum(array_values) ' . array_sum(array_values($aux_porcentaje_grupo)) . ' * 100 ');
      if ($key == 'judicial') { // judicial
        $porcentaje_por_grupo_afectado_por_preferencias->judicial = $aux_total[$key];
      } elseif ($key == 'cheques') { // cheques
        $porcentaje_por_grupo_afectado_por_preferencias->cheques = $aux_total[$key];
      } elseif ($key == 'cendeu') { // cendeu
        $porcentaje_por_grupo_afectado_por_preferencias->cendeu = $aux_total[$key];
      } elseif ($key == 'fiscal') { // fiscal
        $porcentaje_por_grupo_afectado_por_preferencias->fiscal = $aux_total[$key];
      } elseif ($key == 'formal') { // formal
        $porcentaje_por_grupo_afectado_por_preferencias->formal = $aux_total[$key];
      } elseif ($key == 'contable') { // contable
        $porcentaje_por_grupo_afectado_por_preferencias->contable = $aux_total[$key];
      }
    }


    foreach ($arr_aux as $key => $value) {
      $result[$key] = ($value / (array_sum($arr_aux) + array_sum(array_values($aux_porcentaje_grupo)))) * 100;
      if ($key == 1) { // judicial
        $porcentaje_por_grupo_afectado_por_preferencias->judicial = $result[$key];
      } elseif ($key == 2) { // cheques
        $porcentaje_por_grupo_afectado_por_preferencias->cheques = $result[$key];
      } elseif ($key == 3) { // cendeu
        $porcentaje_por_grupo_afectado_por_preferencias->cendeu = $result[$key];
      } elseif ($key == 4) { // fiscal
        $porcentaje_por_grupo_afectado_por_preferencias->fiscal = $result[$key];
      }
    }
    $suma_de_grupos = (array_sum($arr_aux) + array_sum(array_values($aux_porcentaje_grupo)));
    return $result;
  }

  public static function scorePorPreferenciasBkp($total_por_grupo, $porcentaje_por_grupo, &$suma_de_grupos = 0, &$porcentaje_por_grupo_afectado_por_preferencias, &$score_contables) {
   
    $interes = [];
    $interes[0] = 0.00; // nada
    $interes[1] = 0.10; // mínimo
    $interes[2] = 0.26; // poco
    $interes[3] = 0.68; // normal
    $interes[4] = 0.87; // bastante
    $interes[5] = 1.00; // mucho

    $arr_aux = [];
    $result = [];
    $preferencias = isset(Session::get('usuario')->preferencias) ? Session::get('usuario')->preferencias : null;
    $aux_porcentaje_grupo = clone $porcentaje_por_grupo;
    /*foreach ($total_por_grupo as $key => $value) {
      if ($key == 1) { // judicial
        $preferencia = isset($preferencias->custom_score_judiciales) ? $interes[$preferencias->custom_score_judiciales] : $interes[3];
        unset($aux_porcentaje_grupo->judicial);
        $arr_aux[$key] = $preferencia * $value;
      } elseif ($key == 2) { // cheques
        unset($aux_porcentaje_grupo->cheques);
        $preferencia = isset($preferencias->custom_score_cheques) ? $interes[$preferencias->custom_score_cheques] : $interes[3];
        $arr_aux[$key] = $preferencia * $value;
      } elseif ($key == 3) { // cendeu
        unset($aux_porcentaje_grupo->cendeu);
        $preferencia = isset($preferencias->custom_score_cendeu) ? $interes[$preferencias->custom_score_cendeu] : $interes[3];
        $arr_aux[$key] = $preferencia * $value;
      } elseif ($key == 4) { // fiscal
        unset($aux_porcentaje_grupo->fiscal);
        $preferencia = isset($preferencias->custom_score_fiscales) ? $interes[$preferencias->custom_score_fiscales] : $interes[3];
        $arr_aux[$key] = $preferencia * $value;
      }
    }*/

    $aux_porcentaje_grupo = json_decode(json_encode($aux_porcentaje_grupo), true);

     if (!isset($aux_porcentaje_grupo['contable'])) {
      $aux_porcentaje_grupo['contable'] = 0;
    }

    if(isset($score_contables->fecha_balance) && !empty($score_contables->fecha_balance)){
      $aux_porcentaje_grupo['contable'] = self::porcentajeContableEnBaseAlAnio($aux_porcentaje_grupo['contable'], $score_contables->fecha_balance);
    }
    foreach ($aux_porcentaje_grupo as $key => $value) {
      if ($key == 'judicial') { // judicial
        $preferencia = isset($preferencias->custom_score_judiciales) ? $interes[$preferencias->custom_score_judiciales] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'cheques') { // cheques
        $preferencia = isset($preferencias->custom_score_cheques) ? $interes[$preferencias->custom_score_cheques] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'cendeu') { // cendeu
        $preferencia = isset($preferencias->custom_score_cendeu) ? $interes[$preferencias->custom_score_cendeu] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'fiscal') { // fiscal
        $preferencia = isset($preferencias->custom_score_fiscales) ? $interes[$preferencias->custom_score_fiscales] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'formal') { // formal
        $preferencia = isset($preferencias->custom_score_formales) ? $interes[$preferencias->custom_score_formales] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      } elseif ($key == 'contable') { // contable
        $preferencia = isset($preferencias->custom_score_contable) ? $interes[$preferencias->custom_score_contable] : $interes[3];
        $aux_porcentaje_grupo[$key] = $preferencia * $value;
      }
    }

    foreach ($aux_porcentaje_grupo as $key => $value) {
      $aux_total[$key] = ($value / (array_sum($arr_aux) + array_sum(array_values($aux_porcentaje_grupo)))) * 100;
      if ($key == 'judicial') { // judicial
        $porcentaje_por_grupo_afectado_por_preferencias->judicial = $aux_total[$key];
      } elseif ($key == 'cheques') { // cheques
        $porcentaje_por_grupo_afectado_por_preferencias->cheques = $aux_total[$key];
      } elseif ($key == 'cendeu') { // cendeu
        $porcentaje_por_grupo_afectado_por_preferencias->cendeu = $aux_total[$key];
      } elseif ($key == 'fiscal') { // fiscal
        $porcentaje_por_grupo_afectado_por_preferencias->fiscal = $aux_total[$key];
      } elseif ($key == 'formal') { // formal
        $porcentaje_por_grupo_afectado_por_preferencias->formal = $aux_total[$key];
      } elseif ($key == 'contable') { // contable
        $porcentaje_por_grupo_afectado_por_preferencias->contable = $aux_total[$key];
      }
    }

    foreach ($arr_aux as $key => $value) {
      $result[$key] = ($value / (array_sum($arr_aux) + array_sum(array_values($aux_porcentaje_grupo)))) * 100;
      if ($key == 1) { // judicial
        $porcentaje_por_grupo_afectado_por_preferencias->judicial = $result[$key];
      } elseif ($key == 2) { // cheques
        $porcentaje_por_grupo_afectado_por_preferencias->cheques = $result[$key];
      } elseif ($key == 3) { // cendeu
        $porcentaje_por_grupo_afectado_por_preferencias->cendeu = $result[$key];
      } elseif ($key == 4) { // fiscal
        $porcentaje_por_grupo_afectado_por_preferencias->fiscal = $result[$key];
      }
    }

    $suma_de_grupos = (array_sum($arr_aux) + array_sum(array_values($aux_porcentaje_grupo)));

    return $result;
  }

  public static function obtenerDatosAfipNuevo(){
    $html = HtmlDomParser::file_get_html('http://www.afip.gov.ar/mercurio/consultapadron/buscarcontribuyente.aspx');
    $formulario_afip_padron = $html->find('div[id=contenidoInterno]', 0);
    return $formulario_afip_padron;
  }

  public static function parseFechaDatosAfip($fecha_parse){
    $fecha = substr($fecha_parse, 0,10);
    if (($fecha == '1901-01-01') || ($fecha == '1800-01-01')) {
      $fecha = null;
    }
    return $fecha;
  }

  public static function multiexplode($delimiters,$string) {
    $ready = str_replace($delimiters, $delimiters[0], $string);
    $launch = explode($delimiters[0], $ready);
    return  $launch;
  }

  public static function calcularEdad($edad){
    //dd($edad);//23/01/2000
    $edad_exp = self::multiexplode(array("/","-"),$edad);
    $edad = self::convertirFormatoFecha($edad,'d/m/Y','Y-m-d');
    $date = new DateTime($edad);
    $now = new DateTime();
    $interval = $now->diff($date);
    return $interval->y;
  }

  public static function esCuitArgentino($cuit) {
    if (isset($cuit) && is_numeric($cuit) && strlen($cuit) == 11 && (($cuit[0]=="2") || ($cuit[0]=="3"))) {
      return true;
    }
    return false;
  }

  public static function validarCuit($cuit){
      if (isset($cuit) && is_numeric($cuit) && strlen($cuit) == 11) {
      $cadena = str_split($cuit);
      $result = $cadena[0]*5;
      $result += $cadena[1]*4;
      $result += $cadena[2]*3;
      $result += $cadena[3]*2;
      $result += $cadena[4]*7;
      $result += $cadena[5]*6;
      $result += $cadena[6]*5;
      $result += $cadena[7]*4;
      $result += $cadena[8]*3;
      $result += $cadena[9]*2;

      $div = intval($result/11);
      $resto = $result - ($div*11);

      if($resto==0){
          if($resto==$cadena[10]){
              return true;
          }else{
              return false;
          }
      }elseif($resto==1){
          if($cadena[10]==9 AND $cadena[0]==2 AND $cadena[1]==3){
              return true;
          }elseif($cadena[10]==4 AND $cadena[0]==2 AND $cadena[1]==3){
              return true;
          }
      }elseif($cadena[10]==(11-$resto)){
          return true;
      }else{
          return false;
      }
    }
    return false;
  }


  // Diego
  public static function validarCuil($cuil){
    $regex = "/^([0-9]{11})$/";
    return preg_match($regex,$cuil);
  }

  public static function validarFecha($fecha){
    $regex = "/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/";
    if(preg_match($regex,$fecha)){
      $fecha = explode('-',$fecha);
      return checkdate($fecha[1],$fecha[2],$fecha[0]);
    }
  }

  public static function generateRandomString($length = 10) {
      $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
      $charactersLength = strlen($characters);
      $randomString = '';
      for ($i = 0; $i < $length; $i++) {
          $randomString .= $characters[rand(0, $charactersLength - 1)];
      }
      return $randomString;
  }  


  //Llamado CURL.
   public static function CURLCall($url,$params,$type="POST"){
    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => $type,
      CURLOPT_POSTFIELDS => $params,
      CURLOPT_HTTPHEADER => array(
        "cache-control: no-cache",
        "Content-Type: application/x-www-form-urlencoded"
      ),
    ));

    $response = curl_exec($curl);
    $err      = curl_error($curl);

    curl_close($curl);

    if ($err) {
      return json_encode(array('error'=>true));
    } else {
      return $response;
    }
  }
   /**
   * Calcula la diferencia en meses entre 2 fechas.
   *
   * @param \DateTime $date1
   * @param \DateTime $date2
   * @return int
   */
  public static function calcularDiferenciaEnMeses($date1,$date2)
  {
    $date1 = new DateTime($date1);
    $date2 = new DateTime($date2);
      $diff =  $date1->diff($date2);

      $months = $diff->y * 12 + $diff->m + $diff->d / 30;

      return (int) round($months);
  }




  /// Para usar en modulos Imperium
  public static function periodoVencido($fmt = 'Ym') {
    $m1 = date_create_from_format('Y-m-d', date('Y-m-') . '01');
    $di = date_interval_create_from_date_string('-1 month');
    return date_format(date_add($m1, $di) , $fmt);
  }

  public static function formatPeriodo($periodo, $fmt = 'm/Y') {
    $ym = substr($periodo, 0, 4) . '-' . substr($periodo, 4) . '-01';
    $f = date_create_from_format('Y-m-d', $ym);
    return date_format($f, $fmt);
  }

  public static function fechaMesProximo($fmt = 'd/m/Y') {
    $m1 = date_create_from_format('Y-m-d', date('Y-m-') . '01');
    $di = date_interval_create_from_date_string('1 month');
    return date_format(date_add($m1, $di) , $fmt);    
  }

  /** Devuelve un array con los ultimos 12 meses ordenados hacia atrás donde cada elemento es una estructura de 3 valores:
  *       periodo_Ym : 2020-05
  *       periodo_my : 05/2020
  *       periodo : 202005
  *
  *   Pasando el parámetro en false arranca desde el período vencido hacia atrás.
  **/
  public static function arrayPeriodos($acceso = true) {

    $servicios = Session::get('productos_cliente');
    foreach($servicios as $serv) {
      if($serv->id_producto == 73) {
        $acceso = ($serv->acceso_ci > 0) ? true : false;
        break;
      }
    }

    $periodos = [];
    $m1m = date_interval_create_from_date_string("-1 month");
    $d1 = $acceso == true ? date_create_from_format('Y-m-d', date('Y-m-') . '01') : date_add(date_create_from_format('Y-m-d', date('Y-m-') . '01'), $m1m) ;
    for($j = 0; $j < 24; $j++) {
      $p = new stdClass;
      $p->periodo_my = date_format($d1, 'm/Y');     
      $p->periodo_ym = date_format($d1, 'Y-m');
      $p->periodo = date_format($d1, 'Ym');
      $periodos[$j] = $p;
      $d1 = date_add($d1, $m1m);
    }
    return $periodos;

  }

  // dado un doc_id busca en la carpeta correspondiente el archivo PDF correspondiente. Devuelve el nombre del file o null si no hay file
  public static function searchFile($doc_id) {
    $fn = NULL;
    if ($doc_id > 0) {
      $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($doc_id), 'selectOne');
      if (!empty($doc)) {

        if ($doc->doc_id_lista > 0 AND $doc->doc_id_padre > 0) {
          // Como es un doc hijo, apunto a abrir el padre : 
          $doc_id = $doc->doc_id_padre;
          $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($doc_id), 'selectOne');
        }

        if($doc->replicated_doc_id > 0) {
          $replicated = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array(NULL,NULL,NULL,NULL,$doc_id), 'selectOne');
          if (!empty($replicated)) {
            $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($replicated->doc_id), 'selectOne');
          }
        }

        $rootpath = env('PATH_DOCUMENTOS_IMPERIUM') . '/' . $doc->doc_path;
        if (is_dir($rootpath)) {
          $pattern = $doc->preffix . '*.pdf';
          $files = glob( $rootpath . '/' . $pattern );
          foreach ($files as $f => $file) {
            $extn = strtolower(pathinfo($file, PATHINFO_EXTENSION));
            if ($extn == 'pdf') {
              $fn = basename($file);
            }
          }
        }
      }
    }
    return $fn;
  }



  // IDEM ANTERIOR dado un doc_id busca en la carpeta correspondiente al archivo de reemplazo el archivo PDF según versión. Devuelve el nombre del file o null si no hay file
  public static function searchFileAux($doc_id, $doc_version) {
    $fn = NULL;
    if ($doc_id > 0 AND $doc_version > 0) {
      $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento_Reemplazo', array($doc_id, $doc_version), 'selectOne');
      if (!empty($doc)) {

        if ($doc->doc_id_lista > 0 AND $doc->doc_id_padre > 0) {
          // Como es un doc hijo, apunto a abrir el padre : 
          $doc_id = $doc->doc_id_padre;
          $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($doc_id), 'selectOne');
        }

        $rootpath = env('PATH_DOCUMENTOS_IMPERIUM') . '/' . $doc->doc_path . '/' . str_pad($doc_version, 3, '0', STR_PAD_LEFT);
        if (is_dir($rootpath)) {
          $pattern = $doc->preffix . '*.pdf';
          $files = glob( $rootpath . '/' . $pattern );
          foreach ($files as $f => $file) {
            $extn = strtolower(pathinfo($file, PATHINFO_EXTENSION));
            if ($extn == 'pdf') {
              $fn = basename($file);
            }
          }
        }
      }
    }
    return $fn;
  }


  // dado un DOC_ID devuelve la URL del documento, incluyendo búsqueda replicada 
  public static function getDocUrl($doc_id, $doc_version = NULL) {
    $f_url = NULL;
    $fn = NULL;

    if ($doc_id > 0) {

      // version solicitada
      $dv = ($doc_version == NULL) ? 0 : $doc_version;

      
      /*if ($doc_version == 0) {
        $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($doc_id), 'selectOne');
        if($doc->replicated_doc_id > 0) {
          $replicated = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array(NULL, NULL, NULL, NULL, $doc_id), 'selectOne');
          $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($replicated->doc_id), 'selectOne');
        }
      }
      else {
        $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento_Reemplazo', array($doc_id, $doc_version), 'selectOne');
        $verspath = str_pad($doc_version, 3, '0', STR_PAD_LEFT) . '/';
      }*/
      
      $verspath = '';

      // evaluamos según versiones existentes del documento y estado //
      $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($doc_id), 'selectOne');
      $docpath = $doc->doc_path;
    
      if ($doc->doc_version == 0) {
        // por si tiene replicado
        if($doc->replicated_doc_id > 0) {
          $replicated = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array(NULL, NULL, NULL, NULL, $doc_id), 'selectOne');
          $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($replicated->doc_id), 'selectOne');
          $docpath = $doc->doc_path;
        }        
      }
      else {
        // documento tiene reemplazos
        if ($dv == 0) {
          // solicito la versión 0, depende del estado
          if ($doc->estado_doc == 'V') {
            // si esta verificado entonces la encuentro en la carpeta 0
            $verspath = '000/';
          }
        }
        else {
          // solicito una versión de reemplazo, se encuentra en la carpeta de la versión
          $verspath = str_pad($dv, 3, '0', STR_PAD_LEFT) . '/';
        }
      }

      if (!empty($doc)) {

        $rootpath = env('PATH_DOCUMENTOS_IMPERIUM') . '/' . $docpath . $verspath;
        if (is_dir($rootpath)) {
          $pattern = $doc->preffix . '*.pdf';
          $files = glob( $rootpath . $pattern );
          foreach ($files as $f => $file) {
            $extn = strtolower(pathinfo($file, PATHINFO_EXTENSION));
            if ($extn == 'pdf') {
              $fn = basename($file);
            }
          }

           if ($fn == NULL) {
            $pattern = $doc->preffix . '*.PDF';
            $files = glob( $rootpath . $pattern );
            foreach ($files as $f => $file) {
              $extn = pathinfo($file, PATHINFO_EXTENSION);
              if ($extn == 'PDF') {
                $fn = basename($file);
              }
            }              
          }

          if ($fn != NULL) {
            $f_url = env('RUTA_DOCUMENTOS_IMPERIUM') . '/' . $docpath . $verspath . $fn;
          }
        }
      }
    }
    return $f_url;

  }

  private static function esEx($n) {
    return (preg_match('/^[a-z]{2}/', $n) == 1);
  }

  public static function quitarRepetidos($malla_societaria) {
    $nuevo = array();
    //$malla_societaria     = SQLConnection::grafoSociedades('20076297534','F');
    for ($i=0; $i<(count($malla_societaria)-1); $i++) {
        if($malla_societaria[$i]->idNodoGrafo != $malla_societaria[$i+1]->idNodoGrafo) {
            $nuevo[] = $malla_societaria[$i];
        } else {
          if(!self::esEx($malla_societaria[$i]->nombre_persona) and !self::esEx($malla_societaria[$i+1]->nombre_persona) and $malla_societaria[$i]->seccion != $malla_societaria[$i+1]->seccion) {
            $nuevo[] = $malla_societaria[$i];
          } else if(!self::esEx($malla_societaria[$i]->nombre_persona) and self::esEx($malla_societaria[$i+1]->nombre_persona)) {
              $nuevo[] = $malla_societaria[$i];
              $i++;
          } else {
              $nuevo[] = $malla_societaria[$i+1];
              $i++;
          }
        }
    }
    if($nuevo[count($nuevo)-1]->nombre_persona != $malla_societaria[count($malla_societaria)-1]->nombre_persona and $nuevo[count($nuevo)-1]->seccion != $malla_societaria[count($malla_societaria)-1]->seccion) {
      $nuevo[] = $malla_societaria[count($malla_societaria)-1];
    } else if($nuevo[count($nuevo)-1]->seccion != $malla_societaria[count($malla_societaria)-1]->seccion) {
      $nuevo[] = $malla_societaria[count($malla_societaria)-1];
    } else if($nuevo[count($nuevo)-1]->nombre_persona != $malla_societaria[count($malla_societaria)-1]->nombre_persona) {
      $nuevo[] = $malla_societaria[count($malla_societaria)-1];
    }
    return $nuevo;
  }

  public static function tieneRepetidos($malla_societaria) {
    for ($i=0; $i<(count($malla_societaria)-1); $i++) {
      if($malla_societaria[$i]->idNodoGrafo == $malla_societaria[$i+1]->idNodoGrafo) {
        return true;
      }
    }
    return false;
  }

/* FUNCION PARA QUE LE SUME 1+ HORA MAS A LA FECHA */
public static function unaHoraMas(){
  date_default_timezone_set("America/Argentina/Buenos_Aires");
  return date('d M Y H:i:s', strtotime('+1 hour', strtotime(date("d M Y H:i"))));
}

  /// devolver un Array con las URL de los documentos (el index del array se corresponde con cada doc_version)
  public static function docUrls($doc_id) {
    $a_url = [];
    if ($doc_id > 0) {
      $doc = SQLConnection::backendStoreProcedure('Imperium_Datos_Documento', array($doc_id), 'selectOne');
      if (!empty($doc)) {
        if($doc->estado_doc != 'N') {
          for($dv = 0; $dv <= $doc->doc_version; $dv++) {
            $verspath = ($dv > 0) ? str_pad($dv, 3, '0', STR_PAD_LEFT) . '/' : '';
            $rootpath = env('PATH_DOCUMENTOS_IMPERIUM') . '/' . $doc->doc_path . $verspath;
            
            $f_url = NULL;
            if (is_dir($rootpath)) {
              $fn = NULL;
              $pattern = $doc->preffix . '*.pdf';
              $files = glob( $rootpath . $pattern );
              foreach ($files as $f => $file) {
                $extn = strtolower(pathinfo($file, PATHINFO_EXTENSION));
                if ($extn == 'pdf') {
                  $fn = basename($file);
                }
              }
              if ($fn != NULL) {
                $f_url = env('RUTA_DOCUMENTOS_IMPERIUM') . '/' . $doc->doc_path . $verspath . $fn;
              }
            }

            $a_url[] = $f_url;
    
          }
        }
      }
    }
    return $a_url;
  }
  // FUNCION GENERICA ENCARGADA DE RECIBIR EL CODIGO DEL PAIS Y DEVOLVER UNA LISTA CON LOS TAX ID QUE TIENE EL PAIS
  public static function identificadoresPais($cc,$tipo_persona='T'){
    // $ident = DB::select('EXEC dbo.backend_obtener_identificadores_pais '.$cc);
    $ident = SQLConnection::backendStoreProcedure('backend_obtener_identificadores_pais',array($cc,$tipo_persona));
    return $ident;
  }
  // FUNCION GENERICA ENCARGADA DE DEVOLVER LOS PAISES Y SUS CORRESPONDIENTES CODIGOS
  public static function contrapartesPaises(){
    $country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
    return $country;
  }

  /* 
    Funcion para acomodar los resultados de la DB, solo se esta usando para la 
    API Govcheck.
    REQUIERE: $obj = (Objeto y/o resultado DB)
  */
  public static function conversorApisGovcheck($obj) {
    
    $arreglo = array();

    for ($i=0; $i<count($obj); $i++) {
      $n = new StdClass();
      //-- dni ingresado
      $n->National_id = $obj[$i]->dni;
      
      //-- nombre, apellido
      $n->Full_name = $obj[$i]->nombre_persona;
      $n->Name = $obj[$i]->nombres;
      $n->Lastname = $obj[$i]->apellidos;

      //-- fecha nac
      $n->DBO = $obj[$i]->fecha_nacimiento;

      //-- cuit/cuil
      $n->Tax_id_type = $obj[$i]->tipo_clave;
      $n->Tax_id_number = $obj[$i]->identificacion;

      //-- fecha defuncion
      $n->DOD = $obj[$i]->fecha_defuncion;

      //-- telefonos
      $tel = explode('/', $obj[$i]->telefonos);
      $n->Phone_number = (count($tel) == 1 && strlen($tel[0]) == 0) ? null : $tel;
      
      //-- mail
      $n->Email = $obj[$i]->email;

      //-- codigo actividad y nombre
      $n->Activity_code = $obj[$i]->cod_actividad;
      $n->Activity_description = $obj[$i]->nombre_actividad;

      //-- domicilio
      $n->Address = self::limpiaderDomicilioExtend($obj[$i]->domicilio);

      $arreglo[$i] = $n;
    }
    
    //return $n;
    return $arreglo;
  }


  public static function conversorApisGovcheckPlus($res_afip,$res_renaper) {
    $nuevaRespuesta = new StdClass();

    $nuevaRespuesta->id_main_issue = $res_renaper->ID_TRAMITE_PRINCIPAL;
    $nuevaRespuesta->id_reprint = $res_renaper->ID_TRAMITE_TARJETA_REIMPRESA;
    $nuevaRespuesta->copy = $res_renaper->EJEMPLAR;
    $nuevaRespuesta->issue_date = self::invertirFecha($res_renaper->EMISION);
    $nuevaRespuesta->expiry_date = self::invertirFecha($res_renaper->VENCIMIENTO);
    $nuevaRespuesta->lastname = strtoupper($res_renaper->apellido);
    $nuevaRespuesta->names = strtoupper($res_renaper->nombres);
    $nuevaRespuesta->DOB = self::invertirFecha($res_renaper->fechaNacimiento);
    //$nuevaRespuesta->cuil = $res_renaper->cuil;
    $nuevaRespuesta->street_name = strtoupper($res_renaper->calle);
    $nuevaRespuesta->street_number = $res_renaper->numero;
    $nuevaRespuesta->floor = strtoupper($res_renaper->piso);
    $nuevaRespuesta->apartment = strtoupper($res_renaper->departamento);
    $nuevaRespuesta->zip = strtoupper($res_renaper->cpostal);
    $nuevaRespuesta->neighborhood = strtoupper($res_renaper->barrio);
    $nuevaRespuesta->monobloc = strtoupper($res_renaper->monoblock);
    $nuevaRespuesta->city = strtoupper($res_renaper->ciudad);
    $nuevaRespuesta->town = strtoupper($res_renaper->municipio);
    $nuevaRespuesta->state = strtoupper($res_renaper->provincia);
    $nuevaRespuesta->country = strtoupper($res_renaper->pais);
    $nuevaRespuesta->death_notice = $res_renaper->mensaf;
    $fclat = self::invertirFecha($res_renaper->fechaf);
    $nuevaRespuesta->DOD = ($fclat == '') ? $res_renaper->fechaf : $fclat;
    //$nuevaRespuesta->DOD = self::invertirFecha($res_renaper->fechaf);
    $nuevaRespuesta->citizen_id = $res_renaper->idciudadano;
    $nuevaRespuesta->nationality = strtoupper($res_renaper->nacionalidad);
    $nuevaRespuesta->place_of_birth = strtoupper($res_renaper->lugar_nacimiento);
    $nuevaRespuesta->taxid = $res_renaper->identificacion;
    $nuevaRespuesta->gender = strtoupper($res_renaper->sexo);
    $nuevaRespuesta->national_id = $res_renaper->dni;
  
    // res_afip
    //-- cuit/cuil
    $nuevaRespuesta->Tax_id_type = $res_afip->tipo_clave;
    $nuevaRespuesta->Tax_id_number = $res_afip->identificacion;

    //-- telefonos
    $tel = explode('/', $res_afip->telefonos);
    $nuevaRespuesta->Phone_number = (count($tel) == 1 && strlen($tel[0]) == 0) ? null : $tel;
    
    //-- mail
    $nuevaRespuesta->Email = $res_afip->email;

    //-- codigo actividad y nombre
    $nuevaRespuesta->Activity_code = $res_afip->cod_actividad;
    $nuevaRespuesta->Activity_description = $res_afip->nombre_actividad;

    //-- domicilio
    $nuevaRespuesta->Address = self::limpiaderDomicilioExtend($res_afip->domicilio);

    return $nuevaRespuesta;

  }


  //--------------------------------------------------------  SISTEMAS DE NOTIFICACION POR MAIL APIS  ---------------------------------------------------------------//
  //Método para el envio de emails errores
  public static function enviarMail_errores_api($content=''){
    Mailer::from("no-reply@fidelitas.com.ar");
    Mailer::to(env('DESTINATARIO'));
    //Mailer::bcc(env('COPIA'));
    Mailer::text($content,"API STATUS");
    return Mailer::send();
  }
  //--------------------------------------------------------  FIN SISTEMAS DE NOTIFICACION POR MAIL  ----------------------------------------------------------------//

  /* 
    Funcion Booleana que retorn False si el parametro ingresado no contine solo
    numaros y es menor a longitud 7 y/o mayor a longitud 8.
  */
  public static function noEsPosibleDni($dni) {
    return (preg_match('/^[0-9]{7,8}$/', $dni) != 1);
  }

  /*
    Funcion para gestionar las notificaciones y codigo de error para
    Govcheck
  */
  public static function gestorNotificacionGovcheck($obj) {
    if(count($obj) > 1) {
      return array('code'=>'201', 'message'=>'Documento duplicado.');
    } else if(count($obj) == 0 || is_null($obj)) {
      return array('code'=>'300', 'message'=>'Sin datos.');
    } else {
      return array('code'=>'100', 'message'=>'Ok.');
    }
  }

  /* 
    Funcion para devolver la diferencia en meses de una fecha pasada como parametro
    y la actual que genera la funcion.
    REQUIERE: $fecha = '2022-04-12 00:30:00'
  */
  public static function cantidadMeses($fecha) {
    $hoy = new DateTime("now");
    $fecha = date_create($fecha);
    $diferencia = date_diff($fecha, $hoy);
    return $diferencia->m;
  }

  public static function conversorApisExtended($obj, $res_renaper, $res_ws) {
    $n = new StdClass();
    $n2 = new StdClass();
    $n3 = new StdClass();
    //-- dni ingresado
    $n->National_id = $obj[0]->dni;
    
    //-- nombre, apellido
    $n->Full_name = $obj[0]->nombre_persona;
    $n->Name = $obj[0]->nombres;
    $n->Lastname = $obj[0]->apellidos;

    //-- fecha nac
    $n->DBO = $obj[0]->fecha_nacimiento;

    //-- cuit/cuil
    $n->Tax_id_type = $obj[0]->tipo_clave;
    $n->Tax_id_number = $obj[0]->identificacion;

    //-- fecha defuncion
    $n->DOD = $obj[0]->fecha_defuncion;

    //-- telefonos
    $tel = explode('/', $obj[0]->telefonos);
    $n->Phone_number = (count($tel) == 1 && strlen($tel[0]) == 0) ? null : $tel;
    
    //-- mail
    $emails = explode('/', $obj[0]->email);
    //$n->Email = $obj[0]->email;
    $n->Email = (count($emails) == 1 && strlen($emails[0]) == 0) ? null : $emails;

    //-- codigo actividad y nombre
    $n->Activity_code = $obj[0]->cod_actividad;
    $n->Activity_description = $obj[0]->nombre_actividad;

    //-- domicilio
    $n->Address = self::limpiaderDomicilioExtend($obj[0]->domicilio);
    
    //-- nacionalidad
    $n3->Nationality = $obj[0]->nacionalidad;

    //-- genero
    $n3->Gender = (is_null($res_renaper)) ? $obj[0]->genero : $res_renaper->sexo;

    //-- codigos del dni
    if(is_null($res_renaper)) {
      $n3->Issue_date = $obj[0]->fecha_emision;
      $n3->Expiry_date = $obj[0]->fecha_vencimiento;
      $n3->Internal_id = $obj[0]->nro_tramite;
      $n3->Copy = $obj[0]->version_dni;
    } else {
      $fe = explode('/', $res_renaper->EMISION);
      $fe = $fe[2].'-'.$fe[1].'-'.$fe[0];
      $n3->Issue_date = $fe;

      $fv = explode('/', $res_renaper->VENCIMIENTO);
      $fv = $fv[2].'-'.$fv[1].'-'.$fv[0];
      $n3->Expiry_date = $fv;
      
      $n3->Internal_id = $res_renaper->ID_TRAMITE_PRINCIPAL;
      $n3->Copy = $res_renaper->EJEMPLAR;
    }

    $n3->Fidecheck = $res_ws;

    return array('Govcheck'=>$n,'Extended'=>$n3);
  }

  /*
  ESTA ES UNA FUNCION QUE SE ARMO PARA RESOLVER UN PROBLEMA QUE EXISTIA CON ESA RAZON SOCIAL,
  SE MAREA AL MOMENTO DE BUSCAR LEGALES
  */
  public static function parche_cla($rs) {
    if(self::rs_conflictiva($rs)) {
      $rs = explode(' ', $rs);
      foreach ($rs as $key) {
        if(strlen($key) >= 3) {
          return $key;
        }
      }
      return "";
    }
    return $rs;
  }

  //-- DENTRO DEL ARRAY 'rs_problematicas' SE DEBEN AGREGAR LAS QUE GENEREN ALGUN INCONVENIENTES PARA ARMAR LA SECCION JUDICIALES, LEGALES, ETC.
  static function rs_conflictiva($rs) {
    $rs_problematicas = array('"RIVA S.A.I.I.C.F.A - ELEPRINT - TECMA - INSA U. T. E."','"C & C INFORMATICOS"');

    foreach ($rs_problematicas as $key) {
      if($key == $rs) {
        return true;
      }
    }
    return false;
  }
  
  //Método para el envio de emails errores
  public static function enviarMail_errores($to='',$bcc='',$content='',$subject="Fidelitas"){
    Mailer::from("no-reply@fidelitas.com.ar");
    Mailer::to($to);
    Mailer::bcc($bcc);
    Mailer::text($content,$subject);
    return Mailer::send();
  }

  /*
    Funcion encargada de tomar las direcciones devueltas por la DB en un solo String
    la parsea y la clasifica en orden (E electoral = indice 0, L legal = indice = 1, F fiscal = indice 2)
    colocandolos todos dentro de un array.
    Luego retorna el primero que no encuentre null
    REQUIERE: $domicilio = String > 0
  */
  public static function limpiaderDomicilioExtend($domicilios) {
    $domicilios = explode('/', $domicilios);
    $res = array();
    
    if(count($domicilios) == 1) {
      return explode('|', $domicilios[0])[0];
    }

    for ($i=0; $i<count($domicilios); $i++) {
      $t = explode('|', $domicilios[$i]);
      if($t[1] == 'E') {
        $res[0] = $t[0];
      } else if($t[1] == 'L') {
        $res[1] = $t[0];
      } else if($t[1] == 'F') {
        $res[2] = $t[0];
      }
    }
    //echo(var_dump($res)); die();
    for ($i=0; $i<count($res); $i++) {
      if(isset($res[$i]) && !is_null($res[$i])) {
        return $res[$i];
      }
    }
    return null;
  }

  //-- $n1 == Nombre pasado como parametro y $n2 es el nombre que retorna ws.
  public static function esElMismoNombre_BackUo($n1, $n2) {
    $n1 = explode(' ', trim(strtoupper($n1)));
    $n2 = explode(' ', trim(strtoupper($n2)));
    
    if(count($n1) <= count($n2)) {
      $cont = 0;
      foreach ($n1 as $e) {
        foreach($n2 as $a) {
          if($e == $a) {
            $cont++;
            break;
          }
        }
      }
      //return $cont == count($n1);
      if($cont > 1 and $cont <= count($n1)) {
        return true;
      }
      return false;
    }
    return false;
  }

  //-- $n1 == Nombre pasado como parametro y $n2 es el nombre que retorna ws.
  public static function esElMismoNombreWs($n1, $n2) {
    $n1 = explode(' ', trim(strtoupper(self::limpiarCaracteresEspeciales($n1))));
    $n2 = explode(' ', trim(strtoupper(self::limpiarCaracteresEspeciales($n2))));
    $cantidad = 0;

    foreach ($n1 as $e) {
      foreach ($n2 as $i) {
        if($e == $i) {
          $cantidad ++;
          break;
        }
      }
    }

    return $cantidad == count($n1);
  }



//-----------------------------  SECCION PARA API SOLO RENAPER  -----------------------------------------------------------------------//
  public static function conversorApisSoloRenaper($obj, $res_renaper) {
    $n3 = new StdClass();
    //-- nacionalidad
    $n3->Nationality = $obj[0]->nacionalidad;

    //-- genero
    $n3->Gender = (is_null($res_renaper)) ? $obj[0]->genero : $res_renaper->sexo;

    //-- codigos del dni
    if(is_null($res_renaper)) {
      $n3->Issue_date = $obj[0]->fecha_emision;
      $n3->Expiry_date = $obj[0]->fecha_vencimiento;
      $n3->Internal_id = $obj[0]->nro_tramite;
      $n3->Copy = $obj[0]->version_dni;
    } else {
      $fe = explode('/', $res_renaper->EMISION);
      $fe = $fe[2].'-'.$fe[1].'-'.$fe[0];
      $n3->Issue_date = $fe;

      $fv = explode('/', $res_renaper->VENCIMIENTO);
      $fv = $fv[2].'-'.$fv[1].'-'.$fv[0];
      $n3->Expiry_date = $fv;
      
      $n3->Internal_id = $res_renaper->ID_TRAMITE_PRINCIPAL;
      $n3->Copy = $res_renaper->EJEMPLAR;
    }

    return array('Renaper'=>$n3);
  }

  public static function manejadorFechaEmision($fechaRecivida) {
    if(preg_match('/^[0-9]{1,4}[\/]{1}[0-9]{1,2}[\/]{1}[0-9]{1,4}$/', $fechaRecivida) == 1) {
      $fechaRecivida = explode('/', $fechaRecivida);
    } else if(preg_match('/^[0-9]{1,4}[-]{1}[0-9]{1,2}[-]{1}[0-9]{1,4}$/', $fechaRecivida) == 1) {
      $fechaRecivida = explode('-', $fechaRecivida);
    } else {
      $fechaRecivida = '';
    }
    return self::normalizadorFechaSoloRenaper($fechaRecivida);
  }

  static function normalizadorFechaSoloRenaper($fechaRecivida) {
    try {
      $nuevaFecha = '';
      if(strlen($fechaRecivida[0]) == 4) {
        $anio = $fechaRecivida[0];
        $mes = (strlen($fechaRecivida[1]) == 2) ? $fechaRecivida[1] : '0'.$fechaRecivida[1];
        $dia = (strlen($fechaRecivida[2]) == 2) ? $fechaRecivida[2] : '0'.$fechaRecivida[2];
        $nuevaFecha = $dia.'/'.$mes.'/'.$anio;
      } else {
        $anio = $fechaRecivida[2];
        $mes = (strlen($fechaRecivida[1]) == 2) ? $fechaRecivida[1] : '0'.$fechaRecivida[1];
        $dia = (strlen($fechaRecivida[0]) == 2) ? $fechaRecivida[0] : '0'.$fechaRecivida[0];
        $nuevaFecha = $dia.'/'.$mes.'/'.$anio;
      }
      if(preg_match('/^[0-9]{2}[\/]{1}[0-9]{2}[\/]{1}[0-9]{4}$/', $nuevaFecha) == 1) {
        return $nuevaFecha;
      }
      return '';
    } catch (\Throwable $th) {
      return '';
    }
  }

  static function invertirFecha($fecha) {
    if(preg_match('/^[0-9]{2}[\/]{1}[0-9]{2}[\/]{1}[0-9]{4}$/', $fecha) == 1) {
      $fecha = explode('/', $fecha);
      return $fecha[2].'-'.$fecha[1].'-'.$fecha[0];
    }
    return '';
  }

  static function normalizadorGenero($generoRecibido) {
    $generoRecibido = strtoupper($generoRecibido);
    if(preg_match('/^[A-Z]{1}$/', $generoRecibido) == 1) {
      return $generoRecibido;
    }
    return '';
  }

  static function formatoRespuestaRenaper($res_renaper, $dni, $fechaParaValidar, $generoParaValidar, $fecha_emision_recivida, $fecha_expiracion_emitida,$copia, $idMainIssue) {

    $nuevaRespuesta = new StdClass();

    $nuevaRespuesta->id_main_issue = ($res_renaper->ID_TRAMITE_PRINCIPAL == $idMainIssue) ? 'TRUE' : 'FALSE';
    $nuevaRespuesta->id_reprint = "";
    $nuevaRespuesta->copy = ($res_renaper->EJEMPLAR == $copia) ? 'TRUE' : 'FALSE';
    $nuevaRespuesta->issue_date = (self::invertirFecha($res_renaper->EMISION) == $fecha_emision_recivida) ? 'TRUE' : 'FALSE';
    $nuevaRespuesta->expiry_date = (self::invertirFecha($res_renaper->VENCIMIENTO) == $fecha_expiracion_emitida ) ? 'TRUE' : 'FALSE';
    $nuevaRespuesta->lastname = strtoupper($res_renaper->apellido);
    $nuevaRespuesta->names = strtoupper($res_renaper->nombres);
    $nuevaRespuesta->DOB = self::invertirFecha($res_renaper->fechaNacimiento);
    //$nuevaRespuesta->cuil = $res_renaper->cuil;
    $nuevaRespuesta->street_name = strtoupper($res_renaper->calle);
    $nuevaRespuesta->street_number = $res_renaper->numero;
    $nuevaRespuesta->floor = strtoupper($res_renaper->piso);
    $nuevaRespuesta->apartment = strtoupper($res_renaper->departamento);
    $nuevaRespuesta->zip = strtoupper($res_renaper->cpostal);
    $nuevaRespuesta->neighborhood = "";
    $nuevaRespuesta->monobloc = "";
    $nuevaRespuesta->city = strtoupper($res_renaper->ciudad);
    $nuevaRespuesta->town = strtoupper($res_renaper->municipio);
    $nuevaRespuesta->state = strtoupper($res_renaper->provincia);
    $nuevaRespuesta->country = strtoupper($res_renaper->pais);
    $nuevaRespuesta->death_notice = $res_renaper->mensaf;
    $fclat = self::invertirFecha($res_renaper->fechaf);
    $nuevaRespuesta->DOD = ($fclat == '') ? $res_renaper->fechaf : $fclat;
    //$nuevaRespuesta->DOD = self::invertirFecha($res_renaper->fechaf);
    $nuevaRespuesta->citizen_id = "";
    $nuevaRespuesta->nationality = strtoupper($res_renaper->nacionalidad);
    $nuevaRespuesta->place_of_birth = "";
    $nuevaRespuesta->taxid = $res_renaper->identificacion;
    $nuevaRespuesta->gender = strtoupper($res_renaper->sexo);
    $nuevaRespuesta->national_id = $res_renaper->dni;
    $nuevaRespuesta->national_id_validation = ($res_renaper->dni == $dni) ? 'TRUE' : 'FALSE';
    $nuevaRespuesta->issue_date_validation = ($res_renaper->EMISION == $fechaParaValidar) ? 'TRUE' : 'FALSE';
    $nuevaRespuesta->gender_validation = ($res_renaper->sexo == $generoParaValidar) ? 'TRUE' : 'FALSE';

    return $nuevaRespuesta;
  }



  
  //--  FUNCION HEREDADA PARA LIMPIAR CARACTERES  'EN USO'  --//
  static function limpiarCaracteresEspeciales($string ){
    $string = htmlentities($string);
    $string = preg_replace('/\&(.)[^;]*;/', '\\1', $string);
    $textoLimpio = preg_replace('([^A-Za-z0-9 .,\(\)áéíóúÁÉÍÓÚñÑ\-\:])', '', $string);
    return $textoLimpio;
}


 /*
    Fucion que retorn M o F segun un cuit.
    Valida por medio de una expresion regular en base al siguiente criterio
    Si comienza con 20 o 23, retorna M
    Si comienza con 27 o 24, retorna F
    REQUIERE: $cuit = (numerico) == 11 digitos
  */
  public static function posibleGenero($cuit) {
    if((preg_match('/^[2]{1}[0|3]/', $cuit) == 1)) {
      return 'M';
    }
    return 'F';
  }

  /**
   * Funcion que formatea las fechas
   * @access public
   * @param string|\DateTime|null la fecha recibida
   * @param null|string en que formato sera devuelta , si es null devuelve el objeto
   * @return string|\DateTime
   */
  public static function obtenerFechaLocal($fecha=null,$formato=null){
    $resultado = null;
    //
    if ( !is_null($fecha) ){
      // si no es datetime object , lo transforma
      if ( !is_object($fecha) ){
        $fecha = new \DateTime($fecha);
      }
      //
      $timezone = new \DateTimeZone(Session::get('usuario')->timezone);
      //
      $timestamp = $fecha->format('U');
      $fecha->setTimeZone($timezone);
      $fecha->setTimestamp($timestamp);
      //
      if ( !is_null($formato) ){
        $resultado = $fecha->format($formato);
      } else {
        $resultado = $fecha;
      }
    }
    //
    return $resultado;
  }

  /**
	 * Funcion que valida que las fechas
	 * no hayan en caido en tiempo de feriado
	 * si caen en feriado se modifican
	 * @access public
	 * @static
	 * @param \DateTime fecha de inicio informe
	 * @param \DateTime fecha comprometida informe
	 * @return void modifica el contenido de los objetos sin tener que devolverlos
	 */
	public static function omitirFeriadosFinSem($fecha_inicio,$fecha_comprometida){
		//--Modificado 12/05/2023--
		$intervalo_dia = new \DateInterval('P1D'); // intervalo de un dia
		$intervalo_dos_dias = new \DateInterval('P2D'); // intervalo de dos dias
		$feriados = SQLConnection::backendStoreProcedure('LN_feriados',array('LIST_PAIS', 'AR', NULL, NULL));
		// omitir fines de semana
		$dia_inicio = $fecha_inicio->format('w');
		$dia_comprometido = $fecha_comprometida->format('w');
		if ( $dia_inicio == '6'  ){
		  	$fecha->add($intervalo_dos_dias);
				$fecha_comprometida->add($intervalo_dos_dias);
		} elseif ( $dia_inicio == '0' ){
			  $fecha->add($intervalo_dia);
				$fecha_comprometida->add($intervalo_dia);
			}
		//
		if ( $dia_comprometido == '6' ){
			 $fecha_comprometida->add($intervalo_dos_dias);
		} elseif ( $dia_comprometido == '0' ){
			 $fecha_comprometida->add($intervalo_dia);
		}
		// omitir feriados
		foreach( $feriados as $dia_feriado ){
			$obj_dia_feriado = new \DateTime($dia_feriado->fecha_feriado);
			if ( $obj_dia_feriado && $obj_dia_feriado == $fecha_inicio ){
				/*
					si fecha de inicio es feriado , tambien se modifica
					la fecha comprometida para respetar la duracion
				*/
				$fecha->add($intervalo_dia);
				$fecha_comprometida->add($intervalo_dia);
			}
			if ( $obj_dia_feriado && $obj_dia_feriado == $fecha_comprometida ){
				$fecha_comprometida->add($intervalo_dia);
			}
		}
	}
}
