Contacts.php 7.76 KB
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\ContactStatus;
use App\Models\Customers;
use App\Models\CustomerNumbers;
use App\Models\User;
use Log;
use DB;

class Contacts extends Model
{
    protected $table = 'contacts';

    protected $fillable = array('id','customer_id','mobile', 'client','user_id','status');

    public function updateContactDetails($customersId, $campaign, $updatedDetailsArr)
    {
        try {
                if(!empty($updatedDetailsArr))
                {
                    $contacts = Contacts::where('customer_id', '=', $customersId)->where('client', '=', $campaign)->update(['status'=>$updatedDetailsArr["status"]]);
                           
                    $contactsId=Contacts::where('customer_id','=',$customersId)->where('client', '=', $campaign)->first();
                    // $contacts->update(['status'=>$updatedDetailsArr["status"]]);
                    
                    $ContactStatus = new ContactStatus();
                    $ContactStatus->updateContactStatusDetails($contactsId->id, $updatedDetailsArr);

                    return "Updated Successfully";
                }
        } catch (Exception $e) {
            Log::info($e);
        }
    }

    public function getManualDialedRecord($client, $crmid, $number)
    {
        $numAvailInContacts = Customers::join('contacts as ct', 'customers.id', '=', 'ct.customer_id')
                                ->where('customers.id', '=', $crmid)
                                ->where('ct.mobile', '=', $number)
                                ->where('ct.client', '=', $client)
                                ->select('customers.peopledata')
                                ->get()
                                ->toArray();

        if(empty($numAvailInContacts))
        {
            $customernumbers    = new CustomerNumbers();
            $numAvailInContacts = $customernumbers->getRecordOfAltNumber($campaignArr, $number);
        }

        return $numAvailInContacts;
    }

    public function getNewUploadedData($client, $userId, $aem)
    {
        if ($aem == 0) {

            $newlyUpdatedRecords = Contacts::join('customers as cr', 'cr.id', '=', 'contacts.customer_id')
                                ->where('contacts.client', '=', $client)
                                ->where('contacts.status', '=', 'New')
                                ->where('contacts.user_id','=', $userId)
                                ->select('*')
                                ->get()
                                ->toArray();

        } else {
            $newlyUpdatedRecords = Contacts::join('customers as cr', 'cr.id', '=', 'contacts.customer_id')
                                ->where('contacts.client', '=', $client)
                                ->where('contacts.status', '=', 'New')
                                // if($aem == 0){$newlyUpdatedRecords->where('contacts.user_id','=', $userId);}
                                // $newlyUpdatedRecords

                                ->select('*')
                                ->get()
                                ->toArray();
        }

        return $newlyUpdatedRecords;
    }

    public function createNewEntryOfCustomer($customersId, $peopledataArr)
    {
        if(isset($peopledataArr['peopledata']['client']))
    {  
        if(isset($peopledataArr['peopledata']['agent_name'])){
       $user= DB::table('users')->where("username","=",$peopledataArr['peopledata']['agent_name'])->pluck('id');
       $user_id= $user[0];
   }else{
    $user_id='0';
   }
       $contacts = Contacts::updateOrCreate(
                    ['customer_id'  => $customersId,
                    'client'        => $peopledataArr['peopledata']['client']
                    ],
                    ['mobile'       => $peopledataArr['peopledata']['mobile'], 
                     'client'       => $peopledataArr['peopledata']['client'],
                     'user_id'      => $user_id,
                     'status'       => $peopledataArr['peopledata']['status']
                    ]
                );

        $contactstatus = new ContactStatus();
        $contactstatus->createNewEntryOfContact($contacts->id, $peopledataArr);

        return $contacts->id;
    }else{
        return ;
    }
    }

    public function getDashboardCnts($client, $countStatuses, $currentStatus, $legalStatus,$aemFlag,$auth_userid)
    {
        $data = array();

        $newCalledCntArr    = $this->getNewAndCalledDataCount($client, $countStatuses, $currentStatus, $legalStatus,$aemFlag,$auth_userid);
        $contactCnt         = $this->getDataCountBasedOnStatus($client, "Contacted", $currentStatus, $legalStatus,$aemFlag,$auth_userid);
        $notContactCnt      = $this->getDataCountBasedOnStatus($client, "Not Contacted", $currentStatus, $legalStatus,$aemFlag,$auth_userid);

        $data['newCalledCntArr']    = $newCalledCntArr;
        $data['contactCnt']         = $contactCnt;
        $data['notContactCnt']      = $notContactCnt;

        return $data;
    }

     public function getNewAndCalledDataCount($client, $countStatuses, $currentStatus, $legalStatus,$aemFlag,$auth_userid)
    {
        if ($aemFlag==0) {
           $cntArr = Contacts::join('customers as cr', 'cr.id', '=', 'contacts.customer_id')
                                ->where('contacts.client', '=', $client)
                                ->where('contacts.user_id', '=', $auth_userid)
                                ->whereIn('contacts.status', $countStatuses)
                                ->where('cr.currentstatus','=', $currentStatus)
                                ->where('cr.legalstatus','=', $legalStatus)
                                ->groupBy('contacts.status')
                                ->select(DB::raw("count(*) as cnt,contacts.status"))
                                ->get();
        } else {
           $cntArr = Contacts::join('customers as cr', 'cr.id', '=', 'contacts.customer_id')
                                ->where('contacts.client', '=', $client)
                                ->whereIn('contacts.status', $countStatuses)
                                ->where('cr.currentstatus','=', $currentStatus)
                                ->where('cr.legalstatus','=', $legalStatus)
                                ->groupBy('contacts.status')
                                ->select(DB::raw("count(*) as cnt,contacts.status"))
                                ->get();
        }
        
        

        return $cntArr;
    }

    public function getDataCountBasedOnStatus($client, $status, $currentStatus, $legalStatus,$aemFlag,$auth_userid)
    {
        if ($aemFlag==0) {
           $cnt = Contacts::join('customers as cr', 'cr.id', '=', 'contacts.customer_id')
                                ->join('contact_status as cs', 'cs.contact_id', '=', 'contacts.id')
                                ->where('contacts.client', '=', $client)
                                ->where('contacts.user_id', '=', $auth_userid)
                                ->where('cs.dialer_status', '=', $status)
                                ->where('cr.currentstatus','=', $currentStatus)
                                ->where('cr.legalstatus','=', $legalStatus)
                                ->count();
        } else {
           $cnt = Contacts::join('customers as cr', 'cr.id', '=', 'contacts.customer_id')
                                ->join('contact_status as cs', 'cs.contact_id', '=', 'contacts.id')
                                ->where('contacts.client', '=', $client)
                                ->where('cs.dialer_status', '=', $status)
                                ->where('cr.currentstatus','=', $currentStatus)
                                ->where('cr.legalstatus','=', $legalStatus)
                                ->count();
        }
        
        

        return $cnt;
    }
}