from rest_framework import serializers
from accounts.models import Customers, CustomerDocument
from datetime import date


class CustomerDocumentSerializer(serializers.ModelSerializer):
    class Meta:
        model = CustomerDocument
        fields = '__all__'


class CustomerSerializer(serializers.ModelSerializer):
    # profile_image_url = serializers.SerializerMethodField()
    age = serializers.SerializerMethodField()
    documents = serializers.SerializerMethodField()

    class Meta:
        model = Customers
        exclude = ['is_active', 'is_deleted', 'batch', 'updated', 'created', 'groups', 'user_permissions', 'password']

    # def get_profile_image_url(self, obj):
    #     request = self.context.get('request')
    #     if obj.profile_image and hasattr(obj.profile_image, 'url'):
    #         return request.build_absolute_uri(obj.profile_image.url)
    #     return None

    def get_age(self, obj):
        if obj.dob:
            today = date.today()
            return today.year - obj.dob.year - ((today.month, today.day) < (obj.dob.month, obj.dob.day))
        return None

    def get_documents(self, obj):
        try:
            documents_data = CustomerDocument.objects.filter(customer=obj)
            document_serializer = CustomerDocumentSerializer(documents_data,many=True)
            documents = document_serializer.data
        except Exception as e:
            print(e)
            documents = None
        return documents
