<?php
session_start();
header("Access-Control-Allow-Origin: *");
require_once("./conexao.php");
date_default_timezone_set('America/Bahia');
$conn = conn();

define('DB_DRIVER'      , "sqlsrv");
define('DB_HOST'        , "192.168.0.237");
define('DB_USER'        , "projetos");
define('DB_PASSWORD'    , "projetos");
define('DB_NAME'        , "UNI");

function mask($val, $mask)
{
  $maskared = '';
  $k = 0;
  for ($i = 0; $i <= strlen($mask) - 1; ++$i) {
    if ($mask[$i] == '#') {
      if (isset($val[$k])) {
        $maskared .= $val[$k++];
      }
    } else {
      if (isset($mask[$i])) {
        $maskared .= $mask[$i];
      }
    }
  }
  return $maskared;
}

//Conexão SQLSERVER
require_once("./ConnSQLSERVER.php");
$Conexao = ConnSQLSERVER::getConnection();

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require_once("../utils/phpmailer/Exception.php");
require_once("../utils/phpmailer/PHPMailer.php");
require_once("../utils/phpmailer/SMTP.php");

$var = "";

function retornaSituacao($sit) {
  $descricao = "";
  switch ($sit) {
    case 1: $descricao = "Pendente";break;
    case 2: $descricao = "Aprovado";break;
    case 3: $descricao = "Rejeitado";break;
    default: $descricao = "";break;
  }
  return $descricao;
}

/**
 * Criar nova autorização de faturamento
 */
