<?php

require_once("classTraccar.php");
$tracarClassDb = new classTraccar();

/*
* quarda o json enviado pelo input
*/
//recuperacao de dados posts
$ttdd = file_get_contents('php://input');

$ttee = json_decode($ttdd);
$ttee = ($ttee->data);
/*
* valores recuperados do json numero de telefone que esta enviando a mensagem e a mensagem
// */
$whatsapp = explode("@", $ttee->from);
$whatsapp = $whatsapp[0];
$message = $tracarClassDb->limpar($ttee->body);
$message = strtoupper($message);

$validLogin = $tracarClassDb->consulta("SELECT * from ts_user WHERE whatsapp='{$whatsapp}'");
$dataUser = $validLogin->fetch_assoc();

if (mysqli_num_rows($validLogin) > 0) {

    $username = $dataUser['email'];
    $password = $dataUser['password'];

    if ($dataUser['menu'] == 0) {

        if ($username == "") {



            $up_date_email = $tracarClassDb->consulta("UPDATE ts_user SET email='" . strtolower($message) . "' WHERE whatsapp='{$whatsapp}'");

            $msgUser0 = $tracarClassDb->limpar("Ahora ingrese su contraseña de acceso.");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgUser0}");

        } else {

            if ($password == "") {

                $up_date_password = $tracarClassDb->consulta("UPDATE ts_user SET password='{$message}' WHERE whatsapp='{$whatsapp}'");

                $msgUser0 = $tracarClassDb->limpar("Registro finalizado con éxito! Espere el menu de opciones.");
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgUser0}");

                // retarda por 5 segundos para evitar bloqueios e travamentos do zap
                sleep(5);

                /**
                 * envia a mensagem com menu inicial
                 */
                $msgRet = "*[MENU]*\n\n";
                $msgRet .= "Seleccione una de la siguientes opciones:\n\n";
                $msgRet .= "Para bloqueo digitar: *BLOQUEAR*\n";
                $msgRet .= "Para desbloqueo digitar: *DESBLOQUEAR*\n";
                // $msgRet .= "Para armar la alarma digitar: *ARMAR*\n";
                $msgRet .= "Para abrir las puertas del vehículo digitar: *DESARMAR*\n";
                $msgRet .= "Para locarlizar su vehículo digitar: *LOCALIZAR*\n";
                $msgRet = $tracarClassDb->limpar($msgRet);

                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");
                $up_date_password = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1' WHERE whatsapp='{$whatsapp}'");
            }
        }

    }
    /**
     * localizar frota
     */
    /**
     * Codigos de menus
     * 2 - Localizar
     * 3 - Bloqear
     * 4 - desbloquear
     * 5 - armar
     * 6 - desarmar
     */
    if ($dataUser['menu'] == 1) {

        /**
         * ENVIA MENU INICIAL
         */
        if ($message != "LOCALIZAR" &&
            $message != "BLOQUEAR" &&
            $message != "DESBLOQUEAR" &&
            $message != "ARMAR" &&
            $message != "DESARMAR"
        ) {

            if ($dataUser['init'] == '1') {

                $msgRet = "*[COMANDO INVALIDO]*\n\n";
                $msgRet .= "Seleccione una de la siguientes opciones:\n\n";
                $msgRet .= "Para bloqueo digitar: *BLOQUEAR*\n";
                $msgRet .= "Para desbloqueo digitar: *DESBLOQUEAR*\n";
                // $msgRet .= "Para armar la alarma digitar: *ARMAR*\n";
                $msgRet .= "Para abrir las puertas del vehículo digitar: *DESARMAR*\n";
                $msgRet .= "Para locarlizar su vehículo digitar: *LOCALIZAR*\n";

                $msgRet = $tracarClassDb->limpar($msgRet);
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");
                return false;

            }
            if ($dataUser['init'] == '0') {

                $agora = date("Hi");

                if ($agora < 1200) {
                    $saudacao = "Buen dia!";
                } else if ($agora > 1200 && $agora < 1800) {
                    $saudacao = "Buenas tardes!";
                } else if ($agora > 1800 && $agora < 2459) {
                    $saudacao = "Buenas noches!";
                } else {
                    $saudacao = "Hola!";
                }

                /**
                 * envia a mensagem com menu inicial
                 */
                $msgRet = "*[ BIENVENIDO AL ROBOT AUTOMÁTICO DE NORRISGPS CIA LTDA ]*\n\n";
                $msgRet .= "{$saudacao}, Le presentamos las opciones del sistema de la central de atención NorrisGPS.\n\n";
                $msgRet .= "Seleccione una de la siguientes opciones:\n\n";
                $msgRet .= "Para bloqueo digitar: *BLOQUEAR*\n";
                $msgRet .= "Para desbloqueo digitar: *DESBLOQUEAR*\n";
                // $msgRet .= "Para armar la alarma digitar: *ARMAR*\n";
                $msgRet .= "Para abrir las puertas del vehículo digitar: *DESARMAR*\n";
                $msgRet .= "Para localizar su vehículo digitar: *LOCALIZAR*\n";
                $msgRet = $tracarClassDb->limpar($msgRet);

                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");
                $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET init = '2' WHERE whatsapp='{$whatsapp}'");
                return false;
            }
        }

        $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET init = '0' WHERE whatsapp='{$whatsapp}'");

        if ($message == "LOCALIZAR") {

            $getDevices = "Digite el código del vehículo que desea localizar.\n\n*Vehículos disponibles:*\n\n";

            $listdevice = $tracarClassDb->listDevice("{$username}", "{$password}");
            $json = json_decode($listdevice);
            foreach ($json as $obj) {
                $getNomeVeiculo = $tracarClassDb->deviceName("{$username}", "{$password}", "{$obj->id}");
                $getDevices .= "Código *" . $obj->id . "*" . " - " . $getNomeVeiculo . "\n";
            }

            $msgRet = $tracarClassDb->limpar($getDevices);
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

            if ($send) {
                $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '2' WHERE whatsapp='{$whatsapp}'");
            }
        }
    }
    if ($message == "BLOQUEAR") {

        $getDevices = "Digite el código del vehículo que desea bloquear.\n\n*Vehiculos disponibles*\n\n";

        $listdevice = $tracarClassDb->listDevice("{$username}", "{$password}");
        $json = json_decode($listdevice);
        foreach ($json as $obj) {

            $getNomeVeiculo = $tracarClassDb->deviceName("{$username}", "{$password}", "{$obj->id}");
            $getDevices .= "Código *" . $obj->id . "*" . " - " . $getNomeVeiculo . "\n";

        }

        $msgRet = $tracarClassDb->limpar($getDevices);
        $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

        if ($send) {
            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '3' WHERE whatsapp='{$whatsapp}'");
        }

    }

    if ($message == "DESBLOQUEAR") {

        $getDevices = "Digite el código del vehículo que desea desbloquear.\n\n*Vehiculos disponibles*\n\n";

        $listdevice = $tracarClassDb->listDevice("{$username}", "{$password}");
        $json = json_decode($listdevice);
        foreach ($json as $obj) {
            $getNomeVeiculo = $tracarClassDb->deviceName("{$username}", "{$password}", "{$obj->id}");
            $getDevices .= "Código *" . $obj->id . "*" . " - " . $getNomeVeiculo . "\n";
        }

        $msgRet = $tracarClassDb->limpar($getDevices);
        $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

        if ($send) {
            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '4' WHERE whatsapp='{$whatsapp}'");
        }

    }
    if ($message == "ARMAR") {

        $getDevices = "Digite el código del vehículo que desea armar.\n\n*Vehiculos disponibles*\n\n";

        $listdevice = $tracarClassDb->listDevice("{$username}", "{$password}");
        $json = json_decode($listdevice);
        foreach ($json as $obj) {
            $getNomeVeiculo = $tracarClassDb->deviceName("{$username}", "{$password}", "{$obj->id}");
            $getDevices .= "Código *" . $obj->id . "*" . " - " . $getNomeVeiculo . "\n";
        }

        $msgRet = $tracarClassDb->limpar($getDevices);
        $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

        if ($send) {
            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '5' WHERE whatsapp='{$whatsapp}'");
        }

    }

    if ($message == "DESARMAR") {

        $getDevices = "Digite el código del vehículo que desea ABRIR LAS PUERTAS.\n\n*Vehiculos disponibles*\n\n";

        $listdevice = $tracarClassDb->listDevice("{$username}", "{$password}");
        $json = json_decode($listdevice);
        foreach ($json as $obj) {
            $getNomeVeiculo = $tracarClassDb->deviceName("{$username}", "{$password}", "{$obj->id}");
            $getDevices .= "Código *" . $obj->id . "*" . " - " . $getNomeVeiculo . "\n";
        }

        $msgRet = $tracarClassDb->limpar($getDevices);
        $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

        if ($send) {
            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '6' WHERE whatsapp='{$whatsapp}'");
        }

    }

    if ($dataUser['menu'] == "2") {

        if (!is_numeric($message)) {
            $msgRet = $tracarClassDb->limpar("Opción invalida  digite el codigo del vehiculo.");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");
            return false;
        }

        $send = $tracarClassDb->getPosition("{$username}", "{$password}", "{$message}");
        $json = json_decode($send);

        foreach ($json as $obj) {

            if ($obj->deviceId == $message) {

                $getNomeVeiculo = $tracarClassDb->deviceName("{$username}", "{$password}", "{$obj->deviceId }");

                $msg = "📍🔰 *Vehículo:* {$getNomeVeiculo}\n\n";

                $velocidade = round(($obj->speed * 1.852));
                $msg .= "*Velocidad:* {$velocidade} KM/H\n";

//                $dataHora = $tracarClassDb->formatDate($obj->deviceTime);
//                $msg .= "*Fecha/Hora:* {$dataHora}\n";

//              $msg .= "Localização: {$obj->address}";
                $msg .= "*Vista de la calle en 3D:* https://www.google.com/maps?q&layer=c&cbll={$obj->latitude},{$obj->longitude}\n";

                $msg .= "*Dirección:* {$obj->address}\n";

                $atributos = ($obj->atributos)->ignition;
                if($atributos == true){$resAtb = "SI";}else{$resAtb = "NO";}
                $msg .= "*ENCENDIDO:* {$resAtb}\n";

                $atributos = ($obj->atributos)->motion;
                if($atributos == true){$resMotion = "SI";}else{$resMotion = "NO";}
                $msg .= "*En movimiento:* {$resMotion}\n\n";

                $msg .= "*TECNOLOGIAS | NORRIS GPS CIA LTDA* Soluciones en rastreo satelital GPS, robot automático🌍🔍";

                $msgCompleta = $tracarClassDb->limpar($msg);

                $contact = $whatsapp;
                $long = $obj->latitude;
                $lat = $obj->longitude;
                $locationDesc = "";
                $send = $tracarClassDb->sendLocation("{$contact}", "{$long}", "{$lat}", "{$locationDesc}");
                $sendtext = $tracarClassDb->sendMsgUser("{$contact}","{$msgCompleta}");

                 $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0',device_id='' WHERE whatsapp='{$whatsapp}'");
                 return false;
            }
        }

        $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1' WHERE whatsapp='{$whatsapp}'");

    }
    if ($dataUser['menu'] == "3") {

        if ($dataUser['opt_menu'] == 0) {

            if (!is_numeric($message)) {
                $msgRet = $tracarClassDb->limpar("Opción inválida, digite el código del vehículo.");
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");
                return false;
            }

            $msgRet = $tracarClassDb->limpar("Usted desea ejecutar ese comando.\n\nConfirmar?\n\n *SI* / *NO*");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET opt_menu = '1', device_id = '{$message}' WHERE whatsapp='{$whatsapp}'");
            return false;
        }

        if ($message == "SI") {

            $cmd = "engineStop";
            $send = $tracarClassDb->sendCmd("{$username}", "{$password}", "{$dataUser['device_id']}", "{$cmd}");
            $json = json_decode($send);
            $deviceid = $json->deviceId;

            if ($deviceid = $dataUser['device_id']) {

                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Vehiculo *Bloqueado* con éxito");

                if ($send) {
                    $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0',device_id='' WHERE whatsapp='{$whatsapp}'");
                    return false;
                }

            }else {
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "*Vehículo sin localización o código inválido*");
                $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET opt_menu = '0' WHERE whatsapp='{$whatsapp}'");
                return false;
            }

            return false;
        }
        if ($message == "NO") {
            $msgRet = $tracarClassDb->limpar("Acción anulada exitosamente.\n\nEscriba *MENU* para  ver las opciones");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", $msgRet);
            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0', device_id = '' WHERE whatsapp='{$whatsapp}'");
            return false;
        }

        $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Opción inválida.\n\nEscriba *SI* o *NO*");
        $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET init = '1' WHERE whatsapp='{$whatsapp}'");
        return false;

    }

    if ($dataUser['menu'] == "4") {


        if ($dataUser['opt_menu'] == 0) {

            if (!is_numeric($message)) {
                $msgRet = $tracarClassDb->limpar("Opción inválida, digite el código del vehículo.");
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");
                return false;
            }

            $msgRet = $tracarClassDb->limpar("Usted desea ejecutar ese comando.\n\nConfirmar?\n\n *SI* / *NO*");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET opt_menu = '1', device_id = '{$message}' WHERE whatsapp='{$whatsapp}'");

            return false;
        }

        if ($message == "SI") {

            $cmd = "engineResume";
            

           /* $send = $tracarClassDb->sendCmd("{$username}", "{$password}", "{$message}", "{$cmd}");
            */
            
            $send = $tracarClassDb->sendCmd("{$username}", "{$password}", "{$dataUser['device_id']}", "{$cmd}");
            
            $json = json_decode($send);
           
            $deviceid = $json->deviceId;

            if ($deviceid = $dataUser['device_id']) {

                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Vehiculo *Desbloqueado* con éxito");

                if ($send) {
                    $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0',device_id='' WHERE whatsapp='{$whatsapp}'");
                    return false;
                }

            } else {
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Vehículo *Vehículo sin localización o código inválido*");
                $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET opt_menu = '0' WHERE whatsapp='{$whatsapp}'");
                return false;
            }

        }
        if ($message == "NO") {

            $msgRet = $tracarClassDb->limpar("Acción anulada exitosamente.\n\nEscriba *MENU* para  ver las opciones");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", $msgRet);
            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0', device_id = '' WHERE whatsapp='{$whatsapp}'");
            return false;
        }

        $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Opción inválida.\n\nDigite *SI* o *NO*");
        $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET init = '1' WHERE whatsapp='{$whatsapp}'");
        return false;
    }


    if ($dataUser['menu'] == "5") {

        if ($dataUser['opt_menu'] == 0) {

            if (!is_numeric($message)) {
                $msgRet = $tracarClassDb->limpar("Opción inválida, digite el código del vehículo.");
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");
                return false;
            }

            $msgRet = $tracarClassDb->limpar("Usted desea ejecutar ese comando.\n\nConfirmar?\n\n *SI* / *NO*");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET opt_menu = '1', device_id = '{$message}' WHERE whatsapp='{$whatsapp}'");
            return false;
        }

        if ($message == "SI") {

            $cmd = "alarmArm";
            
            $send = $tracarClassDb->sendCmd("{$username}", "{$password}", "{$dataUser['device_id']}", "{$cmd}");
            
            $json = json_decode($send);

            $deviceid = $json->deviceId;

            if ($deviceid = $dataUser['device_id']) {

                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Alarma *Armada*");
                
                if ($send) {
                    
                    $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0',device_id='' WHERE whatsapp='{$whatsapp}'");
                    return false;
                }

            }else {
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Vehículo *Vehículo sin localización o código inválido*");
                $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET opt_menu = '0' WHERE whatsapp='{$whatsapp}'");
                return false;
            }
            return false;
        }
        
        
        if ($message == "NO") {

            $msgRet = $tracarClassDb->limpar("Acción anulada exitosamente.\n\nEscriba *MENU* para  ver las opciones");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", $msgRet);
            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0', device_id = '' WHERE whatsapp='{$whatsapp}'");
            return false;
        }
        $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Opción inválida.\n\nEscriba *SI* o *NO*");
        $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET init = '1' WHERE whatsapp='{$whatsapp}'");
        return false;

    }
    if ($dataUser['menu'] == "6") {

        if ($dataUser['opt_menu'] == 0) {

            if (!is_numeric($message)) {
                $msgRet = $tracarClassDb->limpar("Opción inválida, digite el código del vehículo.");
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");
                return false;
            }

            $msgRet = $tracarClassDb->limpar("Usted Realmente desea ejecutar la acción.\nLos seguros de las puertas de su Vehículo serán abiertos.\n\nDesea Continuar?\n\n *SI* / *NO*");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgRet}");

            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET opt_menu = '1', device_id = '{$message}' WHERE whatsapp='{$whatsapp}'");
            return false;
        }

        if ($message == "SI") {

            $cmd = "alarmDisarm";

            $send = $tracarClassDb->sendCmd("{$username}", "{$password}", "{$dataUser['device_id']}", "{$cmd}");
            
            $json = json_decode($send);

            $deviceid = $json->deviceId;

            if ($deviceid = $dataUser['device_id']) {

                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Seguros del vehículo *ABIERTOS*");
                
             if ($send) {
                    
                    $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0',device_id='' WHERE whatsapp='{$whatsapp}'");
                    return false;
                }

            }else {
                $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Vehículo *Vehículo sin localización o código inválido*");
                
		$up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET opt_menu = '0' WHERE whatsapp='{$whatsapp}'");
                return false;
            }
            return false;
        }
        
        
        if ($message == "NO") {

            $msgRet = $tracarClassDb->limpar("Acción anulada exitosamente.\n\nEscriba *MENU* para  ver las opciones");
            $send = $tracarClassDb->sendMsgUser("{$whatsapp}", $msgRet);
            $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET menu = '1', opt_menu = '0', device_id = '' WHERE whatsapp='{$whatsapp}'");

        }
        $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "Opción inválida.\n\nEscriba *SI* o *NO*");
        $up_date_menu = $tracarClassDb->consulta("UPDATE ts_user SET init = '1' WHERE whatsapp='{$whatsapp}'");
        return false;

    }

} else {

    $newUser = $tracarClassDb->consulta("INSERT INTO `vhuwqima_sst`.`ts_user`(`whatsapp`, `email`, `password`, `menu`, `opt_menu`) VALUES ('{$whatsapp}', '', '', '0', '0')");
    $msgUser0 = "Hola, Bienvenido al ROBOT AUTOMÁTICO de Norris GPS. Por favor digite su usuario del sistema para continuar";
    $send = $tracarClassDb->sendMsgUser("{$whatsapp}", "{$msgUser0}");

}
