from django.utils import timezone
from datetime import timedelta
from .models import Dogadaj

def kreiraj_kalendarski_unos(radni_nalog):
    """
    Kreira termin u kalendaru na temelju novog radnog naloga.
    """
    pocetak = timezone.now()
    kraj = pocetak + timedelta(hours=2)

    # DOHVAĆANJE VOZILA: Budući da vozilo više nije na Radnom nalogu, 
    # moramo ga izvući iz povezanog Putnog naloga (ako postoji).
    vozilo_obj = None
    vozilo_str = "Nije definirano"
    
    if radni_nalog.putni_nalog and radni_nalog.putni_nalog.vozilo:
        vozilo_obj = radni_nalog.putni_nalog.vozilo
        vozilo_str = str(vozilo_obj)

    # Kreiramo Dogadaj
    dogadaj = Dogadaj.objects.create(
        naslov=f"RN: {radni_nalog.broj_naloga} | {radni_nalog.klijent.naziv}",
        opis=f"Vozilo: {vozilo_str}\nOpis kvara: {radni_nalog.opis_kvara}",
        tip='servis',
        pocetak=pocetak,
        kraj=kraj,
        klijent=radni_nalog.klijent,
        # Ovdje spremamo instancu vozila u polje modela Dogadaj
        vozilo=vozilo_obj,
        radni_nalog=radni_nalog,
        serviser_u_kalendaru=radni_nalog.izvrsitelj
    )
    
    return dogadaj

def azuriraj_kalendarski_unos(radni_nalog):
    """
    Sinkronizira podatke u kalendaru koristeći metodu modela.
    """
    try:
        # Pokušaj pronaći postojeći događaj preko related_name 'kalendar_termin'
        dogadaj = radni_nalog.kalendar_termin
        dogadaj.sync_with_radni_nalog()
    except Exception:
        # Ako ne postoji (npr. nalog je stariji od uvođenja kalendara), kreiraj ga
        from .services import kreiraj_kalendarski_unos
        kreiraj_kalendarski_unos(radni_nalog)

def obrisi_kalendarski_unos(radni_nalog):
    if hasattr(radni_nalog, 'kalendar_termin'):
        radni_nalog.kalendar_termin.delete()