from django.db import models
from django.conf import settings

class Dogadaj(models.Model):
    TIP_DOGADAJA = [
        ('servis', 'Radni Nalog / Servis'),
        ('isporuka', 'Isporuka Stroja'),
        ('sastanak', 'Sastanak s kupcem'),
        ('biljeska', 'Interna bilješka'),
    ]

    naslov = models.CharField(max_length=200)
    opis = models.TextField(blank=True)
    tip = models.CharField(max_length=20, choices=TIP_DOGADAJA, default='biljeska')
    
    pocetak = models.DateTimeField()
    kraj = models.DateTimeField()

    # Automatsko praćenje izmjena samog događaja u kalendaru
    datum_kreiranja = models.DateTimeField(auto_now_add=True)
    datum_azuriranja = models.DateTimeField(auto_now=True)
    
    # Veze
    klijent = models.ForeignKey('kupci.Kupac', on_delete=models.SET_NULL, null=True, blank=True)
    vozilo = models.ForeignKey('fleet.Vozilo', on_delete=models.SET_NULL, null=True, blank=True)
    radni_nalog = models.OneToOneField(
        'operations.RadniNalog', 
        on_delete=models.CASCADE, 
        null=True, 
        blank=True, 
        related_name='kalendar_termin'
    )
    
    # Serviser koji je dodijeljen direktno u kalendaru (za sastanke/bilješke)
    # Ako postoji radni_nalog, koristit ćemo izvrsitelja s naloga
    serviser_u_kalendaru = models.ForeignKey(
        settings.AUTH_USER_MODEL, 
        on_delete=models.SET_NULL, 
        null=True, 
        blank=True, 
        related_name='dodatni_zadaci'
    )

    class Meta:
        verbose_name = "Kalendar"
        verbose_name_plural = "Kalendar"
        ordering = ['pocetak']

    @property
    def izvrsitelj(self):
        """
        Pametna metoda koja vraća servisera:
        1. Ako je termin vezan za Radni Nalog, uzmi njegovog izvršitelja.
        2. Ako nije, uzmi servisera upisanog u kalendar.
        """
        if self.radni_nalog:
            return self.radni_nalog.izvrsitelj
        return self.serviser_u_kalendaru

    def __str__(self):
        return f"{self.naslov} - {self.izvrsitelj}"