• File: PushNotificationController.php
  • Full Path: /var/www/lastworkingimaliapi/app/Http/Controllers/PushNotificationController.php
  • Date Modified: 01/11/2023 8:48 PM
  • File size: 6.2 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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);

    }
}