Files
html/products/wevialife-render.php
2026-04-12 22:57:03 +02:00

72 lines
6.4 KiB
PHP

<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
$action = $_GET['action'] ?? '';
$dsn = "pgsql:host=127.0.0.1;dbname=wevia_db;options='--search_path=admin,public'";
try { $pdo = new PDO($dsn, "postgres", ""); } catch(Exception $e) { echo json_encode(['error'=>$e->getMessage()]); exit; }
if ($action === 'eisenhower') {
$rows = $pdo->query("SELECT ec.uid, ec.folder, ec.from_name, ec.from_email, ec.subject, ec.eisenhower_quadrant, ec.urgency_score, (SELECT 1 FROM email_drafts ed WHERE ed.uid=ec.uid LIMIT 1) as has_draft FROM email_classifications ec WHERE ec.eisenhower_quadrant IN ('do_first','schedule','delegate','eliminate') ORDER BY ec.urgency_score DESC, ec.received_at DESC")->fetchAll(PDO::FETCH_ASSOC);
$matrix = ['do_first'=>[],'schedule'=>[],'delegate'=>[],'eliminate'=>[]];
foreach ($rows as $r) { $q=$r['eisenhower_quadrant']; if(isset($matrix[$q])) $matrix[$q][]=$r; }
$counts=[]; foreach($matrix as $q=>$items) $counts[$q]=count($items);
$html='';
$labels=['do_first'=>['DO FIRST','#ef4444'],'schedule'=>['SCHEDULE','#3b82f6'],'delegate'=>['DELEGATE','#f59e0b'],'eliminate'=>['ELIMINATE','#64748b']];
foreach($labels as $q=>$info) {
list($label,$color)=$info;
$items=array_slice($matrix[$q],0,15);
$count=$counts[$q];
$qcss=str_replace('_first','',$q);
$html.="<div class='quadrant q-{$qcss}'><div class='q-header'><span style='color:{$color};font-weight:700'>{$label}</span> <span class='q-count'>{$count}</span></div><div>";
foreach($items as $e) {
$from=htmlspecialchars($e['from_name']?:$e['from_email']?:'?');
$subj=htmlspecialchars(mb_substr($e['subject']??'',0,55));
$uid=$e['uid'];
$badge=$e['has_draft']?"<span style='background:#22c55e;color:#fff;font-size:9px;padding:2px 5px;border-radius:4px;margin-left:6px'>DRAFT</span>":'';
$vip=($e['urgency_score']>=10)?"<span style='background:#f59e0b;color:#000;font-size:9px;padding:2px 5px;border-radius:4px;margin-left:4px'>VIP</span>":'';
$html.="<div class='q-item' onclick=\"selectEmail('{$uid}','INBOX');showPage('drafts')\" style='cursor:pointer'><div class='q-from'>{$from}{$vip}{$badge}</div><div class='q-subject'>{$subj}</div></div>";
}
$html.="</div></div>";
}
echo json_encode(['ok'=>true,'html'=>$html,'counts'=>$counts]);
exit;
}
if ($action === 'morning') {
$stats=$pdo->query("SELECT eisenhower_quadrant,COUNT(*) as cnt FROM email_classifications GROUP BY eisenhower_quadrant")->fetchAll(PDO::FETCH_ASSOC);
$total=0;$urgents=0;$schedule=0;
foreach($stats as $s){$total+=$s['cnt'];if($s['eisenhower_quadrant']==='do_first')$urgents=$s['cnt'];if($s['eisenhower_quadrant']==='schedule')$schedule=$s['cnt'];}
$actions=(int)$pdo->query("SELECT COUNT(*) FROM email_classifications WHERE requires_action=true")->fetchColumn();
$vip_drafts=$pdo->query("SELECT ed2.uid,ed2.from_name,ed2.subject,LEFT(ed2.draft,120) as preview,ed2.provider FROM email_drafts ed2 JOIN email_classifications ec2 ON ed2.uid=ec2.uid WHERE ed2.is_vip=true ORDER BY ec2.urgency_score DESC, ec2.received_at DESC LIMIT 8")->fetchAll(PDO::FETCH_ASSOC);
$html="<div style='display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:20px'>";
$html.="<div style='background:rgba(239,68,68,0.15);padding:14px;border-radius:10px;text-align:center'><div style='font-size:2em;font-weight:800;color:#ef4444'>{$urgents}</div><div style='font-size:11px;color:#999;margin-top:4px'>URGENTS</div></div>";
$html.="<div style='background:rgba(59,130,246,0.15);padding:14px;border-radius:10px;text-align:center'><div style='font-size:2em;font-weight:800;color:#3b82f6'>{$schedule}</div><div style='font-size:11px;color:#999;margin-top:4px'>A PLANIFIER</div></div>";
$html.="<div style='background:rgba(245,158,11,0.15);padding:14px;border-radius:10px;text-align:center'><div style='font-size:2em;font-weight:800;color:#f59e0b'>{$actions}</div><div style='font-size:11px;color:#999;margin-top:4px'>ACTIONS</div></div>";
$html.="<div style='background:rgba(34,197,94,0.15);padding:14px;border-radius:10px;text-align:center'><div style='font-size:2em;font-weight:800;color:#22c55e'>{$total}</div><div style='font-size:11px;color:#999;margin-top:4px'>TOTAL</div></div></div>";
if(!empty($vip_drafts)){
$html.="<h4 style='margin:16px 0 10px;color:#f59e0b;font-size:15px'>Reponses VIP pretes a envoyer</h4>";
foreach($vip_drafts as $d){
$from=htmlspecialchars($d['from_name']);
$subj=htmlspecialchars(mb_substr($d['subject'],0,50));
$preview=htmlspecialchars($d['preview']);
$uid=$d['uid'];
$html.="<div style='padding:12px 16px;background:rgba(245,158,11,0.08);border-radius:10px;margin-bottom:8px;border-left:4px solid #f59e0b;cursor:pointer' onclick=\"selectEmail('{$uid}','INBOX');showPage('drafts')\">";
$html.="<div style='display:flex;justify-content:space-between;align-items:center;margin-bottom:6px'><span style='font-weight:700;color:#f59e0b;font-size:14px'>{$from}</span><span style='background:#22c55e;color:#fff;font-size:10px;padding:3px 8px;border-radius:6px'>DRAFT PRET</span></div>";
$html.="<div style='color:#e2e8f0;font-size:13px;margin-bottom:6px'>{$subj}</div>";
$html.="<div style='color:#94a3b8;font-size:12px;font-style:italic;line-height:1.4'>{$preview}...</div></div>";
}
}
$top=$pdo->query("SELECT uid,from_name,from_email,subject FROM email_classifications WHERE eisenhower_quadrant='do_first' AND uid NOT IN (SELECT uid FROM email_drafts) ORDER BY urgency_score DESC LIMIT 5")->fetchAll(PDO::FETCH_ASSOC);
if(!empty($top)){
$html.="<h4 style='margin:16px 0 10px;color:#ef4444;font-size:15px'>Autres urgents (sans reponse)</h4>";
foreach($top as $e){
$from=htmlspecialchars($e['from_name']?:$e['from_email']);
$subj=htmlspecialchars(mb_substr($e['subject'],0,70));
$html.="<div style='display:flex;gap:10px;padding:10px 14px;background:rgba(255,255,255,0.04);border-radius:8px;margin-bottom:6px;border-left:3px solid #ef4444'><span style='font-weight:600;color:#e2e8f0;min-width:130px;font-size:13px'>{$from}</span><span style='color:#94a3b8;font-size:13px;flex:1'>{$subj}</span></div>";
}
}
echo json_encode(['ok'=>true,'html'=>$html]);
exit;
}
echo json_encode(['error'=>'unknown action']);