CampaignController.php 12.4 KB
<?php namespace App\Http\Controllers;

use DB;
use Auth;
use Input;
use App\Models\Campaign;
use App\Services\FormBuilder;
use Illuminate\Http\Request;
use Response;
use App\Models\User;

class CampaignController extends Controller {

	public function __construct()
	{
		$this->middleware('auth');
		$this->middleware('module_access');
	}

	public function index()
	{
		$data['campaignList'] = Campaign::where('mtype',"=","company")->orderBy('mkey')->get();
		$dashboarduser=Auth::user();
        if($dashboarduser->usertype != 'Admin'){
        	$allusers=User::where(function ($query)  use($dashboarduser) {
        	$query->where('supervisor','=',$dashboarduser->username)
        	->orWhere('lteam2','=',$dashboarduser->username)
        	->orWhere('lteam','=',$dashboarduser->username);
    		})->get();
    	}
    	else
    	{
      		$allusers=DB::table('users')->select('*')->where('status','=','Active')->get();
    	}
	    foreach($allusers as $alluser)
	    {
	      
			$username[] = $alluser->username;
	    }
		// dd(count($allusers));
		for ($i=0; $i <count($allusers) ; $i++) { 
		     $assignusertocampign[$i]['username'] = $allusers[$i]->username; 
		     $assignusertocampign[$i]['clients'] = $allusers[$i]->clients; 
		}
		//dd($assignusertocampign);
	    //$data['client'] = $client;
	    if(isset($username))$data['username'] = $username;
		return view("layout.module.campaign.index",$data);
	}
	
	public function create()
	{
	}
	
	public function store(Request $request)
	{
		$action = Input::get("action");

		// if($action=="createCampaign")
		// {
		// 	$this->validate($request,[
		// 		'campaignName' => 'required|alpha_dash',
		// 	]);

		// 	$campaignName = Input::get("campaignName");

		// 	if($campaignName != ""){
		// 		Campaign::insert(["mkey"=>$campaignName,"mtype"=>"company"]);
		// 		$data['campaignDetails'] = Campaign::where("mtype","=","company")->where("mkey","=",$campaignName)->first();
		// 		return view("layout.module.campaign.campaign",$data);
		// 	}else{
		// 		return "<script>simpleNotification('error','topRight','Campaign name should not be blank.');</script><br/><p class='text-danger text-center'>Campaign name should not be blank.</p>";
		// 	}
		// }

		// if($action=="buildForm")
		// {
		// 	$rawData = Input::get("rawData");
		// 	$fb = new FormBuilder();
		// 	$output = $fb->buildForm($rawData);
		// 	return $output;
		// }

		// if($action=="dataUpload")
		// {
		// 	return view("layout.module.campaign.campaignTabData");
		// }
	}

