HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: //var/www/html/punjabcabs/app/Http/Controllers/SendPushNotification.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use App\ProviderDevice;
use Exception;

class SendPushNotification extends Controller
{
	/**
     * New Ride Accepted by a Driver.
     *
     * @return void
     */
    public function RideAccepted($request){

    	return $this->sendPushToUser($request->user_id, trans('api.push.request_accepted'));
    }

    /**
     * Driver Arrived at your location.
     *
     * @return void
     */
    public function user_schedule($user){

        return $this->sendPushToUser($user, trans('api.push.schedule_start'));
    }

    /**
     * New Incoming request
     *
     * @return void
     */
    public function provider_schedule($provider){

        return $this->sendPushToProvider($provider, trans('api.push.schedule_start'));

    }

    /**
     * New Ride Accepted by a Driver.
     *
     * @return void
     */
    public function UserCancellRide($request){

        return $this->sendPushToProvider($request->provider_id, trans('api.push.user_cancelled'));
    }


    /**
     * New Ride Accepted by a Driver.
     *
     * @return void
     */
    public function ProviderCancellRide($request){

        return $this->sendPushToUser($request->user_id, trans('api.push.provider_cancelled'));
    }

    /**
     * Driver Arrived at your location.
     *
     * @return void
     */
    public function Arrived($request){

        return $this->sendPushToUser($request->user_id, trans('api.push.arrived'));
    }

    /**
     * Money added to user wallet.
     *
     * @return void
     */
    public function ProviderNotAvailable($user_id){

        return $this->sendPushToUser($user_id,trans('api.push.provider_not_available'));
    }

    /**
     * New Incoming request
     *
     * @return void
     */
    public function IncomingRequest($provider){

        //return $this->sendPushToProvider($provider, trans('api.push.incoming_request'));
        $push_message = trans('api.push.incoming_request');
        try{

            $provider = ProviderDevice::where('provider_id',$provider)->first();

            if($provider->token != ""){

                if($provider->type == 'ios'){
                    
                    return \PushNotification::setService('fcm')
                        ->setMessage(['notification' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     'sound' => 'alert_tone.m4r'
                                     ],
                             'data' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     ]
                             ])
                        ->setDevicesToken($provider->token)
                        ->send();

                }elseif($provider->type == 'android'){
                
                    return \PushNotification::setService('fcm')
                        ->setMessage([
                            'priority' => 'high',
                            'notification' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     'sound' => 'alert_tone.mp3'
                                     ],
                             'data' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     ]
                             ])
                        ->setDevicesToken($provider->token)
                        ->send();    
                }
            }

        } catch(Exception $e){
            return $e;
        }

    }
    

    /**
     * Driver Documents verfied.
     *
     * @return void
     */
    public function DocumentsVerfied($provider_id){

        return $this->sendPushToProvider($provider_id, trans('api.push.document_verfied'));
    }


    /**
     * Money added to user wallet.
     *
     * @return void
     */
    public function WalletMoney($user_id, $money){

        return $this->sendPushToUser($user_id, $money.' '.trans('api.push.added_money_to_wallet'));
    }

    /**
     * Money charged from user wallet.
     *
     * @return void
     */
    public function ChargedWalletMoney($user_id, $money){

        return $this->sendPushToUser($user_id, $money.' '.trans('api.push.charged_from_wallet'));
    }

    /**
     * send message to provider.
     *
     * @return void
     */
    public function PushMessageToProvider($provider_id, $message){

        return $this->sendPushToProvider($provider_id, $message);
    }
    /**
     * send message to provider.
     *
     * @return void
     */
    public function PushMessageToUser($user, $message){

        return $this->sendPushToUser($user, $message);
    }

    /**
     * Money added to user wallet.
     *
     * @return void
     */
    public function AutoPay($user_id, $money){

        return $this->sendPushToUser($user_id, 'Trip amount '.$money.' debited from your account');
    }

    /**
     * Money added to user wallet.
     *
     * @return void
     */
    public function CancelMoney($user_id, $money){

        return $this->sendPushToUser($user_id, 'Cancellation charge '.$money.' amount debited from your account');
    }

    /**
     * Money added to user wallet.
     *
     * @return void
     */
    public function DueMoney($user_id, $money){

        return $this->sendPushToUser($user_id, 'Due Amount '.$money.' amount debited from your account');
    }
    /**
     * Sending Push to a user Device.
     *
     * @return void
     */
    public function sendPushToUser($user_id, $push_message){

    	try{

	    	$user = User::findOrFail($user_id);

            if($user->device_token != ""){

    	    	if($user->device_type == 'ios'){

    	    		return \PushNotification::setService('fcm')
                        ->setMessage([/*'notification' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     'sound' => 'default'
                                     ],*/
                             'data' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     ]
                             ])
                        ->setDevicesToken($user->device_token)
                        ->send();

    	    	}elseif($user->device_type == 'android'){
    	    	
                    return \PushNotification::setService('fcm')
                        ->setMessage([/*'notification' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     'sound' => 'default'
                                     ],*/
                             'data' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     ]
                             ])
                        ->setDevicesToken($user->device_token)
                        ->send();    
    	    	}
            }

    	} catch(Exception $e){
    		return $e;
    	}

    }

    /**
     * Sending Push to a user Device.
     *
     * @return void
     */
    public function sendPushToProvider($provider_id, $push_message){

    	try{

	    	$provider = ProviderDevice::where('provider_id',$provider_id)->first();

            if($provider->token != ""){

            	if($provider->type == 'ios'){
            		
            		return \PushNotification::setService('fcm')
                        ->setMessage(['notification' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     'sound' => 'default'
                                     ],
                             'data' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     ]
                             ])
                        ->setDevicesToken($provider->token)
                        ->send();

            	}elseif($provider->type == 'android'){
            	
                    return \PushNotification::setService('fcm')
                        ->setMessage([/*'notification' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     'sound' => 'default'
                                     ],*/
                             'data' => [
                                     'title'=>config('app.name'),
                                     'body'=>$push_message,
                                     ]
                             ])
                        ->setDevicesToken($provider->token)
                        ->send();    
            	}
            }

    	} catch(Exception $e){
    		return $e;
    	}

    }

}