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'; ?>
| assegnazioni |
Nessuna assegnazione recente
| riconsegne |
Nessuna riconsegna recente
| Mese | Totale Assegnazioni | Durata Media |
|---|---|---|
| giorni |
Nessun dato per l'anno selezionato
| Anno | Totale Assegnazioni | Durata Media |
|---|---|---|
| giorni |
Nessun dato disponibile
| Zona | Totale Territori | Totale Assegnazioni | Durata Media |
|---|---|---|---|
Nessun dato disponibile
| Territorio | Zona | Tipologia | N° Assegnazioni | Durata Media |
|---|---|---|---|---|
| giorni |
Nessun dato disponibile
| Nome | Totale Assegnazioni | Assegnazioni Correnti | Durata Media |
|---|---|---|---|
| giorni |
Nessun dato disponibile
| Numero | Zona | Tipologia | Azioni |
|---|---|---|---|
| Assegna |