"""
Favorites Views
"""
from django.shortcuts import render
from config.decorators import login_required_web
from notifications.models import Favorite
from django.db.models import Count, Avg


@login_required_web
def favorites_view(request):
    """User favorites list"""
    favorites = Favorite.objects.filter(
        user=request.user
    ).select_related(
        'place', 
        'place__category', 
        'place__governorate'
    ).prefetch_related(
        'place__reviews'
    ).annotate(
        reviews_count=Count('place__reviews'),
        avg_rating=Avg('place__reviews__rating')
    ).order_by('-created_at')
    
    # Get places with additional data
    places = []
    for favorite in favorites:
        place = favorite.place
        # Add reviews count and rating if not already set
        if not hasattr(place, 'reviews_count'):
            place.reviews_count = favorite.reviews_count or 0
        if not hasattr(place, 'rating'):
            place.rating = favorite.avg_rating or 0
        places.append(place)
    
    context = {
        'title': 'المفضلة - دليلك IQ',
        'description': 'الأماكن المفضلة لديك',
        'places': places,
        'favorites_count': len(places),
    }
    return render(request, 'favorites/list.html', context)
