""" Mobile API Serializers für React Native """ from rest_framework import serializers from .models import MobileDevice, PushNotification, OfflineSync, MobileAnalytics, MobileSession, MobileError, MobileCache class MobileDeviceSerializer(serializers.ModelSerializer): """Mobile Device Serializer""" class Meta: model = MobileDevice fields = [ 'id', 'device_token', 'device_type', 'device_name', 'device_model', 'os_version', 'app_version', 'is_active', 'last_seen', 'created_at' ] read_only_fields = ['id', 'created_at'] class PushNotificationSerializer(serializers.ModelSerializer): """Push Notification Serializer""" class Meta: model = PushNotification fields = [ 'id', 'notification_type', 'title', 'message', 'data', 'sent_at', 'delivered_at', 'opened_at', 'is_sent', 'is_delivered', 'is_opened' ] read_only_fields = ['id', 'sent_at'] class OfflineSyncSerializer(serializers.ModelSerializer): """Offline Sync Serializer""" class Meta: model = OfflineSync fields = [ 'id', 'sync_type', 'data', 'status', 'error_message', 'created_at', 'synced_at' ] read_only_fields = ['id', 'created_at'] class MobileAnalyticsSerializer(serializers.ModelSerializer): """Mobile Analytics Serializer""" class Meta: model = MobileAnalytics fields = [ 'id', 'event_type', 'event_data', 'session_id', 'screen_name', 'timestamp' ] read_only_fields = ['id', 'timestamp'] class MobileSessionSerializer(serializers.ModelSerializer): """Mobile Session Serializer""" class Meta: model = MobileSession fields = [ 'id', 'session_id', 'started_at', 'ended_at', 'duration', 'is_active' ] read_only_fields = ['id', 'started_at'] class MobileErrorSerializer(serializers.ModelSerializer): """Mobile Error Serializer""" class Meta: model = MobileError fields = [ 'id', 'error_level', 'error_type', 'error_message', 'stack_trace', 'app_version', 'os_version', 'device_info', 'created_at', 'is_resolved' ] read_only_fields = ['id', 'created_at'] class MobileCacheSerializer(serializers.ModelSerializer): """Mobile Cache Serializer""" class Meta: model = MobileCache fields = [ 'id', 'cache_type', 'cache_key', 'cache_data', 'expires_at', 'created_at', 'updated_at' ] read_only_fields = ['id', 'created_at', 'updated_at'] # Mobile-optimierte Produkt Serializer class MobileProductSerializer(serializers.Serializer): """Mobile-optimierter Produkt Serializer""" id = serializers.UUIDField() name = serializers.CharField() description = serializers.CharField() price = serializers.DecimalField(max_digits=10, decimal_places=2) image_url = serializers.CharField() category = serializers.CharField() fursuit_type = serializers.CharField() featured = serializers.BooleanField() created_at = serializers.DateTimeField() # Mobile-spezifische Felder is_favorite = serializers.BooleanField(default=False) in_cart = serializers.BooleanField(default=False) cart_quantity = serializers.IntegerField(default=0) # Mobile-optimierter Auction Serializer class MobileAuctionSerializer(serializers.Serializer): """Mobile-optimierter Auction Serializer""" id = serializers.UUIDField() title = serializers.CharField() description = serializers.CharField() fursuit_type = serializers.CharField() starting_bid = serializers.DecimalField(max_digits=10, decimal_places=2) current_bid = serializers.DecimalField(max_digits=10, decimal_places=2) status = serializers.CharField() end_time = serializers.DateTimeField() time_remaining = serializers.CharField() total_bids = serializers.IntegerField() is_watching = serializers.BooleanField(default=False) created_at = serializers.DateTimeField() # Mobile API Response Serializer class MobileApiResponseSerializer(serializers.Serializer): """Standard Mobile API Response""" success = serializers.BooleanField() data = serializers.JSONField() message = serializers.CharField(required=False) error = serializers.CharField(required=False) timestamp = serializers.DateTimeField() # Mobile Push Notification Payload Serializer class PushNotificationPayloadSerializer(serializers.Serializer): """Push Notification Payload für Firebase/APNS""" notification = serializers.DictField() data = serializers.DictField() android = serializers.DictField(required=False) apns = serializers.DictField(required=False) webpush = serializers.DictField(required=False) # Mobile Analytics Event Serializer class MobileAnalyticsEventSerializer(serializers.Serializer): """Mobile Analytics Event""" event_type = serializers.CharField() event_data = serializers.DictField() session_id = serializers.CharField(required=False) screen_name = serializers.CharField(required=False) timestamp = serializers.DateTimeField() device_info = serializers.DictField(required=False) # Mobile Cache Request Serializer class MobileCacheRequestSerializer(serializers.Serializer): """Mobile Cache Request""" cache_type = serializers.CharField() cache_key = serializers.CharField() data = serializers.DictField() expires_in = serializers.IntegerField(required=False, default=3600) # Mobile Session Request Serializer class MobileSessionRequestSerializer(serializers.Serializer): """Mobile Session Request""" session_id = serializers.CharField() device_token = serializers.CharField() app_version = serializers.CharField(required=False) device_info = serializers.DictField(required=False) # Mobile Error Report Serializer class MobileErrorReportSerializer(serializers.Serializer): """Mobile Error Report""" error_level = serializers.ChoiceField(choices=[ ('debug', 'Debug'), ('info', 'Info'), ('warning', 'Warning'), ('error', 'Error'), ('critical', 'Critical'), ]) error_type = serializers.CharField() error_message = serializers.CharField() stack_trace = serializers.CharField(required=False) app_version = serializers.CharField(required=False) os_version = serializers.CharField(required=False) device_info = serializers.DictField(required=False) session_id = serializers.CharField(required=False)