$rider->id, 'name' => $rider->full_name, ]); } /** * Handle the Rider "updated" event. */ public function updated(Rider $rider): void { // Check if status changed if ($rider->isDirty('status')) { $this->handleStatusChange($rider); } // Check if online status changed if ($rider->isDirty('is_online')) { $this->handleOnlineStatusChange($rider); } // Check if rating changed if ($rider->isDirty('rating')) { $this->handleRatingChange($rider); } // Check if verification status changed if ($rider->isDirty('is_verified')) { $this->handleVerificationChange($rider); } } /** * Handle status change. */ protected function handleStatusChange(Rider $rider): void { $originalStatus = $rider->getOriginal('status'); Log::info('Rider status changed', [ 'rider_id' => $rider->id, 'from' => $originalStatus, 'to' => $rider->status, ]); // Update Firebase if ($this->firebase->isEnabled()) { $this->firebase->updateRiderStatus($rider->id, $rider->status); } // Handle suspension if ($rider->status === 'suspended') { Log::warning('Rider suspended', [ 'rider_id' => $rider->id, ]); } } /** * Handle online status change. */ protected function handleOnlineStatusChange(Rider $rider): void { Log::info('Rider online status changed', [ 'rider_id' => $rider->id, 'is_online' => $rider->is_online, ]); // Update Firebase if ($this->firebase->isEnabled()) { $this->firebase->updateRiderStatus( $rider->id, $rider->is_online ? 'online' : 'offline' ); } } /** * Handle rating change. */ protected function handleRatingChange(Rider $rider): void { $originalRating = $rider->getOriginal('rating'); $newRating = $rider->rating; Log::info('Rider rating changed', [ 'rider_id' => $rider->id, 'from' => $originalRating, 'to' => $newRating, ]); $thresholds = config('restaurant-delivery.rating.thresholds'); $minRatings = $thresholds['minimum_ratings_for_threshold'] ?? 10; // Only check thresholds if rider has enough ratings if ($rider->rating_count >= $minRatings) { // Check warning threshold $warningThreshold = $thresholds['warning_threshold'] ?? 3.0; if ($newRating <= $warningThreshold && $originalRating > $warningThreshold) { $rider->notify(new RiderWarningNotification($rider, 'low_rating')); } } } /** * Handle verification change. */ protected function handleVerificationChange(Rider $rider): void { Log::info('Rider verification status changed', [ 'rider_id' => $rider->id, 'is_verified' => $rider->is_verified, ]); } /** * Handle the Rider "deleted" event. */ public function deleted(Rider $rider): void { Log::info('Rider deleted', [ 'rider_id' => $rider->id, ]); } }