diff --git a/frontend/components/EventForm.tsx b/frontend/components/EventForm.tsx index 82313ae..53974af 100644 --- a/frontend/components/EventForm.tsx +++ b/frontend/components/EventForm.tsx @@ -334,23 +334,13 @@ export const EventForm: React.FC = ({ pre_venda: true }; - const authToken = userToken || localStorage.getItem("token") || ""; - const response = await createAgenda(authToken, payload); - - if (response.error) { - alert("Erro ao criar evento: " + response.error); - setShowToast(false); - return; - } - + // Submit to parent handler setTimeout(() => { if (onSubmit) { onSubmit(formData); } - // Redirect or close is handled by parent, but we show success via toast usually alert("Solicitação enviada com sucesso!"); }, 1000); - } catch (e: any) { console.error(e); alert("Erro inesperado: " + e.message); diff --git a/frontend/components/Navbar.tsx b/frontend/components/Navbar.tsx index 96cde21..8b3ee96 100644 --- a/frontend/components/Navbar.tsx +++ b/frontend/components/Navbar.tsx @@ -107,7 +107,7 @@ export const Navbar: React.FC = ({ onNavigate, currentPage }) => { {/* Logo */}
onNavigate("home")} + onClick={() => onNavigate("painel")} > = ({ const result = await getAgendas(visibleToken); console.log("Raw Agenda Data:", result.data); // Debug logging if (result.data) { + console.log("Sample event from backend:", result.data[0]); // DEBUG: Ver estrutura e status + + // Map backend status to frontend EventStatus + const mapStatus = (backendStatus: string): EventStatus => { + const statusMap: Record = { + "Pendente": EventStatus.PENDING_APPROVAL, + "Aguardando Aprovação": EventStatus.PENDING_APPROVAL, + "PENDING_APPROVAL": EventStatus.PENDING_APPROVAL, + "Confirmado": EventStatus.CONFIRMED, + "CONFIRMED": EventStatus.CONFIRMED, + "Em Planejamento": EventStatus.PLANNING, + "PLANNING": EventStatus.PLANNING, + "Em Execução": EventStatus.IN_PROGRESS, + "IN_PROGRESS": EventStatus.IN_PROGRESS, + "Entregue": EventStatus.DELIVERED, + "DELIVERED": EventStatus.DELIVERED, + "Arquivado": EventStatus.ARCHIVED, + "ARCHIVED": EventStatus.ARCHIVED, + }; + return statusMap[backendStatus] || EventStatus.PENDING_APPROVAL; + }; + const mappedEvents: EventData[] = result.data.map((e: any) => ({ id: e.id, name: e.observacoes_evento || e.tipo_evento_nome || "Evento sem nome", // Fallback mapping date: e.data_evento ? e.data_evento.split('T')[0] : "", time: e.horario || "00:00", type: (e.tipo_evento_nome || "Outro") as EventType, // Map string to enum if possible, or keep string - status: EventStatus.PENDING_APPROVAL, + status: mapStatus(e.status), // Map from backend status with fallback address: { street: e.endereco ? e.endereco.split(',')[0] : "", number: e.endereco ? e.endereco.split(',')[1]?.split('-')[0]?.trim() || "" : "", @@ -764,7 +786,7 @@ export const DataProvider: React.FC<{ children: ReactNode }> = ({ }, [token]); const addEvent = async (event: EventData) => { - const token = localStorage.getItem("@Photum:token"); + const token = localStorage.getItem("token"); if (!token) { console.error("No token found"); // Fallback for offline/mock @@ -776,7 +798,7 @@ export const DataProvider: React.FC<{ children: ReactNode }> = ({ // Map frontend fields (camelCase) to backend fields (snake_case) const payload = { fot_id: event.fotId, - data_evento: event.date, // "YYYY-MM-DD" is acceptable + data_evento: event.date + "T" + (event.time || "00:00") + ":00Z", // Backend expects full datetime with timezone tipo_evento_id: event.typeId, observacoes_evento: event.name, // "Observações do Evento" maps to name in EventForm // local_evento: event.address.street + ", " + event.address.number, // Or map separate fields if needed @@ -807,8 +829,8 @@ export const DataProvider: React.FC<{ children: ReactNode }> = ({ if (result.data) { // Success console.log("Agenda criada:", result.data); - const newEvent = { ...event, id: result.data.id, status: EventStatus.PENDING_APPROVAL }; - setEvents((prev) => [newEvent, ...prev]); + // Force reload to ensure complete data consistency (FOT, joins, etc.) + window.location.href = '/painel'; } else { console.error("Erro ao criar agenda API:", result.error); // Fallback or Toast? diff --git a/frontend/pages/Dashboard.tsx b/frontend/pages/Dashboard.tsx index ac96252..3a9176e 100644 --- a/frontend/pages/Dashboard.tsx +++ b/frontend/pages/Dashboard.tsx @@ -102,7 +102,7 @@ export const Dashboard: React.FC = ({ !advancedFilters.date || e.date === advancedFilters.date; const matchesFot = !advancedFilters.fotId || - String((e as any).fotId || "").includes(advancedFilters.fotId); + String(e.fot || "").toLowerCase().includes(advancedFilters.fotId.toLowerCase()); const matchesType = !advancedFilters.type || e.type === advancedFilters.type;