	public function show($id)
	{

		if($id=="show")
		{
			$campaign = Input::get("campaign");
			if($campaign != ""){
				//this  condition for getting all campaign data
				if($campaign == "all")
				{
					$data['campaignDetails']['mkey'] ="All"; 
					
				    $data['dataCountByStatus'] = DB::table("records")->select(DB::Raw('status, count(*) as recordCount'))->groupBy('status')->get();
				    $data['dataCountByDisposition'] = DB::table("records")->select(DB::Raw('dialer_status, count(*) as recordCount'))->groupBy('dialer_status')->get();
				    $data['queryLogs'] = DB::table("campaign_query")->get();
				    // $data['dataList'] = DB::table("records")->select(DB::Raw('list_id, count(*) as recordCount'))->where("client","=",$campaign)->groupBy('list_id')->get();
				    $userassignedcampign=DB::table('users')->select('username','clients')->whereRaw('                     FIND_IN_SET(?,clients)', [$campaign])->get();
				    return view("layout.module.campaign.campaign",$data,compact('userassignedcampign'));

				}else{
					$data['campaignDetails'] = Campaign::where("mtype","=","company")->where("mkey","=",$campaign)->first();
					$data['dataCountByStatus'] = DB::table("records")->select(DB::Raw('status, count(*) as recordCount'))->where("client","=",$campaign)->groupBy('status')->get();
				$data['dataCountByDisposition'] = DB::table("records")->select(DB::Raw('dialer_status, count(*) as recordCount'))->where("client","=",$campaign)->groupBy('dialer_status')->get();
				$data['queryLogs'] = DB::table("campaign_query")->where('campaign', '=', $campaign)->get();
				// $data['dataList'] = DB::table("records")->select(DB::Raw('list_id, count(*) as recordCount'))->where("client","=",$campaign)->groupBy('list_id')->get();
				$userassignedcampign=DB::table('users')->select('username','clients')->whereRaw('                     FIND_IN_SET(?,clients)', [$campaign])->get();
				return view("layout.module.campaign.campaign",$data,compact('userassignedcampign'));
				}
				
			}else{
				return "<script>simpleNotification('error','topRight','Campaign name should not be blank.');</script><br/><p class='text-danger text-center'>Campaign name should not be blank.</p>";
			}
		}

		if($id=="query")
		{
			$campaign = Input::get("campaign");
			$querySelect = Input::get("querySelect");
			$queryConditions = Input::get("queryConditions");
			if($queryConditions){
				$queryConditions = str_replace('&quot;', "'", $queryConditions);
				$queryConditions = str_replace('&#039;', "'", $queryConditions);
			}else{
				$queryConditions = '1';
			}
			$queryLimit = Input::get("queryLimit");
			$queryOffset = Input::get("queryOffset");
			$checkedValue = Input::get("checkedValue");
			$fields = explode(",", $querySelect);

			$i = 1; $output = '';
			try {
				

				if($campaign=="All")
				{
                    $selQuery = "SELECT $querySelect FROM records WHERE $queryConditions LIMIT $queryLimit OFFSET $queryOffset";
				    $sqlQuery = DB::select($selQuery);
				}else
				{
					$selQuery = "SELECT $querySelect FROM records WHERE client = '$campaign' AND $queryConditions LIMIT $queryLimit OFFSET $queryOffset";
				    $sqlQuery = DB::select($selQuery);
				}

				if($checkedValue=="on")
				{
					$queryExist = DB::table('campaign_query')->where('query','=',$selQuery)->where('campaign', '=', $campaign)->select('id')->first();

					if(empty($queryExist))
					{
						DB::table('campaign_query')->insert(['campaign'=>$campaign, 'query'=>$selQuery, 'select_col'=>$querySelect,'where_cond'=>"client = '$campaign' AND $queryConditions"]);
					}
				}

			} catch(\Illuminate\Database\QueryException $ex){ 
				$output .= "<p class='text-danger'>".$ex->getMessage()."</p>";
				return $output; 
			}
			
			if(count($sqlQuery)){
				$output .= '<div style="overflow-x:auto;"><table class="table table-bordered"><thead><tr><th class="text-center">#</th>';
				foreach ($fields as $key) {
					$output .= '<th class="text-center">'.trim($key).'</th>';
				}
				$output .= "</tr></thed><tbody>";
				foreach($sqlQuery as $row){
					$output .= '<tr><th class="text-center">'.$i.'</th>';
					foreach ($fields as $key) {
						$output .= '<td>'.trim($row->$key).'</td>';
					}
					$output .= "</tr>";
					$i++;
				}
			}else{
				$output .= '<h5 class="text-danger"><i class="fa fa-exclamation-circle"></i> No Result!</h5>';
			}
			$output .= '</tbody></table></div>';
			return $output;
		}

		if($id=="fquery")
		{
			$output = '';$i = 1;
			$campaign = Input::get("campaign");
			
			$id = Input::get("id");

			$queryTxt = DB::table('campaign_query')->where('id','=', $id)->select('query','select_col')->first();

			$fields = explode(",", $queryTxt->select_col);

			$sqlQuery = DB::select($queryTxt->query);
			
			if(count($sqlQuery)){
				$output .= '<div style="overflow-x:auto;"><table class="table table-bordered"><thead><tr><th class="text-center">#</th>';
				foreach ($fields as $key) {
					$output .= '<th class="text-center">'.trim($key).'</th>';
				}
				$output .= "</tr></thed><tbody>";
				foreach($sqlQuery as $row){
					$output .= '<tr><th class="text-center">'.$i.'</th>';
					foreach ($fields as $key) {
						$output .= '<td>'.trim($row->$key).'</td>';
					}
					$output .= "</tr>";
					$i++;
				}
			}else{
				$output .= '<h5 class="text-danger"><i class="fa fa-exclamation-circle"></i> No Result!</h5>';
			}

			return $output;
		}

		if($id=="delete")
		{
			$id = Input::get("id");
			
			DB::table('campaign_query')->where('id','=', $id)->delete();

			return;
		}

		if($id=="download")
		{
			$campaign = Input::get("campaign");
			$querySelect = Input::get("querySelect");
			$queryConditions = Input::get("queryConditions");
			if($queryConditions){
				$queryConditions = str_replace('&quot;', "'", $queryConditions);
				$queryConditions = str_replace('&#039;', "'", $queryConditions);
			}else{
				$queryConditions = '1';
			}
			$queryLimit = Input::get("queryLimit");
			$queryOffset = Input::get("queryOffset");
			
			try {
				if($campaign=="All"){
                    $selQuery = "SELECT $querySelect FROM records WHERE $queryConditions LIMIT $queryLimit OFFSET $queryOffset";
				    $sqlQuery = DB::select($selQuery);
				}else{
					$selQuery = "SELECT $querySelect FROM records WHERE client = '$campaign' AND $queryConditions LIMIT $queryLimit OFFSET $queryOffset";
				    $sqlQuery = DB::select($selQuery);
				}
			} catch(\Illuminate\Database\QueryException $ex){ 
				$output .= "<p class='text-danger'>".$ex->getMessage()."</p>";
				return $output; 
			}

			$data['fieldsarr'] = explode(",", $querySelect);
			$data['alist'] = $sqlQuery;

			return view("layout.module.campaign.download",$data);
		}

		if($id=="getDataFormat")
		{
			return view("layout.module.campaign.campaignTabData");
		}

		if($id=="addCurrQueue")
		{
			$campQryId = Input::get("radioValue");

			DB::table('campaign_query')->where('id','!=', $campQryId)->update(['current_queue'=>'']);
			DB::table('campaign_query')->where('id','=', $campQryId)->update(['current_queue'=>'selected']);

			return Response::make("<script>simpleNotification('success','topRight','Query Logic added successfully!');</script>");
		}
		if($id=="assigncampaign")
		{
            $agentsNewArr = array();

    		$agents = Input::get('agents');
            $campaign = Input::get("selectCampaignField");
            $agentsArr = explode(",", $agents);
            $hrmsdata['clientsownerlist'] = array();
            $campaignList="";
            if($campaign=="all")
            {
            	$campaign="";
                $allcampaign=Campaign::where('mtype',"=","company")->orderBy('mkey')->get();
                foreach ($allcampaign as $mkeycampaign)
                {
                	$campaign .= $mkeycampaign->mkey.",";	
                }
                $campaign=substr($campaign, 0, -1);
                foreach ($agentsArr as $key => $agent) 
    			{
    				$usercampaign=DB::table('users')->where('username','=',$agent)->select('clients','data')->first();
    				$data=json_decode($usercampaign->data,true);
                    if(isset($data['hrmsdata'])){
                    	$hrmsdata=unserialize($data['hrmsdata']);
                    
                    	$hrmsdata['clientsownerlist'].=",".$campaign;
                    	$data['hrmsdata']=serialize($hrmsdata);
                    }else{
                    	$hrmsdata['clientsownerlist'].=implode(",",$campaign);
                    	$data['hrmsdata']=serialize($hrmsdata);
                    }
                    $data=json_encode($data);

                
      				DB::statement("update users set updated_at='".date("Y-m-d H:i:s")."',clients='$campaign',data='$data' where username='$agent'");
   				}	
            }
            else
            {
                
            	foreach ($agentsArr as $key => $agent) 
    			{
                    $usercampaign=User::where('username','=',$agent)->first();
                   
                    $campaignList.=$usercampaign->clients.",".$campaign;
                    $data=json_decode($usercampaign->data,true);
                    if(isset($data['hrmsdata']))
                    {
                        $hrmsdata=unserialize($data['hrmsdata']);
                        $hrmsdata['clientsownerlist'] = $campaignList;
                        $data['hrmsdata']=serialize($hrmsdata);
                    }else
                    {
                    	$hrmsdata['clientsownerlist'] = $campaignList;
                    	$data['hrmsdata']=serialize($hrmsdata);
                    }
                    $data=json_encode($data);

                    $usercampaign->updated_at=date("Y-m-d H:i:s");
                    $usercampaign->clients=$campaignList;
                    $usercampaign->data=$data;
                    $usercampaign->save();

      				//DB::statement("update users set updated_at='".date("Y-m-d H:i:s")."',clients='$campaign1',data='$data' where username='$agent'");
   				}	
            }
    		
   			return;
		}
	}

	public function edit($id)
	{
	}

	public function update($id)
	{
	}

	public function destroy($id)
	{
	}

}