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