<?php

//URL PARA TESTE
// http://hi.dev/sendleiturarealtime.php?idprod=1423&entrada=15000&saida=50&data=27/09/2017&status=1

$filename = 'c_leitura.php';

if (!file_exists($filename)) {
    header("Location: error.php");
    exit;
}

include 'c_leitura.php';
require_once("db.php");

$data_now = date('Y-m-d H:i:s');
$idprod = $_GET['idprod'];
$entrada = $_GET['entrada'] / 100;
$saida = $_GET['saida'] / 100;
$entradaVirtual = $_GET['entrada_virtual'] / 100;
$saidaVirtual = $_GET['saida_virtual'] / 100;
$data = $_GET['data'];
$status = $_GET['status'];
$dataorder = $_GET['dataorder'];


$fl_expirado = false;
$fl_revalidar = false;
$vlidade = 0;
$acao = 0;




try {

    if ($entrada > 0) {

        $Metrica_query = "SELECT * FROM metricas "
                . " WHERE idprod = '$idprod' "
                . " ORDER BY dataorder DESC "
                . " LIMIT 1";
        $Metrica_result = mysql_query($Metrica_query) or die(mysql_error());
        $Metrica_num_rows = mysql_num_rows($Metrica_result);
        $Metrica_row = mysql_fetch_array($Metrica_result);

        // Verificar o estado atual das metricas
        // Se não existir nenhuma métrica, considerar a entrada e saida anterior como 0 para o calculo
        if ($Metrica_num_rows == 0) {
            $entrada_anterior = 0;
            $saida_anterior = 0;
            $acao = 1; // Inserir valor
            $queryTransacao = "INSERT INTO transacoes (tipo, valor,idprod ,data_hora) "
                    . " VALUES   ('1','" . $entrada . "', '" . $idprod . "', '" . $data_now . "')";
            mysql_query($queryTransacao) or die(mysql_error());

            //se metrica ainda esta aberta para novas cargas
        } elseif ($Metrica_row['status_leitura'] == 1) {

            $entrada_anterior = $Metrica_row['entrada_anterior'];
            $saida_anterior = $Metrica_row['saida_anterior'];


            $entrada_trans = $Metrica_row['entrada'];
            $saida_trans = $Metrica_row['saida'];

            // Atualizar os valores de entrada e saida atual e o calculo de comissão
            if (($entrada == $entrada_trans) && ($saida == $saida_trans)) {
                $acao = 0; // Não faça nada pois não jogou
            } else {
                $acao = 2; // Atualizar valor   
                // Inserir transação de Entradas e Saidas
                $valor = 0;
                $tipo = 0;

                if ($entrada != $entrada_trans) {

                    $valor = $entrada - $entrada_trans;
                    $tipo = 1;

                    if ($valor > 0) {
                        $queryTransacao = "INSERT INTO transacoes (tipo, valor,idprod,data_hora) "
                                . "VALUES   ('" . $tipo . "','" . $valor . "', '" . $idprod . "', '" . $data_now . "')";
                        mysql_query($queryTransacao) or die(mysql_error());
                    }
                }

                if ($saida != $saida_trans) {

                    $valor = $saida - $saida_trans;
                    $tipo = 2;

                    if ($valor > 0) {
                        $queryTransacao = "INSERT INTO transacoes (tipo, valor,idprod,data_hora) "
                                . "VALUES   ('" . $tipo . "','" . $valor . "', '" . $idprod . "', '" . $data_now . "')";
                        mysql_query($queryTransacao) or die(mysql_error());
                    }
                }

                // Solução temporária para não ficar valores zerados e negativos
                $queryDeleteTransacao = "DELETE FROM transacoes WHERE valor <= 0 AND idprod = '$idprod' ";
                mysql_query($queryDeleteTransacao) or die(mysql_error());
            }


            //se metrica já foi fechada
        } elseif ($Metrica_row['status_leitura'] == 2) {

            // Inserir um novo registro em métricas e pegar a entrada e saida do registro anterior
            $entrada_anterior = $Metrica_row['entrada'];
            $saida_anterior = $Metrica_row['saida'];

            if ($entrada == $entrada_anterior && $saida == $saida_anterior) {
                $acao = 0; // Não faça nada pois não jogou
            } else {
                $acao = 1; // Inserir valor
            }
        }

        // Informações de Porcentagens configuradas INNER JOIN ponto p ON p.id_apoio = t.id_apoio
        $resultPorcent = mysql_query("SELECT t.id_apoio,p.porcent_ponto p_ponto , "
                . " u.porcentagem locacao ,u.nivel ,"
                . " u.id_apoio id_apoio_acima "
                . " FROM tablet t  "
                . " INNER JOIN ponto p ON p.id = t.id_ponto "
                . " INNER JOIN user u ON u.id = t.id_apoio " //dono
                . " WHERE t.idprod = '$idprod'") or die(mysql_error());
        $rowPorcent = mysql_fetch_array($resultPorcent);

        if ($rowPorcent['nivel'] == 4 && $rowPorcent['locacao'] <> 0) {
            /**
             * SÓCIO
             */
            $queryuser = "SELECT porcentagem FROM user WHERE id =  " . $rowPorcent['id_apoio_acima']; //locação a pagar
            $resultuser = mysql_query($queryuser);
            $rowUser = mysql_fetch_array($resultuser);
            $diff_socio = $rowPorcent['locacao'] - $rowUser['porcentagem'];

            $p_locacao = $rowUser['porcentagem'] / 100;
            $p_ponto = $rowPorcent['p_ponto'] / 100;
            $p_cliente = $diff_socio / 100;
        } else {
            $p_locacao = $rowPorcent['locacao'] / 100;
            $p_ponto = $rowPorcent['p_ponto'] / 100;
            $p_cliente = (100 - ( $rowPorcent['locacao'] + $rowPorcent['p_ponto'])) / 100;
        }

        // Calculo de leitura automatica
        $total_entrada = $entrada - $entrada_anterior;
        $total_saida = $saida - $saida_anterior;
        $saldo_total = $total_entrada - $total_saida;

        // Se o total do saldo for negativo
//        if ($saldo_total <= 0) {
//            $comissao_dono = 0;
//            $comissao_ponto = 0;
//            $comissao_locacao = 0;
//            $acerto = 0;
//
//            
//        } else {
        // Se o saldo for positivo
        $acerto = $saldo_total;
        $comissao_locacao = $acerto * $p_locacao; //socio
        $comissao_ponto = $acerto * $p_ponto;
        $comissao_dono = $acerto * $p_cliente;
//        }


        if ($acao > 0) {

            ######### LEITURA RECEBIDA ##########
            //verificar se já existe cobrança em aberto para o cliente
            $queryUser = "SELECT a.id_apoio AS id_user, c.id_pais, b.nome, b.id AS id_ponto
							FROM tablet a
							LEFT JOIN ponto b ON a.id_ponto = b.id
							LEFT JOIN user c ON c.id = a.id_apoio
							WHERE 
							a.idprod = '$idprod' 
							AND a.ativo = 1";
            $resultUser = mysql_query($queryUser) or die(mysql_error());
            $rowUser = mysql_fetch_array($resultUser);

            $idCliente = $rowUser['id_user'];
            $idPais = $rowUser['id_pais'];
            $idPonto = $rowUser['id_ponto'];

            if ($idPais == '33') { //Brasil
                $tipoCobranca = 'Mensal';
//                $tipoCobranca = 'Quinzenal';
//                if (date("d") <= 15) {
//
//                    $dateBase = date("Y-m-15");
//                    $data_vencimento = date('Y-m-d', strtotime($dateBase . '+ 5 days'));
//                    $periodo_prestacao = date("Y-m-15");
//                } else {

                $mes = date("m"); // Mês atual
                $ano = date("Y"); // Ano atual
                $ultimo_dia = date("t", mktime(0, 0, 0, $mes, '01', $ano)); // Ultimo dia do Mês

                $dateBase = date("Y-m-$ultimo_dia");
                $data_vencimento = date('Y-m-d', strtotime($dateBase . '+ 5 days'));
                $periodo_prestacao = date("Y-m-$ultimo_dia");
                //}
            } else {

                $mes = date("m"); // Mês atual
                $ano = date("Y"); // Ano atual
                $ultimo_dia = date("t", mktime(0, 0, 0, $mes, '01', $ano)); // Ultimo dia do Mês

                $tipoCobranca = 'Mensal';
                $dateBase = date("Y-m-$ultimo_dia");
                $data_vencimento = date('Y-m-d', strtotime($dateBase . '+ 5 days'));
                $periodo_prestacao = date("Y-m-$ultimo_dia");
            }



            ######################### INICIO COBRANÇA AGREGADO #########################################


            $queryCobrancaAgregadoExistente = "SELECT a.id_cobranca, a.valor_total
							FROM cobranca_agregado a
							WHERE 
							a.id_cliente = '$idCliente' 
							AND a.periodo_prestacao = '$periodo_prestacao' 
								AND a.pago = 0
							AND cobranca_fechada = 0"; //cobrança em aberto
            $resultCobrancaAgregadoExistente = mysql_query($queryCobrancaAgregadoExistente) or die(mysql_error());
            $rowCobrancaAgregadoExistente = mysql_fetch_array($resultCobrancaAgregadoExistente);

            // print_r($rowCobrancaAgregadoExistente);
            // exit;

            if (mysql_num_rows($resultCobrancaAgregadoExistente) > 0) {

                $idCobrancaAgregado = $rowCobrancaAgregadoExistente['id_cobranca'];
            } else {

                //criar as cobranças agregadas do cliente para recebimento do admin
                $sqlInsert = "INSERT INTO cobranca_agregado
				(id_cobranca, id_cliente, data_processamento, periodo_prestacao, tipo_cobranca, data_vencimento, valor_total, pago, data_pagamento, cobranca_fechada, ativo)
				VALUES (NULL, '$idCliente', '$data_now', '$periodo_prestacao', '$tipoCobranca', '$data_vencimento', '0.00', 0, NULL, 0, 1)";
                $resultInsert = mysql_query($sqlInsert) or die("ERRO NO BANCO DE DADOS 1 - " . mysql_error());

                $idCobrancaAgregado = mysql_insert_id();
            }


            ######################### FIM COBRANÇA AGREGADO #########################################	
            #### INICIO cobranca_locacao ####
            //check cobranca_locacao existente para usuario
            $queryCobrancaExistente = "SELECT a.id_cobranca, a.valor_total
							FROM cobranca_locacao a
							WHERE 
							a.id_cliente = '$idCliente' 
							AND a.periodo_prestacao = '$periodo_prestacao' 
							AND a.pago = 0
							AND cobranca_fechada = 0"; //cobrança em aberto
            $resultCobrancaExistente = mysql_query($queryCobrancaExistente) or die(mysql_error());
            $rowCobrancaExistente = mysql_fetch_array($resultCobrancaExistente);

            //atualizar a cobranca_locacao existente
            if (mysql_num_rows($resultCobrancaExistente) > 0) {

                $idCobranca = $rowCobrancaExistente['id_cobranca'];

                //inserir novo registro de cobranca_locacao
            } else {

                $query = "INSERT INTO cobranca_locacao(id_cobranca, id_cliente, id_cobranca_agregado, data_processamento, periodo_prestacao, tipo_cobranca, data_vencimento, valor_total, pago, data_pagamento, ativo) "
                        . " VALUES (NULL, '$idCliente', '$idCobrancaAgregado', '$data_now', '$periodo_prestacao', '$tipoCobranca', '$data_vencimento', '0.00', 0, NULL, 1)";

                mysql_query($query) or die("ERRO NO BANCO DE DADOS 2 - " . mysql_error());
                $idCobranca = mysql_insert_id();
            }
            #### FIM cobranca_locacao ####
            //se o tablet pertence a um ponto
            if ($idPonto > 0) {

                #### INICIO cobranca_ponto ####
                //check cobranca_ponto existente para usuario
                $queryCobrancaExistente = "SELECT a.id_cobranca, a.valor_total
								FROM cobranca_ponto a
								WHERE 
								a.id_ponto = '$idPonto' 
								AND a.periodo_prestacao = '$periodo_prestacao' 
								AND a.pago = 0
								AND a.cobranca_fechada = 0"; //cobrança em aberto
                $resultCobrancaExistente = mysql_query($queryCobrancaExistente) or die(mysql_error());
                $rowCobrancaExistente = mysql_fetch_array($resultCobrancaExistente);

                //atualizar a cobranca_ponto existente
                if (mysql_num_rows($resultCobrancaExistente) > 0) {

                    $idCobrancaPonto = $rowCobrancaExistente['id_cobranca'];


                    //inserir novo registro de cobranca_ponto
                } else {

                    $query = "INSERT INTO cobranca_ponto
								(id_cobranca, id_ponto, id_cobranca_locacao, data_processamento, periodo_prestacao, tipo_cobranca, data_vencimento, valor_total, pago, data_pagamento, ativo)
								VALUES (NULL, '$idPonto', '$idCobranca','$data_now', '$periodo_prestacao', '$tipoCobranca', '$data_vencimento', '0.00', 0, NULL, 1)";

                    mysql_query($query) or die("ERRO NO BANCO DE DADOS 3 - " . mysql_error());
                    $idCobrancaPonto = mysql_insert_id();
                }
                #### FIM cobranca_ponto ####
            } //Fim ponto	
        }//Fim acao > 0

        if ($acao == 1) {

            $query = "INSERT INTO metricas (id_cobranca, comissao_locacao, comissao_ponto, "
                    . " comissao_dono, acerto, idprod, saldo_total, entrada, saida, entrada_anterior,"
                    . " saida_anterior,dataorder, status) "
                    . " VALUES   ('$idCobranca', '" . $comissao_locacao . "','"
                    . $comissao_ponto . "', '" . $comissao_dono . "', '"
                    . $acerto . "', '$idprod', '" . $saldo_total . "', '"
                    . $entrada . "', '" . $saida . "',  '"
                    . $entrada_anterior . "',  '" . $saida_anterior . "', '" . $data_now . "',1)";
            mysql_query($query) or die("ERRO NO BANCO DE DADOS 4 - " . mysql_error());

            $idMetrica = mysql_insert_id();

            if ($idPonto > 0) {
                //inserir a leitura parcial
                $data_now = date('Y-m-d H:i:s');
                $query2 = "INSERT INTO metrica_parcial
				(id_metrica_parcial, id_metrica_fk, id_cobranca, comissao_locacao, 
                                comissao_ponto, comissao_dono, acerto, idprod, saldo_total, entrada, 
                                saida, entrada_anterior, saida_anterior, data_zerou_parcial, ativo)
				VALUES (NULL, '$idMetrica', '$idCobrancaPonto', '$comissao_locacao', "
                        . " '$comissao_ponto', '$comissao_dono', '$acerto', '$idprod', "
                        . " '$saldo_total', '$entrada', '$saida', '$entrada_anterior', "
                        . " '$saida_anterior', NULL, 1)";
                mysql_query($query2) or die("ERRO NO BANCO DE DADOS 5 - " . mysql_error());
            }
        } elseif ($acao == 2) {

            $idMetrica = $Metrica_row['id'];
            $query = "UPDATE metricas 
						SET 
							id_cobranca = '$idCobranca',
							comissao_locacao = '$comissao_locacao', 
							comissao_ponto = '$comissao_ponto', 
							comissao_dono = '$comissao_dono', 
							acerto = '$acerto', 
							saldo_total = $saldo_total, 
							entrada = '$entrada', 
							saida = '$saida', 
							dataorder = '$data_now' 
						WHERE 
						id = '$idMetrica'";
            mysql_query($query) or die(mysql_error());

            if ($idPonto > 0) {

                //atualizar a leitura parcial
                $query2 = ("UPDATE metrica_parcial
							SET
								id_cobranca = '$idCobrancaPonto',
								comissao_locacao = '$comissao_locacao',
								comissao_ponto = '$comissao_ponto',
								comissao_dono = '$comissao_dono',
								acerto = '$acerto',	
								saldo_total = '$saldo_total',
								entrada = '$entrada',
								saida = '$saida'
							WHERE 
							id_metrica_fk = '$idMetrica'");
                mysql_query($query2) or die(mysql_error());
            }
        }

        //atualizar o valor da cobrança locação
        $reaultComissaoAnterior = mysql_query("SELECT SUM(a.comissao_locacao+a.comissao_dono) as valor_total
						FROM metricas a
						WHERE 
						a.id_cobranca = '$idCobranca'") or die(mysql_error());
        $rowComissaoAnterior = mysql_fetch_array($reaultComissaoAnterior);
        $valor_total = $rowComissaoAnterior['valor_total'];

        $query = "UPDATE cobranca_locacao
					SET
						valor_total = '$valor_total'
					WHERE 
					id_cobranca = '$idCobranca'";
        mysql_query($query) or die("ERRO NO BANCO DE DADOS 6 - " . mysql_error());


        $reaultComissaoAnterior = mysql_query("SELECT SUM(a.valor_total) as valor_totalAgregado
						FROM cobranca_locacao a
						WHERE 
						a.id_cobranca_agregado = '$idCobrancaAgregado'") or die(mysql_error());
        $rowComissaoAnterior = mysql_fetch_array($reaultComissaoAnterior);
        $valor_totalAgregado = $rowComissaoAnterior['valor_totalAgregado'];

        $query = "UPDATE cobranca_agregado
					SET
						valor_total = '$valor_totalAgregado'
					WHERE 
					id_cobranca = '$idCobrancaAgregado'";
        mysql_query($query) or die("ERRO NO BANCO DE DADOS 7 - " . mysql_error());


        if ($idPonto > 0) {

            //atualizar o valor da cobrança ponto
            $reaultComissaoPontoAnterior = mysql_query("SELECT IFNULL(SUM(a.comissao_ponto), 0) as valor_totalPonto
						FROM metrica_parcial a
						WHERE 
						a.id_cobranca = '$idCobrancaPonto'") or die(mysql_error());
            $rowComissaoPontoAnterior = mysql_fetch_array($reaultComissaoPontoAnterior);
            $valor_totalPonto = $rowComissaoPontoAnterior['valor_totalPonto'];

            $query = "UPDATE cobranca_ponto SET valor_total = '$valor_totalPonto' "
                    . " WHERE id_cobranca = '$idCobrancaPonto'";
            mysql_query($query) or die("ERRO NO BANCO DE DADOS 8 - " . mysql_error());
        }
    }
} catch (Exception $e) {

    print_r($e->getMessage());
}


$query = "SELECT id FROM leitura WHERE idprod = '$idprod'";
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($result);

if ($entradaVirtual == 0 && $saidaVirtual == 0) {
    $query = "UPDATE tablet SET zerarleituravirtual = 0 WHERE idprod = '$idprod'";
    mysql_query($query) or die(mysql_error());
}

//inserir a leitura recebida
if ($num_rows == 0) {

    $query = "INSERT INTO leitura (id_metrica, idprod, entrada, saida,"
            . " entrada_virtual, saida_virtual,"
            . " data, status , dataorder) "
            . " VALUES('$idMetrica', '$idprod', '$entrada', '$saida', "
            . "'$entradaVirtual', '$saidaVirtual', '$data', '$status' ,'$data_now')";
    mysql_query($query) or die(mysql_error());

    echo "OK---splithere---";
} else {
    $query = "UPDATE leitura SET "
            . " entrada = '$entrada', "
            . " saida = '$saida',"
            . " entrada_virtual = '$entradaVirtual', "
            . " saida_virtual = '$saidaVirtual', "
            . " data = '$data', "
            . " status = '$status' "
            . " WHERE idprod = '$idprod'";

    mysql_query($query) or die(mysql_error());

    echo "OK---splithere---";
}
?>