<?php
namespace App\Utility;
use App\Http\Controllers\OTPVerificationController;
use App\Mail\InvoiceEmailManager;
use App\Models\FirebaseNotification;
use App\Models\SmsTemplate;
use App\Models\User;
use App\Notifications\OrderNotification;
use Illuminate\Support\Facades\Notification;
use Mail;
class NotificationUtility {
public static function sendOrderPlacedNotification($order, $order_status, $request = null) {
if (addon_is_activated('otp_system') && SmsTemplate::where('identifier', 'order_placement')->first()->status == 1) {
try {
$otpController = new OTPVerificationController;
$otpController->send_order_code($order);
} catch (\Exception $e) {
}
}
//sends Notifications to user
self::sendNotification($order, $order_status);
if ($request != null && get_setting('google_firebase') == 1 && $order->user->device_token != null) {
$request->device_token = $order->user->device_token;
$request->title = "Orden entregada !";
$request->text = "La orden {$order->code} ah sido entregada";
$request->type = "order";
$request->id = $order->id;
$request->user_id = $order->user->id;
// self::sendFirebaseNotification($request);
}
}
public static function sendNotification($order, $order_status) {
if ($order->seller_id == \App\Models\User::where('user_type', 'admin')->first()->id) {
$users = User::findMany([$order->user->id, $order->seller_id]);
} else {
$users = User::findMany([$order->user->id, $order->seller_id, \App\Models\User::where('user_type', 'admin')->first()->id]);
}
$order_notification = array();
$order_notification['order_id'] = $order->id;
$order_notification['order_code'] = $order->code;
$order_notification['user_id'] = $order->user_id;
$order_notification['seller_id'] = $order->seller_id;
$order_notification['status'] = $order_status;
Notification::send($users, new OrderNotification($order_notification));
}
public static function sendFirebaseNotification($req) {
$url = 'https://fcm.googleapis.com/fcm/send';
$fields = array
(
'to' => $req->device_token,
'notification' => [
'body' => $req->text,
'title' => $req->title,
'sound' => 'default' /*Default sound*/
],
'data' => [
'item_type' => $req->type,
'item_type_id' => $req->id,
'click_action' => 'FLUTTER_NOTIFICATION_CLICK'
]
);
//$fields = json_encode($arrayToSend);
$headers = array(
'Authorization: key=' . env('FCM_SERVER_KEY'),
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
curl_close($ch);
$firebase_notification = new FirebaseNotification;
$firebase_notification->title = $req->title;
$firebase_notification->text = $req->text;
$firebase_notification->item_type = $req->type;
$firebase_notification->item_type_id = $req->id;
$firebase_notification->receiver_id = $req->user_id;
$firebase_notification->save();
}
}
|