from rest_framework import serializers
from .models import Dogadaj
from operations.serializers import RadniNalogListaSerializer

class DogadajSerializer(serializers.ModelSerializer):
    # 1. Mapiranje za standardne kalendarske knjižnice (FullCalendar traži title, start, end)
    title = serializers.CharField(source='naslov')
    start = serializers.DateTimeField(source='pocetak')
    end = serializers.DateTimeField(source='kraj')
    
    # 2. Dinamički podaci (korištenje @property-ja i Choice polja)
    izvrsitelj_ime = serializers.SerializerMethodField()
    tip_display = serializers.CharField(source='get_tip_display', read_only=True)
    
    # 3. Dodatne informacije za UI
    boja = serializers.SerializerMethodField()
    je_radni_nalog = serializers.SerializerMethodField()

    class Meta:
        model = Dogadaj
        fields = [
            'id', 'title', 'start', 'end', 'tip', 'tip_display', 
            'opis', 'izvrsitelj_ime', 'boja', 'je_radni_nalog',
            'klijent', 'vozilo', 'radni_nalog'
        ]

    def get_izvrsitelj_ime(self, obj):
        """Dohvaća ime preko tvog @property izvrsitelj u modelu"""
        korisnik = obj.izvrsitelj # Poziva @property iz models.py
        if korisnik:
            return korisnik.get_full_name() or korisnik.username
        return "Nije dodijeljeno"

    def get_boja(self, obj):
        """Dodjeljuje boju ovisno o tipu događaja za vizualni kalendar"""
        boje = {
            'servis': '#3498db',    # Plava
            'isporuka': '#2ecc71',  # Zelena
            'sastanak': '#f1c40f',  # Žuta
            'biljeska': '#95a5a6',  # Siva
        }
        return boje.get(obj.tip, '#34495e')

    def get_je_radni_nalog(self, obj):
        """Pomaže frontendu da zna treba li prikazati link na radni nalog"""
        return obj.radni_nalog is not None