from rest_framework import serializers
from .models import UserFCMToken, UserPattern, MLModel, AnomalyAlert, ScheduledNotification

class UserFCMTokenSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserFCMToken
        fields = ['id', 'user_id', 'fcm_token', 'device_type', 'is_active', 'created_at', 'updated_at']
        read_only_fields = ['id', 'created_at', 'updated_at']

class UserPatternSerializer(serializers.ModelSerializer):
    question_type_display = serializers.CharField(
        source='get_question_type_display',
        read_only=True
    )
    
    class Meta:
        model = UserPattern
        fields = ['id', 'user_id', 'question_type', 'question_type_display', 'average_time', 
                 'variance_minutes', 'confidence_score', 'sample_size', 'last_updated']
        read_only_fields = ['id', 'last_updated']

class MLModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MLModel
        fields = ['id', 'user_id', 'algorithm_name', 'model_data', 'accuracy_score', 
                 'created_at', 'last_trained']
        read_only_fields = ['id', 'created_at', 'last_trained']

class AnomalyAlertSerializer(serializers.ModelSerializer):
    class Meta:
        model = AnomalyAlert
        fields = ['id', 'user_id', 'stamp_id', 'question_type', 'anomaly_score', 
                 'algorithm_used', 'severity', 'created_at']
        read_only_fields = ['id', 'created_at']

class ScheduledNotificationSerializer(serializers.ModelSerializer):
    class Meta:
        model = ScheduledNotification
        fields = ['id', 'user_id', 'question_type', 'scheduled_time', 'celery_task_id', 
                 'is_sent', 'sent_at', 'created_at']
        read_only_fields = ['id', 'created_at']
