🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
|
||||
import { useState, useEffect, useMemo } from 'react';
|
||||
import { supabase } from '@/integrations/supabase/client';
|
||||
import { toast } from 'sonner';
|
||||
import { useItensPrioridadeFabricacao, ItemPrioridade } from './useItensPrioridadeFabricacao';
|
||||
|
||||
export const useItensPrioridadeFabricacaoFiltrado = () => {
|
||||
const [ofSelecionada, setOfSelecionada] = useState<string | null>(null);
|
||||
const [faseSelecionada, setFaseSelecionada] = useState<string | null>(null);
|
||||
const [versaoAtual, setVersaoAtual] = useState<{
|
||||
revisao: number;
|
||||
dataModificacao: string;
|
||||
modificadoPor?: string;
|
||||
} | null>(null);
|
||||
|
||||
// Use o hook original
|
||||
const hookOriginal = useItensPrioridadeFabricacao();
|
||||
|
||||
// Filtrar itens baseado nos filtros selecionados
|
||||
const itensFiltrados = useMemo(() => {
|
||||
if (!ofSelecionada || !faseSelecionada) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const itensFiltradosObj: { [key: string]: ItemPrioridade[] } = {};
|
||||
|
||||
Object.entries(hookOriginal.itensPorPrioridade).forEach(([prioridade, itens]) => {
|
||||
const itensDaPrioridadeFiltrados = itens.filter(item => {
|
||||
const itemOf = item.peca?.of_number || item.prioridade_fabricacao?.of_number;
|
||||
const itemFase = item.peca?.etapa_fase || item.prioridade_fabricacao?.etapa_fase;
|
||||
|
||||
return itemOf === ofSelecionada && itemFase === faseSelecionada;
|
||||
});
|
||||
|
||||
if (itensDaPrioridadeFiltrados.length > 0) {
|
||||
itensFiltradosObj[prioridade] = itensDaPrioridadeFiltrados;
|
||||
}
|
||||
});
|
||||
|
||||
return itensFiltradosObj;
|
||||
}, [hookOriginal.itensPorPrioridade, ofSelecionada, faseSelecionada]);
|
||||
|
||||
// Buscar informações de versão quando filtros mudarem
|
||||
useEffect(() => {
|
||||
const buscarVersaoAtual = async () => {
|
||||
if (!ofSelecionada || !faseSelecionada) {
|
||||
setVersaoAtual(null);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const { data, error } = await supabase
|
||||
.from('prioridades_fabricacao')
|
||||
.select(`
|
||||
revisao,
|
||||
data_ultima_modificacao,
|
||||
profiles:modificado_por(full_name)
|
||||
`)
|
||||
.eq('of_number', ofSelecionada)
|
||||
.eq('etapa_fase', faseSelecionada)
|
||||
.order('revisao', { ascending: false })
|
||||
.limit(1)
|
||||
.single();
|
||||
|
||||
if (error && error.code !== 'PGRST116') {
|
||||
console.error('Erro ao buscar versão:', error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (data) {
|
||||
setVersaoAtual({
|
||||
revisao: data.revisao || 0,
|
||||
dataModificacao: data.data_ultima_modificacao || new Date().toISOString(),
|
||||
modificadoPor: (data.profiles as any)?.full_name
|
||||
});
|
||||
} else {
|
||||
setVersaoAtual({
|
||||
revisao: 0,
|
||||
dataModificacao: new Date().toISOString()
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erro ao buscar versão:', error);
|
||||
}
|
||||
};
|
||||
|
||||
buscarVersaoAtual();
|
||||
}, [ofSelecionada, faseSelecionada]);
|
||||
|
||||
const handleFiltroChange = (novaOf: string | null, novaFase: string | null) => {
|
||||
setOfSelecionada(novaOf);
|
||||
setFaseSelecionada(novaFase);
|
||||
};
|
||||
|
||||
return {
|
||||
...hookOriginal,
|
||||
itensPorPrioridade: itensFiltrados,
|
||||
ofSelecionada,
|
||||
faseSelecionada,
|
||||
versaoAtual,
|
||||
onFiltroChange: handleFiltroChange
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user