*/ class UpdateSubscriberSubscriptionCommandHandler { /** * Handle the subscribe subscriber command. * * @param \CachetHQ\Cachet\Bus\Commands\Subscriber\UpdateSubscriberSubscriptionCommand $command * * @return \CachetHQ\Cachet\Models\Subscriber */ public function handle(UpdateSubscriberSubscriptionCommand $command) { $subscriber = $command->subscriber; $subscriptions = $command->subscriptions ?: []; $components = Component::all(); $updateSubscriptions = $components->filter(function ($item) use ($subscriptions) { return in_array($item->id, $subscriptions); }); $subscriber->global = ($updateSubscriptions->count() === $components->count()); $subscriber->subscriptions()->delete(); if (!$updateSubscriptions->isEmpty()) { foreach ($updateSubscriptions as $subscription) { Subscription::firstOrCreate([ 'subscriber_id' => $subscriber->id, 'component_id' => $subscription->id, ]); } } $subscriber->save(); event(new SubscriberHasUpdatedSubscriptionsEvent($subscriber)); return $subscriber; } }