<?php
namespace App\Http\Controllers;
use App\Classes\SendSMSSislog;
use App\Classes\SmsManager;
use App\Imali\ImaliAccount;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class PushNotificationController extends Controller
{
protected SmsManager $smsManager;
public function __construct()
{
$this->smsManager = new SmsManager();
}
public function sendMessage(Request $request)
{
if ($request->messageFormat === 'SMS') {
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);
}
$response = Http::post('http://localhost:3004/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') {
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);
}
$response = Http::post('http://localhost:3004/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:3004/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);
}
$response = Http::post('http://localhost:3004/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:3004/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
}
}
}