if ($_POST['cod'] == 1) {
  $user_id        = $_SESSION['id_user'];
  $cliente        = $_POST['cliente'];
  $valor          = str_replace(",","",$_POST['valor_total']);
  $parcelas       = $_POST['qtd_parcelas'];
  $vencimento     = !empty($_POST['vencimento_parcela']) ? $_POST['vencimento_parcela'] : date("Y-m-d");
  $nota_fiscal    = $_POST['nota_fiscal'];
  
  $query    = $Conexao->query("SELECT SQL_CNOMCLI,SQL_CARETEL,SQL_CTELCLI,SQL_CEMAIL,SQL_CARECEL,SQL_CCELCLI,SQL_CCGCCLI FROM CLIENTES_SCR 
	WHERE SQL_CCODCLI = '$cliente'");
  $clienteData = $query->fetch(PDO::FETCH_ASSOC);
  
  $nome_cliente = !empty(trim($clienteData['SQL_CNOMCLI'])) ? trim($clienteData['SQL_CNOMCLI']): "";
  
  $tel_cliente = "";
  if (!empty(trim($clienteData['SQL_CTELCLI']))) {
    //telefone
    $tel_cliente = ("(".trim($clienteData['SQL_CARETEL']).")"." ".trim($clienteData['SQL_CTELCLI']));
  }

  $cel_cliente = "";
  if (!empty(trim($clienteData['SQL_CCELCLI']))) {
    //celular
    $cel_cliente = ("(".trim($clienteData['SQL_CARECEL']).")"." ".trim($clienteData['SQL_CCELCLI']));
  }
  
  $email_cliente = !empty(trim($clienteData['SQL_CEMAIL'])) ? trim($clienteData['SQL_CEMAIL']) : "";

  $cliente_cpf_cnpj = !empty(trim($clienteData['SQL_CCGCCLI'])) ? trim($clienteData['SQL_CCGCCLI']) : "";

  $add = mysqli_query($conn, "INSERT INTO autorizacao_faturamento(
    user_id,
    cliente,
    cliente_nome,
    cliente_cpf_cnpj,
    cliente_tel,
    cliente_cel,
    cliente_email,
    valor,
    parcelas,
    vencimento,
    nota_fiscal
  ) VALUES(
    '$user_id',
    '$cliente',
    '$nome_cliente',
    '$cliente_cpf_cnpj',
    '$tel_cliente',
    '$cel_cliente',
    '$email_cliente',
    '$valor',
    '$parcelas',
    '$vencimento',
    '$nota_fiscal'
  )");
  if ($add) {
    
    $ultimo_id = mysqli_insert_id($conn);

    $addRel = mysqli_query($conn, "INSERT INTO autorizacao_faturamento_rel(user_id,autorizacao_id,situacao,situacao_antes,obs) 
      VALUES('$user_id','$ultimo_id','1','1','".$_POST['obs']."')");

    $var = array(
      'status'  => true,
      'msg'     => 'Processo concluído com sucesso!'
    );

  } else {
    $var = array(
      'status'  => false,
      'msg'     => 'Não foi possível concluir o processo, tente novamente.'
    );
  }
}

/**
 * Listar clientes pesquisados
 */
if ($_POST['cod'] == 2) {
  $array_clientes = [];
  $descricao = $_POST['cliente_pesq'];
  $query    = $Conexao->query("SELECT SQL_CCODCLI,SQL_CNOMCLI FROM CLIENTES_SCR 
	WHERE SQL_CCODCLI = '".intval($descricao)."' OR SQL_CNOMCLI LIKE '%$descricao%'");
  $clientes = $query->fetchAll();
  if (count($clientes) > 0) {
	  foreach($clientes as $cliente) {
		  array_push($array_clientes, array(
			"nome"  => trim($cliente['SQL_CNOMCLI']),
			"cod"   => trim($cliente['SQL_CCODCLI'])
		  ));
	  }
  }
  $var = $array_clientes;
}

/**
 * Excluir Autorização de Faturamento
 */
if ($_POST['cod'] == 3) {
  $id = $_POST['id'];
  $up = mysqli_query($conn, "UPDATE autorizacao_faturamento SET status = '1' WHERE id = '$id'");
  if ($up) {
    $var = array(
      'status'  => true,
      'msg'     => 'Processo concluído com sucesso!'
    );
  } else {
    $var = array(
      'status'  => false,
      'msg'     => 'Não foi possível concluir o processo, tente novamente.'
    );
  }
}

/**
 * Popular parcelas da autorização de faturamento
 */
if ($_POST['cod'] == 4) {
  $id = $_POST['id'];
  $getInfo = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM autorizacao_faturamento WHERE id = '$id'"));

  $valor      = $getInfo['valor'];
  $parcelas   = $getInfo['parcelas'];
  $vencimento = $getInfo['vencimento'];
  
  $valor_parcela = $valor / $parcelas;

  $dm = explode("-",$vencimento);

  $array_parcelas = [];

  for ($cc=0;$cc<$parcelas;$cc++) {

    $data_vencimento = $cc == 0 ? $vencimento : date("Y-m-d",mktime(0,0,0,($dm[1] + $cc),$dm[2],$dm[0])); 
    
    array_push($array_parcelas, array(
      "data"    => date("d-m-Y", strtotime($data_vencimento)),
      "valor"   => number_format($valor_parcela,'2','.',',')
    ));
  }

  $var = $array_parcelas;
}

/**
 * Modificar situação da solicitação
 */
if ($_POST['cod'] == 5) {
  $id           = $_POST['id_mod'];
  $situacao     = $_POST['situacao'];
  $obs          = $_POST['obs'];
  $user_id      = 0;

  $getDataUser = mysqli_query($conn, "SELECT id FROM user 
      WHERE senha = '".md5($_POST['senha'])."' AND senha_block = '1' AND status = '0' AND (tipo_user = '7' OR tipo_user = '6' OR tipo_user = '5')");
  if (mysqli_num_rows($getDataUser) > 0) {
    $listaDataUser = mysqli_fetch_array($getDataUser);
    $user_id = $listaDataUser['id'];
    $getInfo = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM autorizacao_faturamento WHERE id = '$id'"));
    if ($getInfo['situacao'] != $situacao) {

      $situacao_antiga     = $getInfo['situacao'];

      $up = mysqli_query($conn, "UPDATE autorizacao_faturamento SET situacao = '$situacao' WHERE id = '$id'");
        
      if ($up) {
        $add = mysqli_query($conn, "INSERT INTO autorizacao_faturamento_rel(user_id,autorizacao_id,situacao,situacao_antes,obs) 
          VALUES('$user_id','$id','$situacao','$situacao_antiga','$obs')");

        /**
         * Aqui estou verificando se a situação é "Aprovado", se for, então vamos disparar email e whatsapp para o cliente
         */
        if ($situacao == 2) {
          $email_corpo = "";

          //montar corpo do email
          $email_corpo .= "
            <h4>Olá, ".$getInfo['cliente_nome']."</h4>

            <p>A Unidos Importados quer gerar um faturamento para você no valor de R$".number_format($getInfo['valor'],'2','.',',').", para x".$getInfo['parcelas']." parcela(s).</p>
            <p>Precisamos que você autorize este faturamento, para isso acesso o link a baixo, faça login com sua senha e autorize o faturamento pendente.</p>
            <p><a href='http://unidosimportados.com.br/painel' target='_blank'>Clique aqui para ver o faturamento.</a></p>
            <hr>
            <p>Caso não tenha solicitado esta autorização de faturamento apenas ignore este contato.</p>
          ";

          $whatsapp_corpo = "";
          $whatsapp_corpo .= "Olá, ".$getInfo['cliente_nome']."\n"; 
          $whatsapp_corpo .= "A Unidos Importados quer gerar um faturamento para você no valor de R$".number_format($getInfo['valor'],'2','.',',').", para x".$getInfo['parcelas']." parcela(s).\n"; 
          $whatsapp_corpo .= "Precisamos que você autorize este faturamento, para isso acesso o link a baixo, faça login com sua senha e autorize o faturamento pendente. \n"; 
          $whatsapp_corpo .= "http://unidosimportados.com.br/painel \n"; 
          $whatsapp_corpo .= "Caso não tenha solicitado esta autorização de faturamento apenas ignore este contato."; 

          $mail = new PHPMailer(true);
          $mail->isSMTP();
          $mail->CharSet    = 'UTF-8';
          $mail->Host       = 'smtp.gmail.com';
          $mail->SMTPAuth   = true;
          $mail->Username   = 'unidossolicitacoes@gmail.com';
          $mail->Password   = 'xtdc1227';
          $mail->SMTPSecure = 'tls';
          $mail->Port       = 587;

          $mail->setFrom('unidossolicitacoes@gmail.com', 'Unidos Importados');
          $mail->addAddress($getInfo['cliente_email'], $getInfo['cliente_nome']);
  		$mail->addAddress('teste@unidosimportados.com.br', 'Unidos - Autorização de faturamento');

          $mail->isHTML(true);
          $mail->Subject = "Autorização de Faturamento - Unidos Importados";
          $mail->Body    = $email_corpo;
          $mail->AltBody = $email_corpo;
          $variavel = $mail->send();

          //Whatsapp envio
          /*$phone = str_replace('-','',str_replace('(','',str_replace(')','',str_replace(' ','',trim($getInfo['cliente_tel'])))));
          $data = array(
              'number' => $phone,
              'message' => $whatsapp_corpo,
          );
          $json = json_encode($data);
          $url = 'http://v4.chatpro.com.br/chatpro-nclqvwjoir/api/v1/send_message';
          $options = stream_context_create(
            array(
              'http' => array(
                    'method'  => 'POST',
                    'header'  => "Content-type: application/json\r\n".
                          "accept: application/json\r\n".
                          "Authorization: {{token}}\r\n",
                    'content' => $json
                ),
            )
          );
          $send_whatsapp = file_get_contents($url, false, $options); */
        }

        $var = array(
          'status'  => true,
          'msg'     => 'Processo concluído com sucesso!'
        );
      } else {
        $var = array(
          'status'  => false,
          'msg'     => 'Falha no processo.'
        );
      }

    } else {
      $var = array(
        'status'  => false,
        'msg'     => 'A situação já está imposta.'
      );
    }
  } else {
    $var = array(
      'status'  => false,
      'msg'     => 'Senha não identificada'
    );
  }
}

/**
 * Modificar situação da solicitação
 */
if ($_POST['cod'] == 6) {
  
  $vencimento = $_POST['vencimento_parcela'];
  $valor = str_replace(",","",$_POST['valor_total']);
  $parcelas = $_POST['qtd_parcelas'];
  $nota_fiscal = $_POST['nota_fiscal'];
  $obs = $_POST['obs'];
  $id_esc = $_POST['id_esc'];
  $user_id = $_SESSION['id_user'];

  $up = mysqli_query($conn, "UPDATE autorizacao_faturamento 
    SET vencimento = '$vencimento', valor = '$valor', parcelas = '$parcelas', nota_fiscal = '$nota_fiscal', situacao = '1' 
    WHERE id = '$id_esc'");
  if ($up) {
    $add = mysqli_query($conn, "INSERT INTO autorizacao_faturamento_rel(user_id,autorizacao_id,situacao,situacao_antes,obs) 
      VALUES('$user_id','$id_esc','1','3','$obs')");

    $var = array(
      'status'  => true,
      'msg'     => 'Processo concluído com sucesso!'
    ); 
  } else {
    $var = array(
      'status'  => false,
      'msg'     => 'Falha no processo.'
    );
  }
}

/**
 * Popular relatório da solicitação
 */
if ($_POST['cod'] == 7) {
  $id = $_POST['id'];
  $array = [];

  $getAll = mysqli_query($conn, "SELECT * FROM autorizacao_faturamento_rel WHERE autorizacao_id = '$id' ORDER BY id ASC");
  if (mysqli_num_rows($getAll) > 0) {

    while ($lista = mysqli_fetch_array($getAll)) {

      //pegar info do user
      $getInfoUser = mysqli_fetch_array(mysqli_query($conn, "SELECT nome FROM user WHERE id = '".$lista['user_id']."'"));

      //Situacao atual
      $situacao = retornaSituacao($lista['situacao']);

      //Situacao antiga
      $situacao_antes = retornaSituacao($lista['situacao_antes']);

      array_push($array,array(
        "data" => date("d-m-Y H:i:s", strtotime($lista['data_cadastro'])),
        "user" => $getInfoUser['nome'],
        "situacao" => $situacao,
        "antiga_situacao" => $situacao_antes,
        "obs" => empty($lista['obs']) ? "" : $lista['obs']
      ));

    }

    $var = $array;

  }
}

/**
 * Listar Solicitações
 */
if ($_POST['cod'] == 8) {
  $qtd_listados = $_POST['qtd_listados'];
  $data_de = $_POST['data_de'];
  $data_ate = $_POST['data_ate'];
  $situacao_pesq = $_POST['situacao_pesq'];
  $vendedor_pesq = $_POST['vendedor_pesq'];

  if ($_SESSION['tipo_user'] == 1 || $_SESSION['tipo_user'] == 6 || $_SESSION['tipo_user'] == 5 || $_SESSION['tipo_user'] == 7) {  
    $pesquisa = "SELECT * FROM autorizacao_faturamento WHERE ";
    
    if (!empty($data_de) && empty($data_ate)) {
      $pesquisa .= " CAST(data_cadastro as DATE) = '$data_de' AND ";
    }

    if (empty($data_de) && !empty($data_ate)) {
      $pesquisa .= " CAST(data_cadastro as DATE) = '$data_ate' AND ";
    }

    if (!empty($data_de) && !empty($data_ate)) {
      $pesquisa .= " CAST(data_cadastro as DATE) BETWEEN '$data_de' AND '$data_ate' AND ";
    }

    if (!empty($situacao_pesq)) {
      $pesquisa .= " situacao = '$situacao_pesq' AND ";
    } else {
      $pesquisa .= " situacao IN('1','3') AND ";
    }

    if (!empty($vendedor_pesq)) {
      $pesquisa .= " user_id = '$vendedor_pesq' AND ";
    }

    if ($_SESSION['tipo_user'] == 1) {
      $pesquisa .= " user_id = '".$_SESSION['id_user']."' AND status = '0' ORDER BY id DESC LIMIT $qtd_listados";
    } else if ($_SESSION['tipo_user'] == 7 || $_SESSION['tipo_user'] == 6 || $_SESSION['tipo_user'] == 5) {
      $pesquisa .= " status = '0' ORDER BY id DESC LIMIT $qtd_listados";
    }

    $array = [];

    $query = mysqli_query($conn,$pesquisa);
    $total_encontrados = mysqli_num_rows($query);
    if ($total_encontrados > 0) {
      while ($lista = mysqli_fetch_array($query)) {

        //Vendedor
        $getInfoUser = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM user WHERE id = '".$lista['user_id']."'"));

        //CPF ou CNPJ
        $cpf_cnpj = "";
        if (!empty($lista['cliente_cpf_cnpj'])) {
          if (strlen($lista['cliente_cpf_cnpj']) > 11) {
            if (strlen($lista['cliente_cpf_cnpj']) == 13) {
              $cpf_cnpj = mask('0'.$lista['cliente_cpf_cnpj'], '##.###.###/####-##');
            } else {
              $cpf_cnpj = mask($lista['cliente_cpf_cnpj'], '##.###.###/####-##');
            }
            
          } else {
            $cpf_cnpj = mask($lista['cliente_cpf_cnpj'], '###.###.###-##');
          }
        }

        array_push($array,array(
          'id'  => $lista['id'],
          'data_cadastro'  => date("d-m-Y H:i:s", strtotime($lista['data_cadastro'])),
          'user_id'  => $lista['user_id'],
          'cliente'  => $lista['cliente'],
          'cliente_nome'  => $lista['cliente_nome'],
          'cliente_tel'  => $lista['cliente_tel'],
          'cliente_email'  => $lista['cliente_email'],
          'valor'  => $lista['valor'],
          'valor_formatado'  => number_format($lista['valor'],"2",".",","),
          'parcelas'  => $lista['parcelas'],
          'vencimento'  => $lista['vencimento'],
          'vencimento_formatado'  => date("d-m-Y", strtotime($lista['vencimento'])),
          'nota_fiscal'  => $lista['nota_fiscal'],
          'situacao'  => $lista['situacao'],
          'tipo_user' => $_SESSION['tipo_user'],
          'nome'  => $getInfoUser['nome'],
          'cpf_cnpj' => $cpf_cnpj,
          'situacao_web' => $lista['situacao_web'],
          'text_web' => $lista['text_web']
        ));
      }
    }
    $var = $array;

  } else {
    $var = true;
  }
}

if ($_POST['cod'] == 9) {
  //pegar total de solicitações
  if ($_SESSION['tipo_user'] == 1) {
    $getTotal = mysqli_num_rows(mysqli_query($conn, "SELECT id FROM autorizacao_faturamento WHERE user_id = '".$_SESSION['id_user']."' AND status = '0'"));
  } else if ($_SESSION['tipo_user'] == 5 || $_SESSION['tipo_user'] == 6 || $_SESSION['tipo_user'] == 7) {
    $getTotal = mysqli_num_rows(mysqli_query($conn, "SELECT id FROM autorizacao_faturamento WHERE  status = '0'"));
  }
  $total_solicitacoes = $getTotal;

  //pegar total de aprovadas
  if ($_SESSION['tipo_user'] == 1) {
    $getTotalAprovadas = mysqli_num_rows(mysqli_query($conn, "SELECT id FROM autorizacao_faturamento WHERE situacao = '2' AND user_id = '".$_SESSION['id_user']."' AND status = '0'"));
  } else if ($_SESSION['tipo_user'] == 5 || $_SESSION['tipo_user'] == 6 || $_SESSION['tipo_user'] == 7) {
    $getTotalAprovadas = mysqli_num_rows(mysqli_query($conn, "SELECT id FROM autorizacao_faturamento WHERE situacao = '2' AND  status = '0'"));
  }
  $total_solicitacoes_aprovadas = $getTotalAprovadas;

  //pegar total de reprovadas
  if ($_SESSION['tipo_user'] == 1) {
    $getTotalReprovadas = mysqli_num_rows(mysqli_query($conn, "SELECT id FROM autorizacao_faturamento WHERE situacao = '3' AND user_id = '".$_SESSION['id_user']."' AND status = '0'"));
  } else if ($_SESSION['tipo_user'] == 5 || $_SESSION['tipo_user'] == 6 || $_SESSION['tipo_user'] == 7) {
    $getTotalReprovadas = mysqli_num_rows(mysqli_query($conn, "SELECT id FROM autorizacao_faturamento WHERE situacao = '3' AND  status = '0'"));
  }
  $total_solicitacoes_reprovadas = $getTotalReprovadas;

  //pegar total de abertas
  if ($_SESSION['tipo_user'] == 1) {
    $getTotalAbertas = mysqli_num_rows(mysqli_query($conn, "SELECT id FROM autorizacao_faturamento WHERE situacao = '1' AND user_id = '".$_SESSION['id_user']."' AND status = '0'"));
  } else if ($_SESSION['tipo_user'] == 5 || $_SESSION['tipo_user'] == 6 || $_SESSION['tipo_user'] == 7) {
    $getTotalAbertas = mysqli_num_rows(mysqli_query($conn, "SELECT id FROM autorizacao_faturamento WHERE situacao = '1' AND  status = '0'"));
  }
  $total_solicitacoes_abertas = $getTotalAbertas;

  $var = array(
    "total_solicitacoes" => $total_solicitacoes,
    "total_solicitacoes_aprovadas" => $total_solicitacoes_aprovadas,
    "total_solicitacoes_reprovadas" => $total_solicitacoes_reprovadas,
    "total_solicitacoes_abertas" => $total_solicitacoes_abertas,
  );
}

echo json_encode($var); 