<?php
namespace App\Http\Controllers;
use App\Model\Master\RinglessVoiceMail;
use App\Model\Master\RvmDomainList;
use App\Model\Master\RvmCdrLog;

use App\Model\Master\Client;
use App\Jobs\RinglessVoicemailDrop;
use DateTime;
use DateTimeZone;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class RinglessVMControllerTestOne extends Controller
{
    public function index(Request $request)
    {

        $host ='44.215.233.38';
        $username = 'admin1';
        $secret = 'mycode';


        $host = $host; //env('ASTERISK_AMI_HOST');
            $port = '5038'; 
            $username = $username; //'admin1';
            $secret = $secret; //'mycode';
            $extension = 's';
            $priority = 1;

          //Local/14152866901-+14152753099-voice_1760984946.wav-bc6c-5893-22-53-805350@rvm87

            $phone = '1234567890';
            $cli='+14152753099';
            $voicemail_file_name='voice_1760984946.wav';
            $apiToken='bc6c';
            $user_id='5893';
            $rvm_cdr_log_id='22';
            $sip_gateway_id='53';
            $rvm_domain_id='805350';



            //test-ringless-main
            $originateCommand = "Action: Originate\r\n";
             $originateCommand .= "Channel: Local/$phone-$cli-$voicemail_file_name-$apiToken-$user_id-$rvm_domain_id-$sip_gateway_id-$rvm_cdr_log_id@rvm87\r\n";
            $originateCommand .= "Exten: $phone\r\n";
            //$originateCommand .= "Exten: $phone-$cli-$voicemail_file_name-$apiToken-$user_id-$rvm_domain_id-$sip_gateway_id-$rvm_cdr_log_id\r\n";
            $originateCommand .= "Context: voice-drop-campaign\r\n";
            $originateCommand .= "Priority: $priority\r\n";
            $originateCommand .= "Timeout: 10000\r\n"; // Set the timeout in milliseconds
            $originateCommand .= "Async: true\r\n";
            $originateCommand .= "ActionID: rvm_" . uniqid() . "\r\n\r\n";
            
            $socket = @fsockopen($host, $port, $errno, $errstr, 5);
            if (!$socket) {
                die("❌ Connection failed: $errstr ($errno)\n");
            }

            fputs($socket, "Action: Login\r\n");
fputs($socket, "Username: $username\r\n");
fputs($socket, "Secret: $secret\r\n\r\n");

// Send originate command
fputs($socket, $originateCommand);
usleep(200000); // small wait to ensure Asterisk receives it

// Logoff
fputs($socket, "Action: Logoff\r\n\r\n");
fclose($socket);

echo $originateCommand;



        die;
        // Set your Asterisk AMI credentials
            $host = env('ASTERISK_AMI_HOST');

            $port = '5038'; // Default AMI port
            $username = 'admin1';
            $secret = 'mycode';

            $extension = 's';
            $priority = 1;


            $phone = '19024412385';//$rvm_data->phone;
            $cli   =   '19892714355';//$rvm_data->cli;
            $voicemail_file_name = "ep_1_voice_1712235109.wav";//$rvm_data->voicemail_file_name;
            $apiToken = "09eabc80";//$rvm_data->apiToken;
            $user_id = 1762;//$rvm_data->user_id;
            $voicemail_id = "3_10559";//$rvm_data->voicemail_id;
            $rvm_domain_id = 5;//$rvm_data->rvm_domain_id;
            $rvm_cdr_log_id = 44879;//$rvm_cdr->id;
            $sip_gateway_id = 12;//$rvm_data->sip_gateway_id;





            $originateCommand = "Action: Originate\r\n";
           // $originateCommand .= "Channel: Local/$phone-$cli-$voicemail_file_name-$apiToken-$user_id-$voicemail_id-$rvm_domain_id-$sip_gateway_id-$rvm_cdr_log_id@start-voice-testing\r\n";
//            $originateCommand .= "Channel: Local/$phone-$cli-$voicemail_file_name-$apiToken-$user_id-$voicemail_id-$rvm_domain_id-$rvm_cdr_log_id@start-voice\r\n";

            $originateCommand .= "Channel: Local/$phone-$cli-$voicemail_file_name-$apiToken-$user_id-$rvm_domain_id-$sip_gateway_id-$rvm_cdr_log_id@start-voice-testing\r\n";

            
            $originateCommand .= "Exten: $phone-$phone\r\n";
            $originateCommand .= "Context: voice-drop-campaign\r\n";
            $originateCommand .= "Priority: $priority\r\n";
            $originateCommand .= "Timeout: 30000\r\n"; // Set the timeout in milliseconds

            // Create a socket connection to the Asterisk AMI
            
            $socket = fsockopen($host, $port, $errno, $errstr);

            if (!$socket) {
                die("Error connecting to Asterisk AMI: $errstr ($errno)\n");
            }

            // Login to the AMI
            fputs($socket, "Action: Login\r\n");
            fputs($socket, "Username: $username\r\n");
            fputs($socket, "Secret: $secret\r\n\r\n");
        
            // Send the originate command
            fputs($socket, $originateCommand . "\r\n");

            //Read and process the response

            while (!feof($socket)) {
                $response = fgets($socket);
                //echo $response; // You can handle the AMI response as needed

                sleep(2);
            }

            // Log out from the AMI
            fputs($socket, "Action: Logoff\r\n\r\n");
            // Close the socket connection

            fclose($socket);
                
                $this->info("RvmDropBySipNameCron timezone matched rvm_cdr_log table id ({$rvm_cdr->id})");
}
}
