from django.db.models import Q from rest_framework import generics, permissions, viewsets from apps.salons.models import Review, Salon, Service, StaffProfile from apps.salons.serializers import ( ReviewSerializer, SalonDetailSerializer, SalonSerializer, ServiceSerializer, StaffSerializer, ) class SalonViewSet(viewsets.ReadOnlyModelViewSet): permission_classes = [permissions.AllowAny] def get_queryset(self): queryset = Salon.objects.all() city = self.request.query_params.get("city") query = self.request.query_params.get("q") service = self.request.query_params.get("service") if city: queryset = queryset.filter(city__iexact=city) if query: queryset = queryset.filter(Q(name__icontains=query) | Q(description__icontains=query)) if service: queryset = queryset.filter(services__name__icontains=service) return queryset.distinct() def get_serializer_class(self): if self.action == "retrieve": return SalonDetailSerializer return SalonSerializer class SalonServicesView(generics.ListAPIView): serializer_class = ServiceSerializer permission_classes = [permissions.AllowAny] def get_queryset(self): return Service.objects.filter(salon_id=self.kwargs["salon_id"], is_active=True) class SalonStaffView(generics.ListAPIView): serializer_class = StaffSerializer permission_classes = [permissions.AllowAny] def get_queryset(self): return StaffProfile.objects.filter(salon_id=self.kwargs["salon_id"], is_active=True) class SalonReviewsView(generics.ListAPIView): serializer_class = ReviewSerializer permission_classes = [permissions.AllowAny] def get_queryset(self): return Review.objects.filter(salon_id=self.kwargs["salon_id"]).order_by("-created_at")