# users/services.py from django.shortcuts import get_object_or_404 from django.core.exceptions import PermissionDenied from .models import CustomUser from operations.models import RadniNalog, PutniNalog from fleet.models import Vozilo def dohvati_operativne_podatke_servisera(user_id: int) -> dict: """ Prikuplja sve povezane resurse (radne naloge, putne naloge i vozila) dodijeljene specifičnom serviseru. """ # 1. Dohvaćamo korisnika korisnik = get_object_or_404(CustomUser, id=user_id) # 2. Sigurnosni ček na razini poslovne logike if getattr(korisnik, 'uloga', '').upper() != 'SERVISER': raise PermissionDenied("Odabrani korisnik nema operativne ovlasti servisera.") # 3. Dohvat povezanih entiteta prateći STVARNA polja iz tvoje baze podataka: # Radni nalozi gdje je korisnik postavljen kao izvršitelj radni_nalozi = RadniNalog.objects.filter(izvrsitelj=korisnik).select_related('klijent', 'stroj') # 🚀 POPRAVAK: 'radni_nalozi__in' umjesto 'radni_nalog__in' (usklađivanje s related_name na RadniNalog modelu) putni_nalozi = PutniNalog.objects.filter(radni_nalozi__in=radni_nalozi).select_related('vozilo') # Izvlačimo jedinstvena vozila koja serviser vozi kroz svoje aktivne putne naloge povezana_vozila_ids = putni_nalozi.values_list('vozilo_id', flat=True).distinct() povezana_vozila = Vozilo.objects.filter(id__in=povezana_vozila_ids) return { "serviser": korisnik, "radni_nalozi": radni_nalozi, "putni_nalozi": putni_nalozi, "vozila": povezana_vozila }