from django.contrib.auth import get_user_model from rest_framework import serializers from apps.salons.models import Review, Salon, SalonPhoto, Service, StaffProfile User = get_user_model() class SalonPhotoSerializer(serializers.ModelSerializer): class Meta: model = SalonPhoto fields = ["id", "image_url", "alt_text", "sort_order"] class ServiceSerializer(serializers.ModelSerializer): class Meta: model = Service fields = ["id", "name", "description", "duration_minutes", "price_amount", "currency", "is_active"] class StaffSerializer(serializers.ModelSerializer): name = serializers.SerializerMethodField() class Meta: model = StaffProfile fields = ["id", "name", "title", "bio", "is_active"] def get_name(self, obj): first = obj.user.first_name or "" last = obj.user.last_name or "" return (first + " " + last).strip() or obj.user.email class ReviewSerializer(serializers.ModelSerializer): customer_name = serializers.SerializerMethodField() class Meta: model = Review fields = ["id", "rating", "comment", "created_at", "customer_name"] def get_customer_name(self, obj): first = obj.customer.first_name or "" last = obj.customer.last_name or "" return (first + " " + last).strip() or obj.customer.email class SalonSerializer(serializers.ModelSerializer): class Meta: model = Salon fields = [ "id", "name", "description", "address", "city", "phone_number", "email", "website", "rating_avg", "rating_count", ] class SalonDetailSerializer(SalonSerializer): photos = SalonPhotoSerializer(many=True, read_only=True) services = ServiceSerializer(many=True, read_only=True) staff = StaffSerializer(many=True, read_only=True) reviews = ReviewSerializer(many=True, read_only=True) class Meta(SalonSerializer.Meta): fields = SalonSerializer.Meta.fields + ["photos", "services", "staff", "reviews"]