"""Historical diagnosis and operational queues; caller authorization is separate."""
from .models import ServiceCase, ServiceDiagnosticAssessment, ServiceDiagnosticFinding
from .queries import _saved
from .engineer_queries import assigned_service_cases_for_engineer


def diagnostic_assessment_history(service_case):
    rows = ServiceDiagnosticAssessment.objects.select_related("service_case", "engineer_assignment__engineer", "started_by", "completed_by", "abandoned_by")
    return rows.filter(service_case_id=service_case.pk) if _saved(service_case, ServiceCase) else rows.none()


def current_diagnostic_assessment(service_case):
    return diagnostic_assessment_history(service_case).filter(completed_at=None, abandoned_at=None).first()


def diagnostic_findings_for_assessment(assessment):
    rows = ServiceDiagnosticFinding.objects.select_related("assessment", "fault_diagnosis", "root_cause")
    return rows.filter(assessment_id=assessment.pk) if _saved(assessment, ServiceDiagnosticAssessment) else rows.none()


def diagnosing_service_cases_for_engineer(engineer):
    return assigned_service_cases_for_engineer(engineer).filter(status="DIAGNOSING")


def diagnosed_service_cases_for_engineer(engineer):
    return assigned_service_cases_for_engineer(engineer).filter(status="DIAGNOSED")
