from rest_framework import serializers
from .models import Projekts, Uzdevums, AgentaZina

class AgentaZinaSerializer(serializers.ModelSerializer):
    client_name = serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = AgentaZina
        fields = ['id', 'klients', 'client_name', 'tips', 'saturs', 'fails', 'izveidots']
        
    def get_client_name(self, obj):
        return getattr(obj.klients, 'full_name', obj.klients.email)

class ProjectSerializer(serializers.ModelSerializer):
    # --- TULKOŠANA PRIEKŠ REACT ---
    # React prasa 'name', mēs iedodam 'nosaukums'
    name = serializers.CharField(source='nosaukums')
    
    # React prasa 'client', mēs iedodam 'klients' vārdu (vai epastu, ja vārda nav)
    client = serializers.SerializerMethodField()
    
    # React prasa 'status', mēs iedodam 'statuss'
    status = serializers.CharField(source='statuss')
    
    # React prasa 'deadline', bet Tev nav tāda lauka. 
    # Pagaidām iedosim 'atjaunots' datumu, lai React nenokaras.
    deadline = serializers.DateTimeField(source='atjaunots', format="%Y-%m-%d")

    class Meta:
        model = Projekts
        # Šie ir tie lauki, ko saņems Tavs React
        fields = ['id', 'name', 'client', 'status', 'deadline']

    def get_client(self, obj):
        # Ja klients ir piesaistīts, atgriežam vārdu, citādi "Nav klients"
        if obj.klients:
            return getattr(obj.klients, 'full_name', obj.klients.email)
        return "Uzņēmuma iekšējs"

class TaskSerializer(serializers.ModelSerializer):
    client_name = serializers.SerializerMethodField(read_only=True)
    client_email = serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = Uzdevums
        fields = ['id', 'tituls', 'apraksts', 'statuss', 'izveidots', 'atjaunots', 'klients', 'client_name', 'client_email']
        read_only_fields = ['klients'] # Tiek piesaistīts automātiski ielogojoties

    def get_client_name(self, obj):
        return getattr(obj.klients, 'full_name', '')
        
    def get_client_email(self, obj):
        return obj.klients.email