• File: PushNotificationController.php
  • Full Path: /var/www/imalipartnersapi/app/Http/Controllers/PushNotificationController.php
  • Date Modified: 02/07/2023 8:01 PM
  • File size: 3.16 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace App\Http\Controllers;

use App\Classes\SendSMSSislog;
use App\Classes\SmsManager;
use App\Imali\ImaliAccount;
use Illuminate\Http\Request;

class PushNotificationController extends Controller
{
    protected SmsManager $smsManager;

    public function __construct()
    {
        $this->smsManager = new SmsManager();
    }


    public function sendMessage(Request $request)
    {


        if ($request->sendForm == 'SMS') {
            
            foreach ($request->accounts as $account) {

                $user = ImaliAccount::query()
                    ->join('users', 'users.id', '=', 'imali_accounts.user_id')
                    ->where('account_number', $account)
                    ->first();

                $data = ['message' => $request->message, 'phone' => $user->phone];

                $this->smsManager->sendNotification($data);
            }
        }
        if ($request->sendForm == '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'
            );

            foreach ($request->accounts as $account) {

                $user = ImaliAccount::query()
                    ->join('users', 'users.id', '=', 'imali_accounts.user_id')
                    ->where('account_number', $account)
                    ->first();

                $this->pushNotifification($user->firebase_token, $notification, $data);
            }
        }

        if ($request->sendForm == 'EMAIL') {

        }


    }

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

    }
}