import { apiClient } from './client';

export interface AsignacionObligacion {
  id: string;
  obligacionId: string;
  obligacionNombre: string;
  contribuyenteId: string;
  contribuyenteRfc: string;
  contribuyenteRazonSocial: string;
  auxiliarUserId: string;
  auxiliarNombre: string | null;
  asignadoPor: string;
  asignadoAt: string;
}

export interface AsignacionTarea {
  id: string;
  tareaId: string;
  tareaNombre: string;
  contribuyenteId: string;
  contribuyenteRfc: string;
  contribuyenteRazonSocial: string;
  auxiliarUserId: string;
  auxiliarNombre: string | null;
  asignadoPor: string;
  asignadoAt: string;
}

export interface AsignacionesResponse {
  obligaciones: AsignacionObligacion[];
  tareas: AsignacionTarea[];
}

export const getAsignacionesPorSupervisor = () =>
  apiClient.get<AsignacionesResponse>('/carteras/asignaciones').then(r => r.data);

export const getAsignacionesPorAuxiliar = () =>
  apiClient.get<AsignacionesResponse>('/carteras/asignaciones/mias').then(r => r.data);

export interface SinAsignarResponse {
  obligaciones: Omit<AsignacionObligacion, 'id' | 'auxiliarUserId' | 'auxiliarNombre' | 'asignadoPor' | 'asignadoAt'>[];
  tareas: Omit<AsignacionTarea, 'id' | 'auxiliarUserId' | 'auxiliarNombre' | 'asignadoPor' | 'asignadoAt'>[];
}

export const getSinAsignar = () =>
  apiClient.get<SinAsignarResponse>('/carteras/asignaciones/sin-asignar').then(r => r.data);

export const asignarObligacion = (contribuyenteId: string, obligacionId: string, auxiliarUserId: string) =>
  apiClient.post(`/contribuyentes/${contribuyenteId}/obligaciones/${obligacionId}/asignar`, { auxiliarUserId }).then(r => r.data);

export const desasignarObligacion = (contribuyenteId: string, obligacionId: string) =>
  apiClient.delete(`/contribuyentes/${contribuyenteId}/obligaciones/${obligacionId}/asignar`).then(r => r.data);

export const asignarTarea = (tareaId: string, auxiliarUserId: string) =>
  apiClient.post(`/tareas/${tareaId}/asignar`, { auxiliarUserId }).then(r => r.data);

export const desasignarTarea = (tareaId: string) =>
  apiClient.delete(`/tareas/${tareaId}/asignar`).then(r => r.data);

export const getAuxiliaresElegibles = (contribuyenteId: string) =>
  apiClient.get<{ auxiliares: string[] }>(`/carteras/asignaciones/auxiliares-elegibles/${contribuyenteId}`).then(r => r.data);
