<?php

// Formatando numeros vindo do IMPUT
function moeda($get_valor) {

  $get_valor = preg_replace("/[^0-9.,-]/","", $get_valor);

  $source = array('.', ',');
  $replace = array('', '.');
  $fnum = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto

  $fnum = str_replace(" ", "", $fnum);
  return $fnum; //retorna o valor formatado para gravar no banco
}

// Formatando numeros vindo do IMPUT - sem negativo
function moedapositiva($get_valor) {
  $source = array('.', ',');
  $replace = array('', '.');
  $fnum = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto
  $fnum = str_replace(" ", "", $fnum);
  $fnum = str_replace("-", "", $fnum);
  return $fnum; //retorna o valor formatado para gravar no banco
}

// Formata Style de valores negativos e positivos
function valorStyle($valor, $tipo=null, $cifrao=null, $sinal=0, $color_pos=null, $color_neg=null){

  $valor=$valor==""?0:$valor;

  $cor_pos='class="text-info"';
  $cor_neg='class="text-danger"';
  if($color_pos!=null){$cor_pos='style="color:'.$color_pos.'"';}
  if($color_neg!=null){$cor_neg='style="color:'.$color_neg.'"';}
  if($color_pos=="null"){$cor_pos='';} if($color_neg=="null"){$cor_neg='';}

  $valor_novo=$valor;
  // Retira Sinal Negativo
  if($sinal==1 && $valor<0){ $valor_novo=$valor_novo*-1; }
  // Formata tipo do valor
  if($tipo=="moeda"){ $valor_novo = echomoeda($valor_novo); }
  if($tipo=="int"){ $valor_novo = echoint($valor_novo); }
  // Formata Cifrao
  if($cifrao!=null){ $valor_novo=$cifrao." ".$valor_novo; }
  // Recoloca Sinal Negativo
  if($sinal==1 && $valor<0){ $valor_novo='-'.$valor_novo; }
  $r=$valor_novo;
  // Formata Stylo
  if($sinal!=2 && $valor<0){ $r='<span '.$cor_neg.'>'.$valor_novo.'</span>'; }
  if($sinal!=2 && $valor>0){ $r='<span '.$cor_pos.'>'.$valor_novo.'</span>'; }
  return $r;
}

// Formatação para exibir valores monetários
function echoMonet($valor, $options){
  $rs  = $options['moeda_simb_monet'].' ';
  $rs .= number_format($valor, $options['moeda_qtd_decimal'], $options['moeda_simb_decimal'], $options['moeda_simb_milhar']);
  return $rs;
}

function echoPre($conteudo){
  echo '<div style="margin-left: 180px"><pre>';
  print_r($conteudo);
  echo '</pre></div>';
}

// Formatando numeros vindo do IMPUT
function fichas($get_valor) {
  $source = array('.', ',');
  $replace = array('', '.');
  $fnum = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto
  $fnum = str_replace(" ", "", $fnum);
  $fnum = str_replace("-", "", $fnum);
  $fnum = explode('.', $fnum);
  $fnum = $fnum[0];
  return $fnum; //retorna o valor formatado para gravar no banco
}

// Formatando numero com qtd de digitos
function numerodigitos($numero,$digitos) {
  return str_pad((int) $numero,$digitos,"0",STR_PAD_LEFT);
}

function meses($numerodomes) {
  if($numerodomes == "01"){$nome_mes = "Janeiro";}
  if($numerodomes == "02"){$nome_mes = "Fevereiro";}
  if($numerodomes == "03"){$nome_mes = "Março";}
  if($numerodomes == "04"){$nome_mes = "Abril";}
  if($numerodomes == "05"){$nome_mes = "Maio";}
  if($numerodomes == "06"){$nome_mes = "Junho";}
  if($numerodomes == "07"){$nome_mes = "Julho";}
  if($numerodomes == "08"){$nome_mes = "Agosto";}
  if($numerodomes == "09"){$nome_mes = "Setembro";}
  if($numerodomes == "10"){$nome_mes = "Outubro";}
  if($numerodomes == "11"){$nome_mes = "Novembro";}
  if($numerodomes == "12"){$nome_mes = "Dezembro";}
  return $nome_mes;
}

