import apiClient from '../apiClient';

// El contrato que define la estructura de una alerta genérica
export interface AlertaGenericaDto {
  idAlerta: number;
  fechaDeteccion: string;
  tipoAlerta: string;
  entidad: string;
  idEntidad: number;
  mensaje: string;
  fechaAnomalia: string;
  leida: boolean;
  cantidadEnviada?: number;
  cantidadDevuelta?: number;
  porcentajeDevolucion?: number;
}

// DTO para el request de marcar un grupo como leído
export interface MarcarGrupoLeidoRequestDto {
  tipoAlerta: string;
  idEntidad: number;
}

/**
 * Obtiene todas las alertas no leídas del sistema.
 */
export const getAlertas = async (): Promise<AlertaGenericaDto[]> => {
  try {
    const response = await apiClient.get<AlertaGenericaDto[]>('/alertas');
    return response.data || [];
  } catch (error) {
    console.error("Error en getAlertas:", error);
    return [];
  }
};

/**
 * Marca una única alerta como leída.
 */
export const marcarAlertaLeida = async (idAlerta: number): Promise<void> => {
  await apiClient.post(`/alertas/${idAlerta}/marcar-leida`);
};

/**
 * Marca un grupo completo de alertas como leídas.
 */
export const marcarGrupoComoLeido = async (request: MarcarGrupoLeidoRequestDto): Promise<void> => {
    await apiClient.post('/alertas/marcar-grupo-leido', request);
};