"""Repair evidence and operational queues, not caller authorization."""
from .models import ServiceCase, ServiceRepairExecution, ServiceRepairAction
from .queries import _saved
from .engineer_queries import assigned_service_cases_for_engineer, service_center_engineer_work_queue


def repair_execution_history(service_case):
    rows = ServiceRepairExecution.objects.select_related("service_case", "engineer_assignment__engineer", "diagnostic_assessment", "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_repair_execution(service_case):
    return repair_execution_history(service_case).filter(status="OPEN").first()


def repair_action_history(repair_execution):
    rows = ServiceRepairAction.objects.select_related("repair_execution", "repair_action", "performed_by")
    return rows.filter(repair_execution_id=repair_execution.pk) if _saved(repair_execution, ServiceRepairExecution) else rows.none()


def active_repair_actions(repair_execution):
    return repair_action_history(repair_execution).filter(is_active=True)


def repairing_cases_for_engineer(engineer):
    return assigned_service_cases_for_engineer(engineer).filter(status="REPAIRING")


def repaired_cases_for_engineer(engineer):
    return assigned_service_cases_for_engineer(engineer).filter(status="REPAIRED")


def repairing_cases_for_center(service_center):
    return service_center_engineer_work_queue(service_center).filter(status="REPAIRING")