// uf em nome
function ufEstados($uf){
  $uf = strtoupper($uf);
  if($uf=="AC"){$ufnome="Acre";}
  if($uf=="AL"){$ufnome="Alagoas";}
  if($uf=="AP"){$ufnome="Amapá";}
  if($uf=="AM"){$ufnome="Amazonas";}
  if($uf=="BA"){$ufnome="Bahia";}
  if($uf=="CE"){$ufnome="Ceará";}
  if($uf=="DF"){$ufnome="Distrito Federal";}
  if($uf=="ES"){$ufnome="Espírito Santo";}
  if($uf=="GO"){$ufnome="Goiás";}
  if($uf=="MA"){$ufnome="Maranhão";}
  if($uf=="MT"){$ufnome="Mato Grosso";}
  if($uf=="MS"){$ufnome="Mato Grosso do Sul";}
  if($uf=="MG"){$ufnome="Minas Gerais";}
  if($uf=="PA"){$ufnome="Pará";}
  if($uf=="PB"){$ufnome="Paraíba";}
  if($uf=="PR"){$ufnome="Paraná";}
  if($uf=="PE"){$ufnome="Pernambuco";}
  if($uf=="PI"){$ufnome="Piauí";}
  if($uf=="RJ"){$ufnome="Rio de Janeiro";}
  if($uf=="RN"){$ufnome="Rio Grande do Norte";}
  if($uf=="RS"){$ufnome="Rio Grande do Sul";}
  if($uf=="RO"){$ufnome="Rondônia";}
  if($uf=="RR"){$ufnome="Roraima";}
  if($uf=="SC"){$ufnome="Santa Catarina";}
  if($uf=="SP"){$ufnome="São Paulo";}
  if($uf=="SE"){$ufnome="Sergipe";}
  if($uf=="TO"){$ufnome="Tocantins";}
  if(!isset($ufnome)){$ufnome="";}
  return $ufnome;
}

function validarUF($uf){
  return in_array(strtoupper($uf), ["AC","AL","AP","AM","BA","CE","DF","ES","GO","MA","MT","MS","MG","PA","PB","PR","PE","PI","RJ","RN","RS","RO","RR","SC","SP","SE","TO"]);
}



// Formatando nomes para importação (tirando ' ")
function limparnome($get_valor) {
  $fnum = str_replace('"', '', $get_valor);
  return $fnum;
}

// Formatando nomes para importação (tirando ' ")
function limparvirgula($get_valor) {
  $fnum = str_replace(',', '', $get_valor);
  return $fnum;
}

// Formatando DECIMAIS vindo do BD
function echomoeda($get_valor, $decimal=2, $simb_decimal=',', $simb_milhar='.') {
  $get_valor = $get_valor=="" ? 0 : $get_valor;

  $echomoeda = number_format($get_valor, $decimal, $simb_decimal, $simb_milhar);
  return $echomoeda;
}

// Formatando INTEIROS vindo do BD
function echoint($get_valor) {
  $echoint = number_format($get_valor,0,"",".");
  return $echoint; //retorna o valor formatado para gravar no banco
}

// Formatando Horários vindo do BD
function echohora($get_valor) {
  $echohora = strtotime( $get_valor );
  $echohora = date( 'H:i', $echohora );
  return $echohora; //retorna o valor formatado para gravar no banco
}

// Formatando min em horário no formato 00h 00min
function echomhr($min){
  if($min < 59){
    return $min."min";
  }else{
    $hr = floor($min / 60);
    $min = ($min - ($hr * 60));
    return $hr.'hr '.$min.'min';
  }
}

// Calculando Diferença de Horas
function difhoras($hIni, $hFinal){
  // Separa a hora dos minutos
  $hIni = explode(':', $hIni);
  $hFinal = explode(':', $hFinal);
  // Converte a hora e minuto para segundos
  $hIni = (60 * 60 * $hIni[0]) + (60 * $hIni[1]);
  $hFinal = (60 * 60 * $hFinal[0]) + (60 * $hFinal[1]);
  // Verifica se a hora final é maior que a inicial e Faz os calculos
  if(!($hIni < $hFinal)) {
    $difDeHora = 86400 - $hIni + $hFinal;
  }else{
    $difDeHora = $hFinal - $hIni;
  }
  //Converte os segundos para Hora e Minuto
  $tempo = $difDeHora / (60 * 60);
  $tempo = explode('.', $tempo); // Aqui divide o restante da hora, pois se não for inteiro, retornará um decimal, o minuto, será o valor depois do ponto.
  $hora = $tempo[0];
  @$minutos = (float) (0) . '.' . $tempo[1]; // Aqui forçamos a conversão para float, para não ter erro.
  $minutos = $minutos * 60; // Aqui multiplicamos o valor que sobra que é menor que 1, por 60, assim ele retornará o minuto corretamente, entre 0 á 59 minutos.
  $minutos = explode('.', $minutos); // Aqui damos explode para retornar somente o valor inteiro do minuto. O que sobra será os segundos
  $minutos = $minutos[0];
  // Formatando Hora
  $dif_horas = $hora.':'.$minutos;
  $dif_horas = echohora($dif_horas);
  return $dif_horas;
}


// Transformando Horas e Minutos em Segundos
function horas_minutos($hIni)
{
  $hIni = explode(':', $hIni);
  $hIni = (60 * 60 * $hIni[0]) + (60 * $hIni[1]);
  return $hIni;
}

