<?php namespace App\Http\Controllers; use App\Classes\SendSMSSislog; use App\Imali\ImaliAccount; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; class PushNotificationController extends Controller { public function sendMessage(Request $request) { if ($request->messageFormat === 'SMS') { //$token = new SendSMSSislog(); if($request->forWhichAccountType === "CHOOSE"){ $numbers = []; foreach ($request->accounts as $account) { $user = ImaliAccount::query() ->join('users', 'users.id', '=', 'imali_accounts.user_id') ->where('account_number', $account) ->first(); array_push($numbers,$user->country_code . $user->phone); // 'body' => $request->message, // $data = ['message' => $request->message, 'phone' => $user->phone]; // $token->sendNotification($user); // $token->sendNotification($data); } $response = Http::post('http://localhost:3000/api/send/sms',['phoneNumbers'=>$numbers,'message'=>$request->message]); return response()->json('SMS enviada com sucesso.',200); }else{ return response()->json(['SMS ainda não suporta enviar para todos.'],400); } //fim choose } if ($request->messageFormat === 'PUSH') { $notification = array( // 'icon' => 'ic_imali_logo_verde_01', 'icon' => 'ic_i_mali_cover', 'title' => $request->title, 'body' => $request->message, 'click_action' => 'com.imali.payapp.payment_NOTICIA', // 'color' => '#008577' 'color' => '#ffffff' ); $data = array( // 'transaction' => $recharge->transaction_id, // 'name' => $user->name, // 'amount' => (double)$recharge->amount, // 'phone' => $user->phone, // 'reference' => $imaliAccount->reference, // 'data' => $recharge->created_at, // 'estado' => $recharge->estado, 'sms' => $request->message, 'terminal' => 'firebase' ); if($request->forWhichAccountType === "CHOOSE"){ $tokens=[]; foreach ($request->accounts as $account) { $user = ImaliAccount::query() ->join('users', 'users.id', '=', 'imali_accounts.user_id') ->where('account_number', $account) ->first(); array_push($tokens,$user->firebase_token); //$this->pushNotifification($user->firebase_token, $notification, $data); } $response = Http::post('http://localhost:3000/api/send/push',['to'=>$tokens,'subject'=>$request->title,'message'=>$request->message]); return response()->json('Push enviada com sucesso.',200); }else{ $users = ImaliAccount::query() ->join('users', 'users.id', '=', 'imali_accounts.user_id') ->select("users.firebase_token") ->get(); $newTokens=[]; foreach ($users as $u) { if($u->firebase_token) array_push($newTokens,$u->firebase_token); } $response = Http::post('http://localhost:3000/api/send/push',['to'=>$newTokens,'subject'=>$request->title,'message'=>$request->message]); return response()->json('Push enviada com sucesso.',200); } //fim choose } if ($request->messageFormat === 'EMAIL') { if($request->forWhichAccountType === "CHOOSE"){ $emails=[]; foreach ($request->accounts as $account) { $user = ImaliAccount::query() ->join('users', 'users.id', '=', 'imali_accounts.user_id') ->where('account_number', $account) ->first(); array_push($emails,$user->email); //$this->pushNotifification($user->firebase_token, $notification, $data); } $response = Http::post('http://localhost:3000/api/send/email',['messageType'=>'html','from'=>'imali-noreplay@paytek-africa.com','to'=>$emails,'subject'=>$request->title,'html'=>base64_encode($request->message)]); return response()->json('Email enviado com sucesso.',200); }else{ $users = ImaliAccount::query() ->join('users', 'users.id', '=', 'imali_accounts.user_id') ->select("users.email") ->get(); $newU=[]; foreach ($users as $u) { array_push($newU,$u->email); } $response = Http::post('http://localhost:3000/api/send/email',['messageType'=>'html','from'=>'imali-noreplay@paytek-africa.com','to'=>$newU,'subject'=>$request->title,'html'=>base64_encode($request->message)]); return response()->json('Email enviado com sucesso.',200); } //fim choose } } public function pushNotifification($token, $notification = array(), $data = array()) { $apiKey = 'AAAA8zVzEPQ:APA91bHl_DXB6UGb_6gZlmFnaLTQoANtX_OBjvl3nOy2bSlnFhxedvk6EhGj7cZoIvmlbKeCnqGxXbuyMH_rEPuhRXvuitXzo6Pfl2TMXLar1PlifXqEhYq6tS55UMrY2Kffzj-P_UH-'; $fields = array('to' => $token, 'notification' => $notification, 'data' => $data); $headers = array('Authorization: key=' . $apiKey, 'Content-Type: application/json'); $url = 'https://fcm.googleapis.com/fcm/send'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields)); $result = curl_exec($curl); curl_close($curl); return json_decode($result, true); } }