// 'use client'; // import { useState, useEffect } from 'react'; // import { motion } from 'framer-motion'; // import { Star } from 'lucide-react'; // import { getPropertyRatings } from '../../utils/ratings.js'; // import toast, { Toaster } from 'react-hot-toast'; // const RatingList = ({ propertyId, userId }) => { // const [reviews, setReviews] = useState([]); // const [loading, setLoading] = useState(true); // const [error, setError] = useState(null); // useEffect(() => { // const fetchReviews = async () => { // if (!propertyId) { // setLoading(false); // return; // } // try { // setLoading(true); // const data = await getPropertyReviews(propertyId); // setReviews(data || []); // setError(null); // } catch (err) { // console.error('[RatingList] Failed to fetch reviews:', err); // setError('فشل تحميل التقييمات'); // setReviews([]); // } finally { // setLoading(false); // } // }; // fetchReviews(); // }, [propertyId]); // if (loading) { // return ( // //
//

جاري تحميل التقييمات...

// // ); // } // if (error) { // return ( // //

{error}

//
// ); // } // if (reviews.length === 0) { // return ( // //

لا توجد تقييمات حتى الآن. كن أول من يقيم هذا العقار!

//
// ); // } // // Calculate average rating // const averageRating = reviews.reduce((sum, review) => sum + review.rating, 0) / reviews.length; // return ( // // //
// {/* Header with average rating */} //
//
//

تقييمات المستأجرين

//

// {reviews.length} تقييمات //

//
//
//
// {Array.from({ length: 5 }).map((_, index) => ( // // ))} // {averageRating % 1 !== 0 && ( // // )} // {averageRating.toFixed(1)} //
//
//
// {/* Reviews list */} //
// {reviews.map((review, index) => ( //
//
//
//
// //
//
//
{review.userName || 'مستأجر'}
//
// {Array.from({ length: 5 }).map((_, starIndex) => ( // // ))} // ({review.rating}/5) //
//
//
//
// {review.createdAt ? new Date(review.createdAt).toLocaleDateString('ar-SA') : ''} //
//
// {review.comment && ( //

{review.comment}

// )} //
// ))} //
//
//
// ); // }; // export default RatingList; 'use client'; import { useState, useEffect } from 'react'; import { Star, User, Calendar, ChevronDown, Loader2 } from 'lucide-react'; import { getPropertyRatings, getPropertyAverageRating } from '../../utils/ratings'; const RatingItem = ({ rating }) => { const overall = ( rating.cleanRating + rating.servicesRating + rating.ownerBehaviorRating + rating.experienceRating ) / 4; return (
{rating.customerName || 'مستأجر'}
{overall.toFixed(1)}
النظافة: {rating.cleanRating}/5
الخدمات: {rating.servicesRating}/5
سلوك المالك: {rating.ownerBehaviorRating}/5
التجربة: {rating.experienceRating}/5
{rating.comment && (

"{rating.comment}"

)}
{new Date(rating.createdAt).toLocaleDateString('ar-SA')}
); }; export default function PropertyRatingList({ propertyId }) { const [ratings, setRatings] = useState([]); const [average, setAverage] = useState(null); const [page, setPage] = useState(1); const [hasMore, setHasMore] = useState(false); const [loading, setLoading] = useState(true); const [loadingMore, setLoadingMore] = useState(false); const fetchRatings = async (reset = false) => { const currentPage = reset ? 1 : page; try { if (reset) setLoading(true); else setLoadingMore(true); const result = await getPropertyRatings(propertyId, currentPage, 10); const items = result?.items || result?.data?.items || result || []; const totalPages = result?.totalPages || result?.data?.totalPages || 1; setRatings(prev => reset ? items : [...prev, ...items]); setHasMore(currentPage < totalPages); if (reset) setPage(1); } catch (err) { console.error(err); } finally { setLoading(false); setLoadingMore(false); } }; const fetchAverage = async () => { try { const avg = await getPropertyAverageRating(propertyId); setAverage(avg); } catch (err) { console.error(err); } }; useEffect(() => { if (propertyId) { fetchRatings(true); fetchAverage(); } }, [propertyId]); const loadMore = () => { const nextPage = page + 1; setPage(nextPage); fetchRatings(false); }; if (loading && ratings.length === 0) { return (

جاري تحميل التقييمات...

); } return (

تقييمات المستأجرين

{average !== null && (
{average.toFixed(1)} /5
)}
{ratings.length === 0 ? (

لا توجد تقييمات حتى الآن. كن أول من يقيم هذا العقار.

) : ( <> {ratings.map((r, idx) => )} {hasMore && ( )} )}
); }