Implementación AnomalIA - Fix de dropdowns y permisos.
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 5m17s

This commit is contained in:
2025-06-30 15:26:14 -03:00
parent 95aa09d62a
commit c96d259892
59 changed files with 1430 additions and 337 deletions

View File

@@ -0,0 +1,49 @@
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);
};

View File

@@ -3,6 +3,7 @@ import type { CanillaDto } from '../../models/dtos/Distribucion/CanillaDto';
import type { CreateCanillaDto } from '../../models/dtos/Distribucion/CreateCanillaDto';
import type { UpdateCanillaDto } from '../../models/dtos/Distribucion/UpdateCanillaDto';
import type { ToggleBajaCanillaDto } from '../../models/dtos/Distribucion/ToggleBajaCanillaDto';
import type { CanillaDropdownDto } from '../../models/dtos/Distribucion/CanillaDropdownDto';
const getAllCanillas = async (
@@ -15,12 +16,24 @@ const getAllCanillas = async (
if (nomApeFilter) params.nomApe = nomApeFilter;
if (legajoFilter !== undefined && legajoFilter !== null) params.legajo = legajoFilter;
if (soloActivos !== undefined) params.soloActivos = soloActivos;
if (esAccionistaFilter !== undefined) params.esAccionista = esAccionistaFilter; // <<-- ¡CLAVE! Verifica esto.
if (esAccionistaFilter !== undefined) params.esAccionista = esAccionistaFilter;
const response = await apiClient.get<CanillaDto[]>('/canillas', { params });
return response.data;
};
const getAllDropdownCanillas = async (
soloActivos?: boolean,
esAccionistaFilter?: boolean // Asegúrate que esté aquí
): Promise<CanillaDropdownDto[]> => {
const params: Record<string, string | number | boolean> = {};
if (soloActivos !== undefined) params.soloActivos = soloActivos;
if (esAccionistaFilter !== undefined) params.esAccionista = esAccionistaFilter;
const response = await apiClient.get<CanillaDropdownDto[]>('/canillas/dropdown', { params });
return response.data;
};
const getCanillaById = async (id: number): Promise<CanillaDto> => {
const response = await apiClient.get<CanillaDto>(`/canillas/${id}`);
return response.data;
@@ -43,6 +56,7 @@ const toggleBajaCanilla = async (id: number, data: ToggleBajaCanillaDto): Promis
const canillaService = {
getAllCanillas,
getAllDropdownCanillas,
getCanillaById,
createCanilla,
updateCanilla,

View File

@@ -2,6 +2,7 @@ import apiClient from '../apiClient';
import type { OtroDestinoDto } from '../../models/dtos/Distribucion/OtroDestinoDto';
import type { CreateOtroDestinoDto } from '../../models/dtos/Distribucion/CreateOtroDestinoDto';
import type { UpdateOtroDestinoDto } from '../../models/dtos/Distribucion/UpdateOtroDestinoDto';
import type { OtroDestinoDropdownDto } from '../../models/dtos/Distribucion/OtroDestinoDropdownDto';
const getAllOtrosDestinos = async (nombreFilter?: string): Promise<OtroDestinoDto[]> => {
const params: Record<string, string> = {};
@@ -12,6 +13,12 @@ const getAllOtrosDestinos = async (nombreFilter?: string): Promise<OtroDestinoDt
return response.data;
};
const getAllDropdownOtrosDestinos = async (): Promise<OtroDestinoDto[]> => {
// Llama a GET /api/otrosdestinos/dropdown
const response = await apiClient.get<OtroDestinoDropdownDto[]>('/otrosdestinos/dropdown');
return response.data;
};
const getOtroDestinoById = async (id: number): Promise<OtroDestinoDto> => {
// Llama a GET /api/otrosdestinos/{id}
const response = await apiClient.get<OtroDestinoDto>(`/otrosdestinos/${id}`);
@@ -36,6 +43,7 @@ const deleteOtroDestino = async (id: number): Promise<void> => {
const otroDestinoService = {
getAllOtrosDestinos,
getAllDropdownOtrosDestinos,
getOtroDestinoById,
createOtroDestino,
updateOtroDestino,

View File

@@ -2,6 +2,7 @@ import apiClient from '../apiClient';
import type { EstadoBobinaDto } from '../../models/dtos/Impresion/EstadoBobinaDto';
import type { CreateEstadoBobinaDto } from '../../models/dtos/Impresion/CreateEstadoBobinaDto';
import type { UpdateEstadoBobinaDto } from '../../models/dtos/Impresion/UpdateEstadoBobinaDto';
import type { EstadoBobinaDropdownDto } from '../../models/dtos/Impresion/EstadoBobinaDropdownDto';
const getAllEstadosBobina = async (denominacionFilter?: string): Promise<EstadoBobinaDto[]> => {
const params: Record<string, string> = {};
@@ -11,6 +12,11 @@ const getAllEstadosBobina = async (denominacionFilter?: string): Promise<EstadoB
return response.data;
};
const getAllDropdownEstadosBobina = async (): Promise<EstadoBobinaDropdownDto[]> => {
const response = await apiClient.get<EstadoBobinaDropdownDto[]>('/estadosbobina/dropdown');
return response.data;
};
const getEstadoBobinaById = async (id: number): Promise<EstadoBobinaDto> => {
const response = await apiClient.get<EstadoBobinaDto>(`/estadosbobina/${id}`);
return response.data;
@@ -31,6 +37,7 @@ const deleteEstadoBobina = async (id: number): Promise<void> => {
const estadoBobinaService = {
getAllEstadosBobina,
getAllDropdownEstadosBobina,
getEstadoBobinaById,
createEstadoBobina,
updateEstadoBobina,

View File

@@ -12,6 +12,12 @@ const getAllTiposBobina = async (denominacionFilter?: string): Promise<TipoBobin
return response.data;
};
const getAllDropdownTiposBobina = async (): Promise<TipoBobinaDto[]> => {
// Llama a GET /api/tiposbobina/dropdown
const response = await apiClient.get<TipoBobinaDto[]>('/tiposbobina/dropdown');
return response.data;
};
const getTipoBobinaById = async (id: number): Promise<TipoBobinaDto> => {
// Llama a GET /api/tiposbobina/{id}
const response = await apiClient.get<TipoBobinaDto>(`/tiposbobina/${id}`);
@@ -36,6 +42,7 @@ const deleteTipoBobina = async (id: number): Promise<void> => {
const tipoBobinaService = {
getAllTiposBobina,
getAllDropdownTiposBobina,
getTipoBobinaById,
createTipoBobina,
updateTipoBobina,