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