ContactStatus.php 15.5 KB
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\Contacts;

use DB;
use Auth;

class ContactStatus extends Model
{
    protected $table = 'contact_status';
    protected $callBackDispo = array('Contacted - FollowUp - Specific',
                                     'Followup Call',
                                     'Service Call - Inbound Follow up',
                                     'Productive Call - Sales Follow Up');

    protected $fillable = array('contact_id', 'priority','contact_group_slug');

    public function getRegisteredInboundDrop($campaign, $aem)
    {

        $registeredInbounDropArr = Contacts::join('contact_status as cs', 'contacts.id', '=', 'cs.contact_id')
                                ->where('contacts.client', '=', $campaign)
                                ->where('cs.dialer_status','=', 'InboundDROP')
                                ->where('cs.dialer_lastcall','>',date('Y-m-d H:i:s',time()-(7*24*60*60)));
                                if($aem == 1){$registeredInbounDropArr->where('contacts.user_id','=', Auth::user()->id);}
                                   $registeredInbounDropArr->select('contacts.customer_id')
                                ->get();

        return $registeredInbounDropArr;
    }

    public function getCallBackData($campaign, $aem)
    {
        $callBackArr = Contacts::join('contact_status as cs', 'contacts.id', '=', 'cs.contact_id')
				->join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->where('contacts.client', '=', $campaign)
                                ->where('cs.dialer_callback','<', date('Y-m-d H:i:s',time()+(15*60)))
				->where('cs.dialer_callback','!=', '0000-00-00 00:00:00')
                                //->whereIn('cs.dialer_status', $callBackDispo);
                                //if($aem == 0){$callBackArr->where('contacts.user_id','=', Auth::user()->id);}
				//->where('contacts.user_id','=', Auth::user()->id)
                                ->select('*')
                                ->get()
				->toArray();
        return $callBackArr;
    }

    public function getPriorityBasedData($campaign, $priorityVal, $aem)
    {

           $priorityArr = Contacts::join('contact_status as cs', 'contacts.id', '=', 'cs.contact_id')
                                ->where('contacts.client', '=', $campaign)
                                ->where('cs.priority','=', $priorityVal);
                                if($aem == 1){$priorityArr->where('contacts.user_id','=', Auth::user()->id);}
                                $priorityArr->select('contacts.customer_id AS id')
                                ->get();

        return $priorityArr;
    }

    public function getTotalData($campaign,$currentstatus,$legalstatus,$bs,$bl,$aemFlag,$auth_userid)
    {
       
        if ($aemFlag=='0') {
            $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contacts.client', '=', $campaign)
                                ->where('contacts.user_id', '=', $auth_userid)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();
        } 
        else 
        {
            $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contacts.client', '=', $campaign)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();
                                 
        }

        return $alldata;
    }

       public function getCallsToday($callstoday,$campaign,$bs,$bl)
    {
        $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contacts.client', '=', $campaign)
                                ->where('contact_status.dialer_lastcall', '>=', $callstoday)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();

        return $alldata;
    }
    public function getCallsMonth($callsmonth,$campaign,$bs,$bl)
    {
        $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contacts.client', '=', $campaign)
                                ->where('contact_status.dialer_lastcall', '>=', $callsmonth)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();

        return $alldata;
    }

    public function getNotCalled($campaign,$currentstatus,$legalstatus,$bs,$bl,$aemFlag,$auth_userid)
    {
        if ($aemFlag=='0') {
           $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contacts.status', '=','New')
                                ->where('contacts.client', '=', $campaign)
                                ->where('contacts.user_id', '=', $auth_userid)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();
        } else {
            $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contacts.status', '=','New')
                                ->where('contacts.client', '=', $campaign)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();
        }
        
        

        return $alldata;
    }
    public function getContactedData($campaign,$currentstatus,$legalstatus,$bs,$bl,$aemFlag,$auth_userid)
    {
        if ($aemFlag=='0') {
            $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contact_status.dialer_status', '=','Contacted')
                                ->where('contacts.client', '=', $campaign)
                                ->where('contacts.user_id', '=', $auth_userid)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();
        } else {
            $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contact_status.dialer_status', '=','Contacted')
                                ->where('contacts.client', '=', $campaign)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();
        }
        
        

        return $alldata;
    }
    public function getNotContactedData($campaign,$currentstatus,$legalstatus,$bs,$bl,$aemFlag,$auth_userid)
    {
        if ($aemFlag=='0') {
            $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contact_status.dialer_status', '=','Not Contacted')
                                ->where('contacts.client', '=', $campaign)
                                ->where('contacts.user_id', '=', $auth_userid)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();
        } else {
            $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contact_status.dialer_status', '=','Not Contacted')
                                ->where('contacts.client', '=', $campaign)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();
        }
        
        

        return $alldata;
    }
    public function getCalled($campaign,$currentstatus,$legalstatus,$bs,$bl)
    {
        $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contacts.status', '=','Called')
                                ->where('contacts.client', '=', $campaign)
                                ->where('customers.currentstatus', '=', $currentstatus)
                                ->where('customers.legalstatus', '=', $legalstatus)
                                ->limit($bl)
                                ->select('*')
                                ->get()->toArray();

        return $alldata;
    }
    public function getMissedcall($recids_str)
    {
        $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->whereIn('customers.id', '=',$recids_str)
                                ->select('*')
                                ->get()->toArray();

        return $alldata;
    }

