/** * Get the ratings of the Breeder. * Include overall, delivery, * transaction, and product * quality rating * * @param Breeder $breeder * @return Array */ public function getRatings(Breeder $breeder) { $reviewDetails = []; $query = $breeder->reviews()->orderBy('created_at', 'desc')->get(); $reviews = $query->take(3); $deliveryRating = $query->avg('rating_delivery'); $transactionRating = $query->avg('rating_transaction'); $productQualityRating = $query->avg('rating_productQuality'); $overallRating = ($deliveryRating + $transactionRating + $productQualityRating) / 3; foreach ($reviews as $review) { $reviewDetail = []; $reviewDetail['customerName'] = Customer::find($review->customer_id)->users()->first()->name; $reviewDetail['comment'] = $review->comment; array_push($reviewDetails, $reviewDetail); } return ['overall' => round($overallRating, 2), 'delivery' => round($deliveryRating, 1), 'transaction' => round($transactionRating, 1), 'productQuality' => round($productQualityRating, 1), 'reviews' => $reviewDetails]; }