MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/imensosw/www/mpl.imenso.co/app/Listeners/SendCheckOutArtistToFansPushNotification.php
<?php

namespace App\Listeners;

use App\Events\ArtistRecommendsArtist;
use App\Models\PushNotification;

class SendCheckOutArtistToFansPushNotification
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  ArtistRecommendsArtist  $event
     * @return void
     */
    public function handle(ArtistRecommendsArtist $event)
    {
        foreach ($event->recommender->getConnections('fan', 'SeeLive') as $fan) {
            if ($fan->hasIgnoredCheckoutArtist($event->recommendee->id) !== true && ! $fan->isConnected($event->recommendee)) {
                $title = 'New Artist Recommendation';
                $body = $event->recommender->getName().' recommended that you check out '.$event->recommendee->getName();

                $tokens = [];

                $badge_count = $fan->newNotifications()->count();

                $corresponding_web_notification_id = 0;

                if ($fan->notifications->count() > 0) {
                    $corresponding_web_notification_id = $fan->getLatestNotification()->id;
                }

                if ($fan->devices()->whereNotNull('fcm_token')->count() > 0) {
                    foreach ($fan->devices()->whereNotNull('fcm_token')->get() as $device) {
                        $tokens[] = $device->fcm_token;
                    }

                    if (is_array($tokens) && count($tokens) > 0) {
                        PushNotification::create()
                            ->withTitle($title)
                            ->withBody($body)
                            ->toTokens($tokens)
                            ->withBadgeCount($badge_count)
                            ->withData([
                                'page'                              => 'recommended-artists',
                                'id'                                => $event->recommendee->id,
                                'corresponding_web_notification_id' => $corresponding_web_notification_id,
                            ])
                            ->send();
                    }
                }
            }
        }
    }
}