| Server IP : 14.225.204.176 / Your IP : 216.73.216.169 Web Server : nginx/1.24.0 System : Linux nodejs-ybgk 6.8.0-40-generic #40-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 5 10:34:03 UTC 2024 x86_64 User : root ( 0) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/php/home-services/app/Notifications/ |
Upload File : |
<?php
/*
* File name: StatusChangedBooking.php
* Last modified: 2021.11.01 at 22:25:44
* Author: SmarterVision - https://codecanyon.net/user/smartervision
* Copyright (c) 2021
*/
namespace App\Notifications;
use App\Models\Booking;
use Benwilkins\FCM\FcmMessage;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class StatusChangedBooking extends Notification
{
use Queueable;
/**
* @var Booking
*/
public $booking;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct(Booking $booking)
{
$this->booking = $booking;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
$types = ['database'];
if (setting('enable_notifications', false)) {
array_push($types, 'fcm');
}
if (setting('enable_email_notifications', false)) {
array_push($types, 'mail');
}
return $types;
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->markdown("notifications::booking", ['booking' => $this->booking])
->subject(trans('lang.notification_your_booking', ['booking_id' => $this->booking->id, 'booking_status' => $this->booking->bookingStatus->status]) . " | " . setting('app_name', ''))
->greeting(trans('lang.notification_your_booking', ['booking_id' => $this->booking->id, 'booking_status' => $this->booking->bookingStatus->status]))
->action(trans('lang.booking_details'), route('bookings.show', $this->booking->id));
}
public function toFcm($notifiable): FcmMessage
{
$message = new FcmMessage();
$notification = [
'title' => trans('lang.notification_status_changed_booking'),
'body' => trans('lang.notification_your_booking', ['booking_id' => $this->booking->id, 'booking_status' => $this->booking->bookingStatus->status]),
'icon' => $this->getEServiceMediaUrl(),
'click_action' => "FLUTTER_NOTIFICATION_CLICK",
'id' => 'App\\Notifications\\StatusChangedBooking',
'status' => 'done',
];
$data = $notification;
$data['bookingId'] = $this->booking->id;
$message->content($notification)->data($data)->priority(FcmMessage::PRIORITY_HIGH);
return $message;
}
private function getEServiceMediaUrl(): string
{
if ($this->booking->e_service->hasMedia('image')) {
return $this->booking->e_service->getFirstMediaUrl('image', 'thumb');
} else {
return asset('images/image_default.png');
}
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
'booking_id' => $this->booking['id'],
];
}
}