• File: PushNotificationController.php
  • Full Path: /var/www/imaliapi/app/Http/Controllers/PushNotificationController.php
  • Date Modified: 06/10/2024 3:21 PM
  • File size: 4 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;
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

        }


    }

}