// Transformando Segundos em Horas e Minutos
function minutos_horas($hIni)
{
  $tempo = $hIni / (60*60);
  $tempo = explode('.', $tempo);
  $hora = $tempo[0];
  if(isset($tempo[1])) {
    $minutos = (float)(0) . '.' . $tempo[1];
  }else{$minutos = (float)(0);}
  $minutos = $minutos * 60;
  $minutos = explode('.', $minutos);
  $minutos = $minutos[0];

  if($minutos < 10){$minutos = "0".$minutos;}
  if($hora < 10){$hora = "0".$hora;}

  $hora_minutos = $hora.':'.$minutos;
  return $hora_minutos;
}


// Transformar data para BD
function databd($data_dia){

  // Separa dia/mes/ano
  $data = explode('/', $data_dia);

  $dia = $data[0];
  $mes = $data[1];
  $ano = $data[2];

  $data_bd = $ano."-".$mes."-".$dia;

  return $data_bd;
}

// Transformar data do BD
function echodata($data_dia){

  // Separa dia/mes/ano
  $data = explode('-', $data_dia);

  $dia = $data[2];
  $mes = $data[1];
  $ano = $data[0];

  $data_bd = $dia."/".$mes."/".$ano;

  return $data_bd;
}

// randomico sem repetir
function rand_sem_num_repetido($qtd_numeros,$limite_min,$limite_max){
  for($i=0;$i<=$qtd_numeros;$i++){
    $aux=rand($limite_min,$limite_max);

    if($i>=1){
      while(in_array($aux,$index)){
        $aux=rand($limite_min,$limite_max);
      }
    }
    $index[$i]=$aux;
  }
  return $index;
}

// Formatando nome imput (primeiras em maiusculas)
function ajustarnome($nomejogador) {
  $nomeFinal = ucwords(strtolower(htmlentities($nomejogador)));
  return $nomeFinal;
}

function ajustarImg($imagem, $name, $largura, $pasta, $ext){
  if($ext == 'image/jpeg'){
    $img = imagecreatefromjpeg($imagem['tmp_name']);
  }else{
    $img = imagecreatefrompng($imagem['tmp_name']);
  }
  $x   = imagesx($img);
  $y   = imagesy($img);
  if($largura == "0"){
    $largura = $x;
    $altura = $y;
  }else{
    $altura = ($largura * $y)/$x;
  }

  $nova = imagecreatetruecolor($largura, $altura);
  imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
  if($ext == 'image/jpeg'){
    imagejpeg($nova, "$pasta/$name");
  }else{
    imagepng($nova, "$pasta/$name");
  }
  imagedestroy($img);
  imagedestroy($nova);
  return $altura."/".$largura;
}

function gerarSenha($tamanho = 10, $maiusculas = true, $numeros = true)
{
  $lmin = 'abcdefghijklmnopqrstuvwxyz';
  $lmai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $num = '1234567890';
  $retorno = '';
  $caracteres = '';
  $caracteres .= $lmin;
  if ($maiusculas) $caracteres .= $lmai;
  if ($numeros) $caracteres .= $num;
  $len = strlen($caracteres);
  for ($n = 1; $n <= $tamanho; $n++) {
    $rand = mt_rand(1, $len);
    $retorno .= $caracteres[$rand-1];
  }
  return $retorno;
}


function get_post_action($name){
  $params = func_get_args();
  foreach($params as $name){
    if(isset($_POST[$name])){
      return $name;}
  }
}

// Transformar Rows de Pagamentos em Colunas
function pgtosCols($dados, $qtd_pgtos, $col_id, $k_v, $coluna_group="id"){
  $novos_dados = array();
  $id=0;
  foreach($dados as $l){
    if($l[$coluna_group]!=$id){ $id = $l[$coluna_group]; $novos_dados[$l[$coluna_group]]=$l; }
    foreach($k_v as $k => $v){
      $novos_dados[$l[$coluna_group]][$l[$col_id].$k] = $l[$v];
    }
  }
  return $novos_dados;
}

// Listando IDS para Filtros
function listarIDs($lista, $coluna=null, $aspas=0){
  if($aspas==1){
    $ids='"'; $sep = '","';   }else{
    $ids=''; $sep = ',';      }
  foreach($lista as $l){
    if($coluna==null){
      $ids.=$l!=""?$l.$sep:"";
    }else{
      $ids.=$l[$coluna]!=""?$l[$coluna].$sep:"";
    }
  }
  if($aspas==1){
    $ids = substr($ids, 0, -2);  }else{
    $ids = substr($ids, 0, -1);  }
  return $ids;
}

// Criar Array com Indice Específico
function arrayIndice($dados, $coluna_index='id'){
  $novos_dados = array();
  foreach($dados as $l){
    if($l[$coluna_index]!=""){
      $novos_dados[$l[$coluna_index]] = $l;
    }
  }
  return $novos_dados;
}

function zeroEsq($str, $qtd){
  return str_pad($str, $qtd, "0", STR_PAD_LEFT);
}

if(!function_exists('uuID')){
  // Imprimindo Data do DB
  function uuid(){
    $data = random_bytes(16);
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // versão 4
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // variante 1
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
  }
}
?>