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