import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client';

async function getAssignedOrderIds() {
  const supabase = getSupabaseServerAdminClient();

  const { data: assignedOrderIds } = await supabase
    .schema('medreport')
    .from('doctor_analysis_feedback')
    .select('analysis_order_id')
    .not('doctor_user_id', 'is', null)
    .throwOnError();

  return assignedOrderIds?.map((f) => f.analysis_order_id) || [];
}

export async function getOpenJobAnalysisResponseIds() {
  const supabase = getSupabaseServerAdminClient();
  const assignedIds = await getAssignedOrderIds();

  let query = supabase
    .schema('medreport')
    .from('analysis_responses')
    .select('id, analysis_order_id')
    .order('created_at', { ascending: false });

  if (assignedIds.length > 0) {
    query = query.not('analysis_order_id', 'in', `(${assignedIds.join(',')})`);
  }

  const { data: analysisResponses } = await query.throwOnError();
  return analysisResponses?.map(({ id }) => id) || [];
}
