File: /home/imensosw/www/mpl.imenso.co/app/Listeners/SendCheckOutArtistToFansNotification.php
<?php
namespace App\Listeners;
use App\Events\ArtistRecommendsArtist;
use App\Models\Notification;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\Facades\View;
class SendCheckOutArtistToFansNotification
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param ArtistRecommendsArtist $event
* @return void
*/
public function handle(ArtistRecommendsArtist $event)
{
//If they recommend each other
// if($event->recommender->linkedToArtist($event->recommendee->id) && $event->recommendee->linkedToArtist($event->recommender->id))
// {
//Do for recommender
$html = view('notifications/fan/check-out-artist')->with([
'recommender' => $event->recommender,
'recommendee' => $event->recommendee,
])->render();
// dd($event->recommendee->getConnections('fan', 'SeeLive'));
foreach ($event->recommender->getConnections('fan', 'SeeLive') as $fan) {
if ($fan->hasIgnoredCheckoutArtist($event->recommendee->id) !== true && ! $fan->isConnected($event->recommendee)) {
$notification = $fan->addNotification(
305,
$html,
[
'recommender_id' => $event->recommender->id,
'recommendee_id' => $event->recommendee->id,
]
);
if ($notification) {
$parsed_html = Notification::parseNotification($html);
$parsed_html .= '<div class="time-ago">'.$notification->created_at->diffForHumans().'</div>';
if ($notification->getActions()) {
$parsed_html .= '<div class="action-row">'.$notification->getActions().'</div>';
}
$data = [
'action' => 'add-notification',
'html' => $parsed_html,
'id' => $notification->id,
];
Broadcast::broadcast(
[
'private-user_'.$fan->id,
],
'notification',
$data
);
}
}
}
//Do for recommendee, notice that the "recommender" is now the recommendee (weird I know...)
$html = view('notifications/fan/check-out-artist')->with([
'recommender' => $event->recommendee,
'recommendee' => $event->recommender,
])->render();
foreach ($event->recommendee->getConnections('fan', 'SeeLive') as $fan) {
if ($fan->hasIgnoredCheckoutArtist($event->recommender->id) !== true && ! $fan->isConnected($event->recommender)) {
$notification = $fan->addNotification(
305,
$html,
[
'recommender_id' => $event->recommendee->id,
'recommendee_id' => $event->recommender->id,
]
);
if ($notification) {
$parsed_html = Notification::parseNotification($html);
$parsed_html .= '<div class="time-ago">'.$notification->created_at->diffForHumans().'</div>';
if ($notification->getActions()) {
$parsed_html .= '<div class="action-row">'.$notification->getActions().'</div>';
}
$data = [
'action' => 'add-notification',
'html' => $parsed_html,
'id' => $notification->id,
];
Broadcast::broadcast(
[
'private-user_'.$fan->id,
],
'notification',
$data
);
}
}
}
// }
}
}