Userlog_test.php 11.1 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 Userlog_test extends Command {

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

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

	/**
	 * Execute the console command.
	 *
	 * @return mixed
	 */
	public function handle()
	{
		$nowts=time();
		echo "\n".date('Y-m-d')."\n";
		
		$logdate=strtotime('-1 day');
		$tcol=0;$fieldsarr=array();$extrahdrarr=array();
		$server_ip=env('app_ip');
		$central_ip=env('central_ip');

		$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())
        {
            $serverclist=DB::connection("conn")->select(DB::raw("select id from server_details where server_ip='$server_ip'"));     
            $server_id=$serverclist[0]->id;
            if($server_id<10)
            {
            	$server_id="0".$server_id;
            }


			$i=0;


			$ulist=DB::select(DB::raw("select * from users WHERE 1"));
			foreach($ulist as $uline) 
			{
				$users[$uline->id] = $uline->username;
			}
			
			//echo "BeforeFetchQuery=".date('Y-m-d H:i:s');
			if($alist=DB::select(DB::raw("select * from userlogs WHERE  created_at>'".date("Y-m-d",$logdate)."' and created_at<'".date("Y-m-d",$logdate+24*60*60)."'")))
			{
				//echo "DataCount=".count($alist);
				//echo "AfterFetchQuery=".date('Y-m-d H:i:s');
                $shortinsert="";
                $countnumber=count($alist);
                $finalnumber=$countnumber/50;
			    $finalnumber=floor($finalnumber);

			    $iii=1;
                $kkk=1;
                
				foreach($alist as $aline) 
				{
					
					$i++;
					$global_id = $server_id . $i;
		            if($aline->enddate=='0000-00-00'|| $aline->endtime=='00:00:00' || $aline->durationsec=='0')
		            {
		                $enddatetime=date("Y-m-d H:i:s",strtotime($aline->updated_at));
		                $enddate=explode(" ",$enddatetime)[0];
		                $endtime=explode(" ",$enddatetime)[1];
						$durationsec=date("Y-m-d H:i:s",strtotime($endtime-$aline->starttime));
		            }
		            else
		            {
		                $enddate=$aline->enddate;
		                $endtime=$aline->endtime;
					    $durationsec=$aline->durationsec;
		            }

					$rowdata = array('server'=>$server_id,'server_ip'=>$server_ip,'global_id'=>$global_id,'id'=>$aline->id,'created_at'=>$aline->created_at,'updated_at'=>$aline->updated_at,'user_id'=>$aline->user_id,'user'=>$users[$aline->user_id],'startdate'=>$aline->startdate,'starttime'=>$aline->starttime,'enddate'=>$enddate,'endtime'=>$endtime,'durationsec'=>$durationsec,'data'=>$aline->data,'group'=>$aline->group,'login'=>'','dialnext'=>'','dialnext-agentbriefing'=>'','dialnext-downtime'=>'','dialnext-floorannouncements'=>'','dialnext-incoming'=>'','dialnext-lunchbreak'=>'','dialnext-manual'=>'','dialnext-notready'=>'','dialnext-qualityfeedback'=>'','dialnext-teabreak'=>'','dialnext-teammeeting'=>'','dialnext-utilitybreak'=>'','manual'=>'','manual-agentbriefing'=>'','manual-agentbriefing'=>'','manual-downtime'=>'','manual-floorannouncements'=>'','manual-incoming'=>'','manual-lunchbreak'=>'','manual-manual'=>'','manual-notready'=>'','manual-qualityfeedback'=>'','manual-teabreak'=>'','manual-teammeeting'=>'','manual-utilitybreak'=>'','paused'=>'','paused-agentbriefing'=>'','paused-downtime'=>'','paused-floorannouncements'=>'','paused-incoming'=>'','paused-lunchbreak'=>'','paused-manual'=>'','paused-notready'=>'','paused-qualityfeedback'=>'','paused-teabreak'=>'','paused-teammeeting'=>'','paused-utilitybreak'=>'','paused-autowrapup'=>'','paused-wrapup'=>'','progressive'=>'','progressive-agentbriefing'=>'','progressive-agentbriefing'=>'','progressive-downtime'=>'','progressive-floorannouncements'=>'','progressive-incoming'=>'','progressive-lunchbreak'=>'','progressive-manual'=>'','progressive-notready'=>'','progressive-qualityfeedback'=>'','progressive-teabreak'=>'','progressive-teammeeting'=>'','progressive-utilitybreak'=>'','ready-incoming'=>''
					);

					

					$data=json_decode($aline->data,true);
					foreach($data as $sipid=>$sdata)
					{
						$prets= isset($sdata[1]) ? $sdata[1] : (strtotime($aline->startdate . " " . $aline->starttime)+19600)*1000;
						if(isset($sdata['states']))
						{
							$previous="login";
							foreach($sdata['states'] as $fts=>$states)
							{
								if($states[0] != 1)
								{
									$rowdata[$previous]+=round(($fts-$prets)/1000,2);

									$previous = (trim($states[1]) != '') ? strtolower($states[0]."-".$states[1]) : strtolower($states[0]);
									$prets=$fts;
								}
							}
							$rowdata[$previous] += round(($sdata['ts']-$prets)/1000,2);
						}
					}
					$rowdata["login"] = $aline->durationsec;

					$rowdata['not-ready']=$rowdata['paused-agentbriefing']+$rowdata['paused-autowrapup']+$rowdata['paused-downtime']+$rowdata['paused-floorannouncements']+$rowdata['paused-lunchbreak']+$rowdata['paused-notready']+$rowdata['paused-qualityfeedback']+$rowdata['paused-teammeeting']+$rowdata['paused-teabreak']+$rowdata['paused-utilitybreak'];

                    
					$key_value = '';
					$shortinsert.="(";
					foreach($rowdata AS $key=>$value) 
					{
						if($key != 1)$key_value .= "`$key` = '$value', ";
						$shortinsert.=" '$value',";
					}

					$startTime=$aline->startdate." ".$aline->starttime;
					$endTime=$aline->enddate." ".$aline->endtime;

					$crmCalls=DB::select(DB::raw("select user_id,type,ts_Wait,ts_Call,ts_Talk,ts_Recstart,ts_Recend,ts_Dispo,ts_Close from crmcalls WHERE updated_at>='".$startTime."' and updated_at<'".$endTime."' and user_id='".$aline->user_id."'"));

					$ts_Wait=0;$ts_Call=0;$ts_Talk=0;$ts_Dispo=0;
					$progTs_Wait=0;$progTs_Call=0;$progTs_Talk=0;$progTs_Dispo=0;
					$manTs_Wait=0;$manTs_Call=0;$manTs_Talk=0;$manTs_Dispo=0;
					$inbTs_Wait=0;$inbTs_Call=0;$inbTs_Talk=0;$inbTs_Dispo=0;
					$tt_prog=0;$tt_man=0;$tt_inb=0;

					if($crmCalls!=null)
					{
						foreach($crmCalls as $crmCall)
						{
							$ts_Wait += round(($crmCall->ts_Call - $crmCall->ts_Wait)/1000,2);
							$ts_Call += round(($crmCall->ts_Talk - $crmCall->ts_Call)/1000,2);
							$ts_Talk += round(($crmCall->ts_Dispo - $crmCall->ts_Talk)/1000,2);
							$ts_Dispo += round(($crmCall->ts_Close - $crmCall->ts_Dispo)/1000,2);

							if($crmCall->type == 'Progressive')
							{
								$progTs_Wait += round(($crmCall->ts_Call - $crmCall->ts_Wait)/1000,2);
								$progTs_Call += round(($crmCall->ts_Talk - $crmCall->ts_Call)/1000,2);
								$progTs_Talk += round(($crmCall->ts_Dispo - $crmCall->ts_Talk)/1000,2);
								$progTs_Dispo += round(($crmCall->ts_Close - $crmCall->ts_Dispo)/1000,2);
							}

							if($crmCall->type == 'Manual')
							{
								$manTs_Wait += round(($crmCall->ts_Call - $crmCall->ts_Wait)/1000,2);
								$manTs_Call += round(($crmCall->ts_Talk - $crmCall->ts_Call)/1000,2);
								$manTs_Talk += round(($crmCall->ts_Dispo - $crmCall->ts_Talk)/1000,2);
								$manTs_Dispo += round(($crmCall->ts_Close - $crmCall->ts_Dispo)/1000,2);
							}

							if($crmCall->type == 'Inbound')
							{
								$inbTs_Wait += round(($crmCall->ts_Call - $crmCall->ts_Wait)/1000,2);
								$inbTs_Call += round(($crmCall->ts_Talk - $crmCall->ts_Call)/1000,2);
								$inbTs_Talk += round(($crmCall->ts_Dispo - $crmCall->ts_Talk)/1000,2);
								$inbTs_Dispo += round(($crmCall->ts_Close - $crmCall->ts_Dispo)/1000,2);
							}
						}
					}

					$tt_prog = $progTs_Wait + $progTs_Call + $progTs_Talk + $progTs_Dispo;
					$tt_man = $manTs_Wait + $manTs_Call + $manTs_Talk + $manTs_Dispo;
					$tt_inb = $inbTs_Wait + $inbTs_Call + $inbTs_Talk + $inbTs_Dispo;

					$prod_TOS = $ts_Wait + $ts_Call + $ts_Talk + $ts_Dispo;

					$key_value .= "`tt_prog` = '$tt_prog', ";
					$key_value .= "`tt_man` = '$tt_man', ";
					$key_value .= "`tt_inb` = '$tt_inb', ";

					$key_value .= "`ts_Wait` = '$ts_Wait', ";
					$key_value .= "`ts_Call` = '$ts_Call', ";
					$key_value .= "`ts_Talk` = '$ts_Talk', ";
					$key_value .= "`ts_Dispo` = '$ts_Dispo', ";
					$key_value .= "`progts_Wait` = '$progTs_Wait', ";
					$key_value .= "`progts_Call` = '$progTs_Call', ";
					$key_value .= "`progts_Talk` = '$progTs_Talk', ";
					$key_value .= "`progts_Dispo` = '$progTs_Dispo', ";
					$key_value .= "`mants_Wait` = '$manTs_Wait', ";
					$key_value .= "`mants_Call` = '$manTs_Call', ";
					$key_value .= "`mants_Talk` = '$manTs_Talk', ";
					$key_value .= "`mants_Dispo` = '$manTs_Dispo', ";
					$key_value .= "`incts_Wait` = '$inbTs_Wait', ";
					$key_value .= "`incts_Call` = '$inbTs_Call', ";
					$key_value .= "`incts_Talk` = '$inbTs_Talk', ";
					$key_value .= "`incts_Dispo` = '$inbTs_Dispo', ";
					$key_value .= "`prod_tos` = '$prod_TOS', ";

					$shortinsert.=" '$tt_prog','$tt_man','$tt_inb','$ts_Wait','$ts_Call','$ts_Talk','$ts_Dispo','$progTs_Wait','$progTs_Call','$progTs_Talk','$progTs_Dispo','$manTs_Wait','$manTs_Call','$manTs_Talk','$manTs_Dispo','$inbTs_Wait','$inbTs_Call','$inbTs_Talk','$inbTs_Dispo','$prod_TOS'),";

					$key_value = substr($key_value, 0, -2);

					$userlogsTable = "userlogs_test07092018";
					
					
					$columnvaluserlog="";
					foreach($rowdata AS $key=>$value) 
					{
						$columnvaluserlog.=$key.",";
					}
	                $columnvaluserlog=substr($columnvaluserlog,0,-1);
	                
	                if($kkk<=$finalnumber){
	                	if($iii%50==0){
	                		$shortinsert=substr($shortinsert,0,-1);
	                		echo "Prashant----";
	                		DB::connection("conn")->insert(DB::raw("INSERT INTO ".$userlogsTable." ( $columnvaluserlog,tt_prog,tt_man,tt_inb,ts_Wait,ts_Call,ts_Talk,ts_Dispo,progts_Wait,progts_Call,progts_Talk,progts_Dispo,mants_Wait,mants_Call,mants_Talk,mants_Dispo,incts_Wait,incts_Call,incts_Talk,incts_Dispo,prod_tos ) VALUES $shortinsert"));
					        $kkk++;
					        $shortinsert="";
	                	}
	                }else{
	                	DB::connection("conn")->insert(DB::raw("INSERT INTO ".$userlogsTable." SET $key_value"));
	                }
	                $iii++;
					//DB::connection("conn")->insert(DB::raw("INSERT INTO ".$userlogsTable." SET $key_value"));
					/*DB::connection("conn")->insert(DB::raw("INSERT INTO ".$userlogsTable." ( $columnvaluserlog,tt_prog,tt_man,tt_inb,ts_Wait,ts_Call,ts_Talk,ts_Dispo,progts_Wait,progts_Call,progts_Talk,progts_Dispo,mants_Wait,mants_Call,mants_Talk,mants_Dispo,
					incts_Wait,incts_Call,incts_Talk,incts_Dispo,prod_tos ) VALUES $shortinsert"));*/

					
				}
				//$userlogsTable = "userlogs_".date("d_m_Y",$logdate);
				
			}
			
		}
		DB::connection("conn")->disconnect();
	}
}