    public function getCallLog($callbacktime)
    {
        $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contact_status.dialer_callback', '!=', $callbacktime)
                                ->select('*')
                                ->get()->toArray();
        return $alldata;
    }
     public function getCampaignFollowupCount($callbacktime,$client)
    {
        $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                ->join('contact_status', 'contact_status.contact_id', '=', 'contacts.id')
                                ->where('contact_status.dialer_callback', '!=', $callbacktime)
                                ->where('contacts.client', '=', $campaign)
                                ->select('*')
                                ->get()->toArray();
        return $alldata;
    }


    public function getPriorityBasedGroupData($campaign,$group_slug_names, $aem)
    {
        $groupcallArr = Contacts::join('contact_status as cs', 'contacts.id', '=', 'cs.contact_id')
                                ->join('contact_group', 'cs.contact_group_slug', '=', 'contact_group.name')
                                ->where('contacts.client', '=', $campaign)
                                ->orderByRaw("FIELD(cs.contact_group_slug,$group_slug_names),CAST(cs.priority AS int) asc");
                                if($aem == 1){$groupcallArr->where('contacts.user_id','=', Auth::user()->id);}
                                $groupcallArr->select('*',DB::raw("CONCAT(cs.contact_group_slug,cs.priority)AS ConcatenatedString"))
                                ->get()->toArray();
                               
        return $groupcallArr;
    }

    public function updateContactStatusDetails($contactsId, $updatedDetailsArr)
    {
        $contacts = DB::table('contact_status')->where('contact_id', '=', $contactsId)
                    ->update([ 'priority'=>isset($updatedDetailsArr["priority"])?$updatedDetailsArr['priority']:'0',
                            'dialer_status'=>$updatedDetailsArr["dialer_status"],
                            'dialer_substatus'=>$updatedDetailsArr["dialer_substatus"],
                            'dialer_callback'=>$updatedDetailsArr["dialer_callback"],
                            'dialer_remarks'=>$updatedDetailsArr["dialer_remarks"],
                            'dialer_flag'=>isset($updatedDetailsArr["dialer_flag"])?$updatedDetailsArr['dialer_flag']:'',
                            'dialer_lastcall'=>$updatedDetailsArr["dialer_lastcall"],
                            'bttc'=>isset($updatedDetailsArr["bttc"])?$updatedDetailsArr['bttc']:'',
                            ]);

        return $contacts;
    }

    public function createNewEntryOfContact($contactId, $peopledataArr)
    {
        //$peopledataArr['peopledata']['priority'] = 0;
        $contactstatus = ContactStatus::updateOrCreate(
                    ['contact_id'=> $contactId],
                    ['priority'=> $peopledataArr['peopledata']['memeber_priority'],
                    ]
                );

        return $contactstatus->id;
    }

    public function getCallCount($client, $date)
    {
        $count = ContactStatus::join('contacts as ct', 'ct.id', '=', 'contact_status.contact_id')
                        ->where('ct.client', '=', $client)
                        ->where('contact_status.dialer_lastcall', '>=', $date)
                        ->count();

        return $count;
    }
    public function getsearchresults($uids)
    {
        $alldata = Contacts::join('customers', 'contacts.customer_id', '=', 'customers.id')
                                 ->whereIn('customers.id', $uids)
                                 ->select('customers.id','customers.unique_id','customers.peopledata','customers.currentstatus','customers.legalstatus','contacts.status')
                                ->get();
                                

        return $alldata;
    }
}