recording_reconcilation.php 9.26 KB
<?php namespace App\Console\Commands;

use Illuminate\Console\Command;
use DB;
use Config;

use App\Models\User;
use App\Models\Accesslog;

use App\Models\CRMCall;
use Schema;
use PDO;

use Illuminate\Database\Schema\Blueprint;

	class recording_reconcilation extends Command {

	/**
	* The console command name.
	*
	* @var string
	*/
	protected $signature = 'recording_reconcilation';

	/**
	* The console command description.
	*
	* @var string
	*/
	protected $description = 'recording_reconcilation';

	/**
	* Execute the console command.
	*
	* @return mixed
	*/
	public function handle()
	{
		$nowts=time();
		echo "\n".date('Y-m-d H:i:s')."\n";

		$logdate=strtotime(date('Y-m-d')." 00:00:00");
		//$logdate=strtotime("-1 days"." 00:00:00");
		$logtodate=strtotime(date('Y-m-d')." 23:59:59");
		//$logtodate=strtotime("-1 days"." 23:59:59");
		$server_ip=env('app_ip');
		$central_ip=env('central_ip');

		$reporthead=array("id","server_ip","call_start_date","call_start_time","call_duration","DNIS","ANI","call_id","call_direction","transfer_type","cti_var1","cti_var2","cti_var4","cti_var5","cti_var6","cti_var10","transfer_status","recording_filename");
     
        $ftp_server="10.3.177.14";
		$ftp_user_name="buzzworks";
		$ftp_user_pass="0per@ti0n@1";
		$conn_id = ftp_connect($ftp_server);

		// login with username and password
		$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
       

		$conn = array(
				'driver'    => 'mysql',
				'host'      => $central_ip,
				'database'  => env('DB_DATABASE', 'kstych_flexydial'),
				'username'  => env('DB_USERNAME', 'root'),
				'password'  => env('DB_PASSWORD', ''),
				'charset'   => 'utf8',
				'collation' => 'utf8_unicode_ci',
				'prefix'    => '',
				'options'   => array(
					PDO::ATTR_TIMEOUT => 5,
					),
				);
			Config::set("database.connections.conn", $conn);

			
		if(DB::connection("conn")->getDatabaseName())
		{
			//check maximum id saved in the table	
			$maxid=DB::connection("conn")->select(DB::raw("SELECT max(call_id) as maxid from recording_reconcilation where server_ip='$server_ip'"));
			if($maxid)$maxids=$maxid[0]->maxid;

			$server_type=DB::connection("conn")->select(DB::raw("SELECT type from server_details where server_ip='$server_ip'"));
			if($server_type)$servertype=$server_type[0]->type;
			
				
			echo "\n"."maxids---".$maxids."\n";
            echo "\n".date("Y-m-d H:i:s",$logdate)."\n";
            echo "\n".date("Y-m-d H:i:s",$logtodate)."\n"; 
            echo "\n"."servertype---".$servertype."\n";
			
			//query for calllog and recording
			/*$qlist=DB::table('crmcalls')->select('*')->where('id','>','$maxid')->where('created_at','>=',date("Y-m-d H:i:s",$logdate))->where('created_at','<=',date("Y-m-d H:i:s",$logtodate))->get();*/
			
			$qlist=DB::table('crmcalls_archive')->select('*')->whereIN('id',array('1014744','1014698','1014743','1014752','1014744','1014755','1014774','1014780','1014781','1014782','1014793'))->get();

			//create csv file
            $ii=1;
            $fileName = 'recording_Excel_'.date("Y-m-d",$logdate);
            $fileName=storage_path().'/recording_excel/'.$fileName .'.csv';
            $filesave = fopen($fileName, 'w');
            fputcsv($filesave, $reporthead);
			
            $userdatavalue="";
			foreach ($qlist as $qline) 
			{

				$fulldate=date("Y-m-d H:i:s",strtotime($qline->created_at)+330*60);
            	//$talktime=$qline->talkSec+$qline->recstartSec+$qline->recendSec;
                //$length=round(($qline->waitSec+$qline->callSec+$talktime+$qline->dispoSec)/1000,2);
                $length=round(($qline->talkSec+$qline->recstartSec+$qline->recendSec)/1000,0);
                $length=gmdate("H:i:s", $length);
                
                echo "\n"."startdate--".explode(" ",$fulldate)[0]."\n";
                echo "\n"."starttime--".explode(" ",$fulldate)[1]."\n";
                echo "\n"."call duration--". $length."\n";
                $userdatavalue="";

                $userdata=json_decode($qline->userdata,true);

                //print_r(array_values($userdata));
                if($userdata)
                {
                	if(array_values($userdata)!=""||array_values($userdata)!=null)
                	{
                		$userdatavalue=implode(",",array_values($userdata));
                	}
                	else
                	{
                		$userdatavalue="";
               		}
                }
                
                

                $call_direction="";
                $disposubdispo="";
                $transfer_status="";
                if($qline->type=='Manual' || $qline->type='Progressive')
                {
                	$call_direction="OB-".$qline->type;
                	$transfer_type='null';
                }
                else
                {
                	$call_direction=$qline->type;
                	$transfer_type='null';
                }
                $disposubdispo=$qline->userstatus.','.$qline->usersubstatus;
                

                $setstrarr=array();
                $setstrarr[]="server_ip='$server_ip'";
                $setstrarr[]="call_start_date='".explode(" ",$fulldate)[0]."'";
                $setstrarr[]="call_start_time='".explode(" ",$fulldate)[1]."'";
                $setstrarr[]="call_duration='$length'";
                $setstrarr[]="DNIS='$qline->did'";
                $setstrarr[]="ANI='$qline->number'";
                $setstrarr[]="call_id='$qline->id'";
                $setstrarr[]="call_direction='$call_direction'";
                $setstrarr[]="transfer_type='$transfer_type'";
                $setstrarr[]="cti_var1='$userdatavalue'";
                $setstrarr[]="cti_var2='$qline->client'";
                $setstrarr[]="cti_var4='$qline->crm_id'";
                $setstrarr[]="cti_var5='$qline->id'";
                $setstrarr[]="cti_var6='$servertype'";
                $setstrarr[]="cti_var10='$disposubdispo'";


				//send recording file to server
				$file = storage_path()."/app/drec/2017-09/".$qline->id.".gsm";//tobe uploaded
				//$remote_file = "/home/buzzworks/recording_test";
				$remote_file = "recording_test/".$server_ip."_".$qline->id.".wav";
				/*$out='wav';
				
				header("Content-type: audio/x-$out");
				header("Content-disposition: attachment; filename=\"".basename($file).".$out\"");
				$descriptorspec = array(0 => array("pipe", "r"),1 => array("pipe", "w"),2 => array("pipe", "w"));
				$process = proc_open( "/usr/bin/sox $file /tmp/".basename($file).".$out", $descriptorspec, $pipes );
				while( stream_get_contents( $pipes[1] ));
				header("Content-length: ".filesize("/tmp/".basename($file).".$out"));
				readfile("/tmp/".basename($file).".$out");unlink("/tmp/".basename($file).".$out");
				fclose( $pipes[1] );
				fclose( $pipes[2] );*/

				// set up basic connection
				
				
				if($login_result)
				{
					echo "Successfully connect";
					if (file_exists($file)) 
					{
                        echo "The file $file exists";
                        if(ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) 
					    {	
						  	echo "successfully uploaded $file\n";
						  	$setstrarr[]="transfer_status='success'";
						  	$setstrarr[]="recording_filename='$remote_file'";
						  	$success_fail="success";

						  	$setstr=implode(",",$setstrarr);
						  	DB::connection("conn")->insert(DB::raw("insert into recording_reconcilation set $setstr"));

						  	
						  	$data=array($ii++,$server_ip,explode(" ",$fulldate)[0],explode(" ",$fulldate)[1],$length,$qline->did,$qline->number,$qline->id,$call_direction,$transfer_type,$userdatavalue,$qline->client,$qline->crm_id,$qline->id,$servertype,$disposubdispo,$success_fail,$remote_file);
				  
				   
				   			fputcsv($filesave, $data);
						} 	
					    else 
					    {
						   	echo "There was a problem while uploading $file\n";
						   	$setstrarr[]="transfer_status='fail'";
						   	$success_fail="fail";
						}
                    } 
                    else
                    { 

                        echo "The file $file does not exist";
                        $setstrarr[]="transfer_status='file does not exist'";
                        $success_fail="file does not exist";
                    }
				}
				else
				{
					echo "not connect to server";
				}
			    // close the connection
			}
			
			echo "file save\n";
			fclose($filesave);
			ftp_close($conn_id);
			
			//send csv file to ftp server
			$conn_id_csv = ftp_connect($ftp_server);
			$remote_filecsv = "recording_excel/".$server_ip."_".date("Y-m-d",$logdate).".csv";
            $login_result_csv = ftp_login($conn_id_csv, $ftp_user_name, $ftp_user_pass);

            if($login_result_csv)
            {
           	    if (file_exists($fileName))
			    {
                   echo "The file $fileName exists\n";
                    if(ftp_put($conn_id_csv, $remote_filecsv, $fileName, FTP_BINARY))
                    {
                  	   echo "successfully uploaded $fileName\n";
                    }
                    else 
				    {
					   echo "There was a problem while uploading $fileName\n";
				    }
                }
                else
                {
                    echo "The file $fileName does not exist";
                }
            }
            else
            {
                echo "not connect to server";
            }
			

			ftp_close($conn_id_csv);
			DB::connection("conn")->disconnect();
		} 
	}
}

?>