<?php

namespace App\Http\Controllers;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\DB;

use Illuminate\Http\Request;

class RespostaController extends Controller
{
    public function gerarRespostas(Request $request)
    {
        $mensagem = $request->input('mensagem');
        $tipoDispositivo = $request->input('tipoDispositivo');

        DB::table('TBL_MENSAGENS')->insert([
            'mensagem' =>$mensagem ,
            'tipo_dispositivo' => $tipoDispositivo,
        ]);
        $mensagem = $request->input('mensagem');
        $accessToken = 'W6VEJJKNSJZKRQDV47XPXIVPDKEYRQSZ';
        $url = 'https://api.wit.ai/message?v=20231031&q=' . urlencode($mensagem);
       
        $client = new Client();
        $response = $client->request('GET', $url, [
            'headers' => [
                'Authorization' => 'Bearer ' . $accessToken,
            ]
        ]);
        $resposta = $response->getBody()->getContents();
        $data = json_decode($resposta, true);


        $entities = $data['entities']['wit_servico:wit_servico'][0]['value'] ?? null;

        $intent = $data['intents'][0]['name'] ?? null;
        $mensagem_esclarecimento ='';

        if ($entities && $intent) {
            // Se ambos existirem, execute a consulta na tabela TBL_SERVICOS
            $result = DB::select('select * from TBL_SERVICOS where keyboard = ? and intent = ?', [$entities, $intent]);

            if (!empty($result)) {
                // Se houver resultados, retorne a descrição
                $descricao = $result[0]->description;
                $mensagem_esclarecimento = $descricao . "\nPor favor, informe caso necessite de informação adicional.";
            } else {
                if ($intent === "compra") {
                    $client = new Client([
                        'verify' => false, // Isso desabilita a verificação SSL
                    ]);
                   try {
                        $responseAPI = $client->request('GET', 'https://kyelaapp.kyetocorp.com/crosssell');
                        $respostaAPI = $responseAPI->getBody()->getContents();
                        $data = json_decode($respostaAPI, true);

                        $produtos = explode(';', $data['produtos']);

                        // Inicializa a mensagem com um aviso
                        $mensagem_esclarecimento = 'Ainda estamos em aprendizado, mas temos esses serviços para você:';
                    
                        // Adiciona cada produto à mensagem
                        foreach ($produtos as $produto) {
                            $mensagem_esclarecimento .= "\n\n*" . $produto;
                        }
                        
                        
                    } catch (\Exception $e) {
                        // Em caso de falha na chamada da API, configure uma mensagem alternativa
                        $mensagem_esclarecimento = 'Desculpe, houve um problema ao processar sua solicitação de compra.';
                    }
                 }else{
                        // Se não houver resultados, a resposta será que não foi encontrado
                        $mensagem_esclarecimento ='Não foi encontrado um serviço correspondente.'.$intent;

                 }
            }
        } elseif (empty($entities) && $intent) {
            if ($intent === "greetings") {
                // Se a intent for "greetings", cumprimente de acordo com a hora do dia
                $hora = date("H");
                if ($hora >= 5 && $hora < 12) {
                    $cumprimento = "Bom dia";
                } elseif ($hora >= 12 && $hora < 18) {
                    $cumprimento = "Boa tarde";
                } else {
                    $cumprimento = "Boa noite";
                }
                $mensagem_esclarecimento = $cumprimento . '! Como podemos lhe ajudar hoje?';
            }elseif ($intent === "thanks") {
                $mensagem_esclarecimento =  'Agradecemos Por nos contactar tenha um execelente dia, estamos aqui para ajudar sempre que precisar.';
            }elseif ($intent === "compra") {
$client = new Client([
                        'verify' => false, // Isso desabilita a verificação SSL
                    ]);
                   try {
                        $responseAPI = $client->request('GET', 'https://kyelaapp.kyetocorp.com/crosssell');
                        $respostaAPI = $responseAPI->getBody()->getContents();
                        $data = json_decode($respostaAPI, true);

                        $produtos = explode(';', $data['produtos']);

                        // Inicializa a mensagem com um aviso
                        $mensagem_esclarecimento = 'Ainda estamos em aprendizado, mas temos esses serviços para você:';
                    
                        // Adiciona cada produto à mensagem
                        foreach ($produtos as $produto) {
                            $mensagem_esclarecimento .= "\n\n*" . $produto;
                        }
                        
                        
                    } catch (\Exception $e) {
                        // Em caso de falha na chamada da API, configure uma mensagem alternativa
                        $mensagem_esclarecimento = 'Desculpe, houve um problema ao processar sua solicitação de compra.';
                    }            }elseif ($intent === "self") {
                $mensagem_esclarecimento =  "🌟 Olá! Eu sou a Lyela, o chatbot inteligente da Unitel! Estou aqui para tornar sua experiência mais fácil e eficiente ao lidar com serviços, recomendações e informações sobre produtos.\n\n 🛠️ Meu objetivo é facilitar a ativação de serviços, fornecer recomendações personalizadas sobre os produtos que a Unitel oferece e ajudar a entender mais sobre esses serviços. Seja para ativar um novo serviço, receber recomendações ou simplesmente saber mais sobre o que a Unitel tem para oferecer, estou aqui para tornar esse processo simples e direto.
\n \n✨ Além disso, estou sempre atualizado para apresentar os novos serviços que a Unitel disponibiliza, para que você possa estar por dentro de todas as novidades e benefícios que a empresa traz para você. \n\n Estou aqui para ajudar, então sinta-se à vontade para me perguntar qualquer coisa relacionada aos serviços ou produtos da Unitel! 😊📱"; 
} else {
                // Se a intent for diferente de "greetings"
                $mensagem_esclarecimento = 'Eu sei que você quer fazer ' . $intent . ', mas pode esclarecer sua mensagem?';
            }
        } else {
            $mensagem_esclarecimento = 'Desculpe, não entendi o que você quis dizer.' ;
        }

        return response()->json(['resposta' => $mensagem_esclarecimento]);

        
            
    }
}
