// Central pessoal de responsabilidades e, para a Direcao, visao da equipe. function MinhasAcoes({ currentUser, onNavigate }) { const [tasks, setTasks] = React.useState([]); const [loading, setLoading] = React.useState(true); const [tab, setTab] = React.useState('hoje'); const [teamView, setTeamView] = React.useState(false); const isDirection = currentUser?.role === 'admin' || currentUser?.department === 'admin'; const load = React.useCallback(async () => { setLoading(true); await sb.rpc('generate_task_deadline_notifications'); const { data } = await sb.from('tasks').select('*, events!tasks_event_id_fkey(id,name,client_name,event_date,event_time,status), responsavel:app_users!tasks_assignee_user_id_fkey(id,name,email)').order('due_on', { ascending: true }); setTasks(data || []); setLoading(false); }, []); React.useEffect(() => { load(); }, [load]); const mine = tasks.filter(t => t.assignee_user_id === currentUser?.id || (!t.assignee_user_id && mesmaPessoa(t.assignee, currentUser?.name))); const source = teamView && isDirection ? tasks : mine; const today = hojeISO(); const groups = { hoje: source.filter(t => t.column_key !== 'done' && t.due_on === today), proximas: source.filter(t => t.column_key !== 'done' && t.due_on > today), pendentes: source.filter(t => t.column_key !== 'done'), atrasadas: source.filter(t => t.column_key !== 'done' && t.due_on < today), concluidas: source.filter(t => t.column_key === 'done'), }; const defs = [['hoje','Hoje'],['proximas','Próximas'],['pendentes','Pendentes'],['atrasadas','Atrasadas'],['concluidas','Concluídas']]; const status = t => t.column_key === 'done' ? 'Concluída' : t.column_key === 'doing' ? 'Em andamento' : 'Pendente'; const variant = t => t.column_key === 'done' ? 'success' : (t.due_on < today ? 'danger' : t.due_on === today ? 'warning' : 'default'); const openAction = t => { localStorage.setItem('events_prefill_open_id', String(t.event_id || t.events?.id || '')); onNavigate?.('events'); }; return

Minhas Ações

Quem faz, o que deve fazer e quando entregar.

{isDirection &&
{[['mine','Minhas'],['team','Painel da Direção']].map(([v,l]) => )}
}
{defs.map(([k,l]) => )}
{loading ? : groups[tab].length === 0 ?
Nenhuma tarefa nesta categoria.
:
{['Ação','Tarefa','Prazo','Status','Responsável'].map(h=>)}{groups[tab].map(t=>)}
{h}
openAction(t)} style={{padding:14,fontSize:13,fontWeight:700,color:DS.colors.primary,cursor:'pointer'}}>{t.events?.name||t.event_name||'—'}
{t.events?.client_name||''}
{t.title}{t.due_on?new Date(t.due_on+'T00:00:00').toLocaleDateString('pt-BR'):'—'}{status(t)}
{t.responsavel?.name||t.assignee||'—'}
}
; } Object.assign(window, { MinhasAcoes });