import React, { useState, useEffect } from 'react'; import { Camera, Save, Mail, User as UserIcon, Building, Shield, Loader2, CheckCircle2 } from 'lucide-react'; import { getUserById, getTenants, updateUser } from '../services/dataService'; import { User, Tenant } from '../types'; export const UserProfile: React.FC = () => { const [user, setUser] = useState(null); const [tenant, setTenant] = useState(null); const [isLoading, setIsLoading] = useState(false); const [isSuccess, setIsSuccess] = useState(false); const [name, setName] = useState(''); const [bio, setBio] = useState(''); useEffect(() => { const fetchUserAndTenant = async () => { const storedUserId = localStorage.getItem('ctms_user_id'); if (storedUserId) { try { const fetchedUser = await getUserById(storedUserId); if (fetchedUser) { setUser(fetchedUser); setName(fetchedUser.name); setBio(fetchedUser.bio || ''); // Fetch tenant info const tenants = await getTenants(); const userTenant = tenants.find(t => t.id === fetchedUser.tenant_id); if (userTenant) { setTenant(userTenant); } } } catch (err) { console.error("Error fetching profile data:", err); } } }; fetchUserAndTenant(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!user) return; setIsLoading(true); setIsSuccess(false); try { const success = await updateUser(user.id, { name, bio }); if (success) { setIsSuccess(true); // Update local state setUser({ ...user, name, bio }); setTimeout(() => setIsSuccess(false), 3000); } else { alert('Erro ao salvar alterações no servidor.'); } } catch (err) { console.error("Submit failed:", err); alert('Erro ao conectar ao servidor.'); } finally { setIsLoading(false); } }; if (!user) return
Carregando perfil...
; return (

Meu Perfil

Gerencie suas informações pessoais e preferências.

{/* Left Column: Avatar & Basic Info */}
{user.name}

{user.name}

{user.email}

{user.role} {user.team_id && ( {user.team_id === 'sales_1' ? 'Vendas Alpha' : user.team_id === 'sales_2' ? 'Vendas Beta' : user.team_id} )}

Status da Conta

{user.status === 'active' ? 'Ativo' : 'Inativo'}
{tenant?.name || 'Organização'}
{/* Right Column: Edit Form */}

Informações Pessoais

{isSuccess && ( Salvo com sucesso )}
setName(e.target.value)} className="block w-full pl-10 pr-3 py-2 border border-slate-200 rounded-lg bg-white text-slate-900 placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-blue-100 focus:border-blue-500 sm:text-sm transition-all" />

Contate o admin para alterar o e-mail.