test_Userlog_data.php 9.79 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_data extends Command {

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

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

	/**
	 * Execute the console command.
	 *
	 * @return mixed
	 */
	public function handle()

	{
	$nowts=time();
	echo "\n".date('Y-m-d')."\n";

		$offline=array();
		$arr=Config::get("app.hdfcnodes");
		$logdate=strtotime('0 day');

		$slist=DB::select(DB::raw("select * from server_details where id<='10'"));
		$server_ip='';
		$std_code='';
		$conn='';
		$userlogsTable = "userlogs_".date("d_m_Y",$logdate);
		foreach($slist as $sline)
		{
			$tcol=0;$fieldsarr=array();$extrahdrarr=array();
			$server_ip=$sline->server_ip;	
			$server_id=$sline->id;
			$std_code=$sline->std_code;

			$conn = array(
				'driver'    => 'mysql',
				'host'      => $server_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())
			{
				echo ",".$server_ip;


				for($j=-36;$j<=-6;$j++){
					$logdate=strtotime($j ."day");

					$i=0;

					$ulist=DB::connection("conn")->select(DB::raw("select * from users WHERE 1"));
					foreach($ulist as $uline) {
						$users[$uline->id] = $uline->username;
					}

					if($alist=DB::connection("conn")->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)."'"))){

	//if($alist=DB::connection("conn")->select(DB::raw("select * from userlogs WHERE  created_at>'2017-09-01' and created_at<'2017-10-01'"))){

						foreach($alist as $aline) {

							$i++;
							$global_id = $server_id . $i;

							$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'=>$aline->enddate,'endtime'=>$aline->endtime,
								'durationsec'=>$aline->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 = '';
							foreach($rowdata AS $key=>$value) {
								if($key != 1)
									$key_value .= "`$key` = '$value', ";
							}

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

							$crmCalls=DB::connection("conn")->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;

							$tt_prog = '$tt_prog';
							$tt_man = '$tt_man';
							$tt_inb = '$tt_inb';
							$ts_Wait = '$ts_Wait';
							$ts_Call = '$ts_Call';
							$ts_Talk = '$ts_Talk';
							$ts_Dispo = '$ts_Dispo';
							$progts_Wait = '$progTs_Wait';
							$progts_Call = '$progTs_Call';
							$progts_Talk = '$progTs_Talk';
							$progts_Dispo = '$progTs_Dispo';
							$mants_Wait = '$manTs_Wait';
							$mants_Call = '$manTs_Call';
							$mants_Talk = '$manTs_Talk';
							$mants_Dispo = '$manTs_Dispo';
							$incts_Wait = '$inbTs_Wait';
							$incts_Call = '$inbTs_Call';
							$incts_Talk = '$inbTs_Talk';
							$incts_Dispo = '$inbTs_Dispo';
							$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', '$incts_Wait', '$incts_Call', '$incts_Talk', '$incts_Dispo', '$prod_tos'),";

							if($kkk<=$finalnumber){
								if($iii%50==0){

									DB::connection("conn")->insert(DB::raw("INSERT INTO `$userlogsTable` ('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++;
								}	
							}else{
								DB::connection("conn")->insert(DB::raw("insert into $userlogsTable set tt_prog='$tt_prog', tt_man='$tt_man', tt_inb='$tt_inb', ts_Wait='$ts_Wait', ts_Call='$ts_Call', ts_Talk='$ts_Talk', ts_Dispo='$ts_Dispo', progts_Wait='$progts_Wait', progts_Call='$progts_Call', progts_Talk='$progts_Talk', progts_Dispo='$progts_Dispo', mants_Wait='$mants_Wait', mants_Call='$mants_Call', mants_Talk='$mants_Talk', mants_Dispo='$mants_Dispo', incts_Wait='$incts_Wait', incts_Call='$incts_Call', incts_Talk='$incts_Talk', incts_Dispo='$incts_Dispo', prod_tos='$prod_tos'"));

							}
							if($iii%50==0){
								$shortinsert="";
							}			
							$iii++;

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

				
			}		
		}		
	}
}