🚀 Initial commit: Versão atual do TrackSteel APP

This commit is contained in:
2026-03-18 21:17:53 +00:00
commit bde410c9ad
633 changed files with 108150 additions and 0 deletions
@@ -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
};
};