Implementación AnomalIA - Fix de dropdowns y permisos.
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 5m17s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 5m17s
				
			This commit is contained in:
		
							
								
								
									
										49
									
								
								Frontend/src/services/Anomalia/alertaService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Frontend/src/services/Anomalia/alertaService.ts
									
									
									
									
									
										Normal 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); | ||||
| }; | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user