KstychDaily.php 5.58 KB
<?php namespace App\Console\Commands;

use Illuminate\Console\Command;
use Mail;
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 KstychDaily extends Command {

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

	/**
	 * The console command description.
	 *
	 * @var string
	 */
	protected $description = 'App Main Daily Task';

	/**
	 * Execute the console command.
	 *
	 * @return mixed
	 */
	public function handle()
	{
		$nowts=time();
		Accesslog::where('endtime','<',date("Y-m-d H:i:s",$nowts-10*24*60*60))->update(array('postdata'=>'','queries'=>''));
		Accesslog::where('endtime','<',date("Y-m-d H:i:s",$nowts-30*24*60*60))->delete();
		
		
		
		if(env('app_ip')=="10.3.177.14")
		{
			
			if(!Schema::hasTable('calllog_report'))
			{
				Schema::create('calllog_report', function(Blueprint $table)
				{
					$table->string('server', 100);
					$table->dateTime('start');
					$table->integer('length');
					$table->string('user',100);
					$table->string('name',100);
					$table->string('dispo', 200);
					$table->string('subdispo', 200);
					$table->dateTime('callback');
					$table->string('number', 100);
					$table->string('clientcode', 100);
					$table->string('currentstatus', 100);
					$table->string('legalstatus', 100);
					$table->string('client', 200);
					$table->string('department', 200);
					$table->string('state', 50);
					$table->string('hsource', 100);
					$table->string('type', 50);
					$table->string('statuscode', 20);
					$table->string('status', 100);
					$table->string('statusstr', 100);
					$table->integer('dialline');
					$table->string('did', 50);
					$table->bigInteger('waitsec');
					$table->bigInteger('callsec');
					$table->bigInteger('talksec');
					$table->bigInteger('disposec');
					$table->string('remarks', 500);
					$table->string('userdata',1000);
				});
			}
		

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


			$tcol=0;$fieldsarr=array();$extrahdrarr=array();

		

			$ii=1;$ci=0;
			foreach($arr as $server=>$serverline)
			{
				$ci++;
				$conn = array(
						'driver'    => 'mysql',
						'host'      => $server,
						'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$ci", $conn);

				try
				{
					DB::connection("conn$ci")->getDatabaseName();
					

					$alist=CRMCall::on("conn$ci")->where('created_at','>=',date("Y-m-d H:i:s",$logdate))->where('created_at','<=',date("Y-m-d H:i:s",$logdate+24*60*60))->get();
					$userarr=array();
					foreach($alist as $aline)
					{
						$setstrarr=array();
							
							
						$clientcode="";$currentstatus="";$legalstatus="";
						if($aline->crm_id>0)
						{
							$user=DB::connection("conn$ci")->select(DB::raw("select id,clientcode,currentstatus,legalstatus from records where id='".$aline->crm_id."' limit 1;"));
							if(isset($user[0]))
							{
								$clientcode=$user[0]->clientcode;
								$currentstatus=$user[0]->currentstatus;
								$legalstatus=$user[0]->legalstatus;
							}
						}
						$tpostdata=json_decode($aline->data,true);
						$fulldate=date("Y-m-d H:i:s",strtotime($aline->created_at)+330*60);
						$talktime=$aline->talkSec+$aline->recstartSec+$aline->recendSec;
						$length=round(($aline->waitSec+$aline->callSec+$talktime+$aline->dispoSec)/1000,2);
						
						if(!isset($userarr[$aline->user_id])&&$aline->user_id>0)$userarr[$aline->user_id]=User::on("conn$ci")->find($aline->user_id);
						$dispname="";if(isset($userarr[$aline->user_id]))$dispname=$userarr[$aline->user_id]->dispname();
						$username="";if(isset($userarr[$aline->user_id]))$username=$userarr[$aline->user_id]->username;
						
						$setstrarr[]="server='$server'";
						$setstrarr[]="start='$fulldate'";
						$setstrarr[]="length='$length'";
						$setstrarr[]="user='$username'";
						$setstrarr[]="name='$dispname'";
						$setstrarr[]="dispo='$aline->userstatus'";
						$setstrarr[]="subdispo='$aline->usersubstatus'";
						$setstrarr[]="callback='$aline->usercallback'";
						
						$setstrarr[]="number='$aline->number'";
						$setstrarr[]="clientcode='$clientcode'";
						$setstrarr[]="currentstatus='$currentstatus'";
						$setstrarr[]="legalstatus='$legalstatus'";
						$setstrarr[]="client='$aline->client'";
						$setstrarr[]="department='$aline->department'";
						$setstrarr[]="state='$aline->state'";
						$setstrarr[]="hsource='$aline->hsource'";
						
						$setstrarr[]="type='$aline->type'";
						$setstrarr[]="status='$aline->status'";
						$setstrarr[]="statuscode='$aline->statuscode'";
						$setstrarr[]="statusstr='$aline->substatus'";
						$setstrarr[]="dialline='$aline->dialline_id'";
						$setstrarr[]="did='$aline->did'";
						$setstrarr[]="waitsec='".round($aline->waitSec/1000,2)."'";
						$setstrarr[]="callsec='".round($aline->callSec/1000,2)."'";
						$setstrarr[]="talksec='".round($talktime/1000,2)."'";
						$setstrarr[]="disposec='".round($aline->dispoSec/1000,2)."'";
						$setstrarr[]="remarks='$aline->userremarks'";
						$setstrarr[]="userdata='$aline->userdata'";

						$setstr=implode(",",$setstrarr);
						DB::insert(DB::raw("insert into calllog_report set $setstr"));
					}

				}
				catch(Exception $e)
				{
					$offline[]=$server;
				}
			}
	
		}

		
		
	}

}