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;
}
}
}