fetchOne("SELECT COUNT(*) as total FROM territories")['total']; $assigned_territories = $db->fetchOne(" SELECT COUNT(DISTINCT territory_id) as total FROM assignments WHERE returned_date IS NULL ")['total']; $available_territories = $total_territories - $assigned_territories; // Media percorrenza mensile (anno corrente) $monthly_stats = $db->fetchAll(" SELECT MONTH(assigned_date) as month, COUNT(*) as total_assignments, AVG(DATEDIFF(COALESCE(returned_date, CURDATE()), assigned_date)) as avg_duration FROM assignments WHERE YEAR(assigned_date) = ? GROUP BY MONTH(assigned_date) ORDER BY month ", [$selected_year]); // Media percorrenza annuale $yearly_stats = $db->fetchAll(" SELECT YEAR(assigned_date) as year, COUNT(*) as total_assignments, AVG(DATEDIFF(COALESCE(returned_date, CURDATE()), assigned_date)) as avg_duration FROM assignments GROUP BY YEAR(assigned_date) ORDER BY year DESC "); // Territori mai assegnati $never_assigned = $db->fetchAll(" SELECT t.* FROM territories t LEFT JOIN assignments a ON t.id = a.territory_id WHERE a.id IS NULL ORDER BY t.numero "); // Top 10 territori più assegnati $most_assigned = $db->fetchAll(" SELECT t.numero, t.zona, t.tipologia, COUNT(a.id) as assignment_count, AVG(DATEDIFF(COALESCE(a.returned_date, CURDATE()), a.assigned_date)) as avg_duration FROM territories t INNER JOIN assignments a ON t.id = a.territory_id GROUP BY t.id, t.numero, t.zona, t.tipologia ORDER BY assignment_count DESC LIMIT 10 "); // Statistiche per persona (chi ha avuto più territori) $person_stats = $db->fetchAll(" SELECT assigned_to, COUNT(*) as total_assignments, COUNT(CASE WHEN returned_date IS NULL THEN 1 END) as current_assignments, AVG(DATEDIFF(COALESCE(returned_date, CURDATE()), assigned_date)) as avg_duration FROM assignments GROUP BY assigned_to ORDER BY total_assignments DESC LIMIT 10 "); // Anni disponibili per filtro $available_years = $db->fetchAll(" SELECT DISTINCT YEAR(assigned_date) as year FROM assignments ORDER BY year DESC "); // Statistiche per zona $zone_stats = $db->fetchAll(" SELECT t.zona, COUNT(DISTINCT t.id) as total_territories, COUNT(a.id) as total_assignments, AVG(DATEDIFF(COALESCE(a.returned_date, CURDATE()), a.assigned_date)) as avg_duration FROM territories t LEFT JOIN assignments a ON t.id = a.territory_id GROUP BY t.zona ORDER BY total_territories DESC "); // Statistiche tempo reale (ultimi 7 giorni) $recent_activity = $db->fetchAll(" SELECT DATE(assigned_date) as date, COUNT(*) as assignments FROM assignments WHERE assigned_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY DATE(assigned_date) ORDER BY date DESC "); $recent_returns = $db->fetchAll(" SELECT DATE(returned_date) as date, COUNT(*) as returns FROM assignments WHERE returned_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY DATE(returned_date) ORDER BY date DESC "); include 'header.php'; ?>
Totale Territori
Territori Assegnati
Territori Disponibili
Mai Assegnati

Attività Ultimi 7 Giorni

Assegnazioni

0): ?>
assegnazioni

Nessuna assegnazione recente

Riconsegne

0): ?>
riconsegne

Nessuna riconsegna recente

Media Percorrenza Mensile -

0): ?>
Mese Totale Assegnazioni Durata Media
giorni

Nessun dato per l'anno selezionato

Media Percorrenza Annuale

0): ?>
Anno Totale Assegnazioni Durata Media
giorni

Nessun dato disponibile

Statistiche per Zona

0): ?>
Zona Totale Territori Totale Assegnazioni Durata Media

Nessun dato disponibile

Top 10 Territori Più Assegnati

0): ?>
Territorio Zona Tipologia N° Assegnazioni Durata Media
giorni

Nessun dato disponibile

Top 10 Persone per Assegnazioni

0): ?>
Nome Totale Assegnazioni Assegnazioni Correnti Durata Media
giorni

Nessun dato disponibile

0): ?>

Territori Mai Assegnati ()

Numero Zona Tipologia Azioni
Assegna