from rest_framework import serializers

from .models import Archive, Platform, Ticket


class TimestampField(serializers.Field):
    def to_representation(self, value):
        return value.timestamp()


class JsTimestampField(serializers.Field):
    def to_representation(self, value):
        return round(value.timestamp()*1000)


class PublicArchiveUploadSerializer(serializers.ModelSerializer):
    class Meta:
        model = Archive
        fields = ['file', 'ticket']


class ArchiveSerializer(serializers.ModelSerializer):
    time_create = JsTimestampField(read_only=True)

    class Meta:
        model = Archive
        fields = ['id', 'file', 'ticket', 'time_create']

    def to_representation(self, instance):
        print(int(round(instance.time_create.timestamp())))
        return super().to_representation(instance)


class PlatformSerializer(serializers.ModelSerializer):

    class Meta:
        model = Platform
        fields = ['id', 'name', 'pretty_name']


class TicketSerializer(serializers.ModelSerializer):
    time_create = JsTimestampField(read_only=True)
    time_update = JsTimestampField(read_only=True)
    token = serializers.UUIDField(read_only=True)
    user = serializers.ReadOnlyField(source='user.username')

    class Meta:
        model = Ticket
        fields = [
            'id',
            'number',
            'resolved',
            'token',
            'attempts',
            'platform',
            'time_create',
            'time_update',
            'user'
        ]